6502

Programs, sources, embedded, demomaking, whatsoever related to subj :)

Postby jdigreze » 11 Feb 2013, 03:03

g0blinish wrote:неясно, как обойтись, если использовать 16бит как плавающую точку 8.8. и как пойдет процедура умножения с отрицательными числами?
Я не силён в 6502, но на вскидку - целочисленное без знака. Если надо со знаком - отсекай знак до, а потом xor знаков or результат. 8.8 - вроде без проблем должно работать, только результат надо брать по смещению +1 и +2 (от 0). Прости, но лениво чиркать листки.
Сколько меня не корми, волк всё равно в лес смотреть будет
jdigreze
 
Posts: 1478
Joined: 01 Aug 2008, 06:49
Location: Агбан
Group: Registered users

Postby g0blinish » 11 Feb 2013, 03:19

jdigreze wrote:Если надо со знаком - отсекай знак до, а потом xor знаков or результат. 8.8 - вроде без проблем должно работать, только результат надо брать по смещению +1 и +2 (от 0). Прости, но лениво чиркать листки.

Ладно, вернемся к этому. Просто помнится, как я облажался с похожей процедурой:
http://zxpress.ru/article.php?id=7933
жаль уйму потраченного времени.
User avatar
g0blinish
долбоёб-гумасек
 
Posts: 845
Joined: 31 Oct 2012, 06:21
Group: Registered users

Postby jdigreze » 11 Feb 2013, 03:23

ой, я как раз когда-то давно фрактальные папоротники рисовал именно на qb
Сколько меня не корми, волк всё равно в лес смотреть будет
jdigreze
 
Posts: 1478
Joined: 01 Aug 2008, 06:49
Location: Агбан
Group: Registered users

Postby jdigreze » 11 Feb 2013, 03:39

jdigreze wrote:8.8 - вроде без проблем должно работать, только результат надо брать по смещению +1 и +2 (от 0)
Посидел с куркулятором. Предположение - лажа. Видимо коррекцию надо делать.
Сколько меня не корми, волк всё равно в лес смотреть будет
jdigreze
 
Posts: 1478
Joined: 01 Aug 2008, 06:49
Location: Агбан
Group: Registered users

Postby g0blinish » 11 Feb 2013, 03:41

jdigreze wrote:Посидел с куркулятором. Предположение - лажа.

Трэд на уютненьком, там процедура работает похоже.
User avatar
g0blinish
долбоёб-гумасек
 
Posts: 845
Joined: 31 Oct 2012, 06:21
Group: Registered users

Postby lvd » 11 Feb 2013, 04:16

jdigreze wrote:Посидел с куркулятором. Предположение - лажа. Видимо коррекцию надо делать.

вы это обчом ваще говорите? Вас вообще в школе учили, например, умножать 2.3 на 6.4 ? Вааще всё точно так же!
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7262
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby g0blinish » 11 Feb 2013, 04:24

lvd wrote:Вас вообще в школе учили, например, умножать 2.3 на 6.4 ? Вааще всё точно так же!

нас большей частью учили пользоваться калькулятором, а быстрый счет и округление отбросили нахер.
Вам известно, что инженеры полагают "пи в квадрате равно 10"?
User avatar
g0blinish
долбоёб-гумасек
 
Posts: 845
Joined: 31 Oct 2012, 06:21
Group: Registered users

Postby lvd » 11 Feb 2013, 06:22

g0blinish wrote:нас большей частью учили пользоваться калькулятором, а быстрый счет и округление отбросили нахер.

Причём тут быстрый счёт? Если у тебя калькулятор умеет умножать только 1 цифру на 1 цифру, ты как посчитаешь 23*64? А 2.3*6.4? Можешь оба произведения посчитать на калькуляторе, мож дойдёт :)

g0blinish wrote:Вам известно, что инженеры полагают "пи в квадрате равно 10"?
С точностью 1.3%. Если точнее не требуется, то warum бы и nicht?
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7262
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby g0blinish » 11 Feb 2013, 06:29

lvd wrote: Можешь оба произведения посчитать на калькуляторе, мож дойдёт

2.3*6.4 я столбиком перемножу, но толку-то от кода 6502?

кулхацкиры комодури родили таки:
Code: Select all
*-------------------------------------
* 16 bit multiply and divide routines.
* Three 16 bit (two-byte) locations
* ACC, AUX and EXT must be set up,
* preferably on zero page.
*-------------------------------------

* MULTIPLY ROUTINE

* ACC*AUX -> [ACC,EXT] (low,hi) 32 bit result

MULT      LDA #0
          STA EXT+1
          LDY #$11
     CLC
]LOOP     ROR EXT+1
          ROR
          ROR ACC+1
          ROR ACC
          BCC MUL2
          CLC
          ADC AUX
          PHA
          LDA AUX+1
          ADC EXT+1
          STA EXT+1
          PLA
MUL2      DEY
          BNE ]LOOP
          STA EXT
          RTS

* DIVIDE ROUTINE

* ACC/AUX -> ACC, remainder in EXT

DIV       LDA #0
          STA EXT+1
          LDY #$10
]LOOP     ASL ACC
          ROL ACC+1
          ROL
          ROL EXT+1
          PHA
          CMP AUX
          LDA EXT+1
          SBC AUX+1
          BCC DIV2
          STA EXT+1
          PLA
          SBC AUX
          PHA
          INC ACC
DIV2      PLA
          DEY
          BNE ]LOOP
          STA EXT
          RTS

и на z80:
Code: Select all
;16*16=16 bit multiplication
; example:
; 0x1234 * 0x2345 =  0x0404
; 0xFFFF * 0x0016 =  0x3F82
; not use X1 and X2, result in BA
;
;((a<<8)+b)*((c<<8)+d)=(a*d)<<8 +
;                      (b*c)<<8 +
;                      (b*d)
;
;     ab cd
;x1 = HL*BA
vbcc___mul16x16_16:
   push   hl
   mul   l, a         ; b*d
   push hl
   
   mov   hl,[sp+3]
   mul   l, a         ; a*d
   mov   a, l
   mov   hl, sp
   inc   hl
   add   [hl],a
   
   mov   hl, [sp+2]
   mov   a, b
   mul   l, a         ; b*c
   mov   a, l
   mov   hl, sp
   inc   hl
   add   [hl],a
   
   pop   ba
   add   sp, 2
   ret

Но это ваще хуйня.
вместо затеянного пээсбэ трэда на говнофоруме "каг это не работает?" лучше б арифметику запросили.
жёппа.
User avatar
g0blinish
долбоёб-гумасек
 
Posts: 845
Joined: 31 Oct 2012, 06:21
Group: Registered users

Postby g0blinish » 11 Feb 2013, 06:32

lvd wrote:С точностью 1.3%. Если точнее не требуется, то warum бы и nicht?

ничего не могу сказать о последствиях погрешности.
User avatar
g0blinish
долбоёб-гумасек
 
Posts: 845
Joined: 31 Oct 2012, 06:21
Group: Registered users

PreviousNext

Return to Coding

Who is online

Users browsing this forum: No registered users and 1 guest

cron