Отправил в личку.
Отправил в личку.
Вектор 06Ц
ЮТ-88 в минимальной конфигурации
Вектор 06Ц 2014 сборка платы
ATARI 65XE+USB SIO2PC
Commodore 64 ремонт
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Залил исправленный вариант, дело было в метках. Но на пробелы пока не смотрел.
Больше игр нет
Вектор 06Ц
ЮТ-88 в минимальной конфигурации
Вектор 06Ц 2014 сборка платы
ATARI 65XE+USB SIO2PC
Commodore 64 ремонт
Ещё одна непонятка. В питоновской версии появляется лабел 2400 +4, в онлайновской такого нет.
Вектор 06Ц
ЮТ-88 в минимальной конфигурации
Вектор 06Ц 2014 сборка платы
ATARI 65XE+USB SIO2PC
Commodore 64 ремонт
Еще баг или фича в питоновской версии
66 - это код маленькой fКод:08A7 3E 66 mvi a,'F' 08A9 01 07 C0 lxi b,$C007 08AC CD FA 08 call print_simA 08B7 3E 68 mvi a,'H' 08B9 01 07 C3 lxi b,$C307 08BC CD FA 08 call print_simA
68 - это код маленькой h
Вектор 06Ц
ЮТ-88 в минимальной конфигурации
Вектор 06Ц 2014 сборка платы
ATARI 65XE+USB SIO2PC
Commodore 64 ремонт
Код:artyr2@suxoy:~/Загрузки/Vector/CART/my_prog/prettyasm$ ./pasm.py keyscan_test.asm Traceback (most recent call last): File "./pasm.py", line 1004, in <module> main(sys.argv[1:]) File "./pasm.py", line 987, in main jsons() + File "./pasm.py", line 870, in assemble size = parseInstruction(encodedLine, addr, line, regUsage) File "./pasm.py", line 721, in parseInstruction size = evaluateExpression(' '.join(parts[1:]), addr) NameError: global name 'evaluateExpression' is not definedонлайновский транслирует эту программуКод:; 8080 assembler code .hexfile keyscan_test.hex .binfile keyscan_test.r0m ; try "hex" for downloading in hex format .download bin .objcopy objcopy .postbuild echo "Gotovo!" ;.nodump .org $0 jmp start .org $38 RST7: jmp INTRPT .org $100 STKEY: db 01000010b ;статус клавиатуры NEWKEY: ds 9 OLDKEY: ds 9 KEYBUF: ds 16 RPTKEY: db 13 INTRPT: push h push d push b push psw lxi h,STKEY mov a,m xri 10000b mov m,a ani 10000b ;scan or code? jz KEYWRK in 3 sta SCRL+1 mvi a,8Ah out 0 mov a,m out 1 mov c,a inx h in 1 ori 11111b mov m,a mvi b,11111110b int1: mov a,b out 3 rlc mov b,a in 2 inx h mov m,a jc int1 mvi a,88h out 0 mov a,c out 1 mvi a,0 ;10000b out 2 SCRL: mvi a,0 ;dummy out 3 intf: pop psw pop b pop d pop h ei ret KEYWRK: lxi h,intf push h lxi h,0A6AEh ;'xra m, ana m shld PRESS7 ;@PRESS ;seach for new pressed keys call PRESS6 ;PRESS? rnz lxi h,RPTKEY dcr m rnz inr m lxi h,0B72Fh ;'cma, ora a shld PRESS7 ;@PRESS jmp pres5 PRESS6: lxi h,OLDKEY+8 lxi d,NEWKEY+8 mvi b,9 pres1: ldax d cmp m dcx h dcx d jnz pres2 dcr b jnz pres1 MSXOB: lxi h,0 mov a,l sub h rat pres2: mvi a,13 sta RPTKEY pop h ;-1 ret pres5: lxi h,OLDKEY+8 lxi d,NEWKEY+8 mvi c,64 pres3: ldax d mov b,a PRESS7: nop ;ana m cma nop ;xra m ora a mov m,b jz nokey ;поиск бита push h push d push b mvi b,8 kcod1: dcr c rlc cc putbuf dcr b jnz kcod1 pop b pop d pop h nokey: dcx h dcx d mov a,c sui 8 mov c,a jnz pres3 ;else mode keys ldax d cmp m rz mov m,a dcx d cpi 10011111b ;US+SS? mvi b,00100000b ;CAPS switch jz ccod1 cpi 01011111b ;RUS+SS? mvi b,01000000b ;QWER/JCUK switch jz ccod1 ani 10000000b ;RUS? rnz mvi b,10001000b ;Rus & lamp switch ccod1: ldax d xra b stax d rat putbuf: push psw ;push or don't modify BC! lxi h,KBUF push h mov a,c cpi 63 ;space? mvi a,32 rz ;... ... etc. mov a,c cpi 11h ;1 mvi a,33 rz mov a,c cpi 07h ;DOWN mvi a,07h rz mov a,c cpi 05h ;UP mvi a,05h rz KBUF: mov e,a lhld MSXOB+1 ;Загрузить в HL содержимое ячейки с адресом a16 mov a,l inr a ;инкрементировать A ani 15 ;Логическое И непосредственные данные с A cmp h ;Сравнить A с H jz kbuf1 sta MSXOB+1 ;Записать A по адресу a16 mvi a,1 out 0 mov a,l lxi h,KEYBUF add l mov l,a jnc adhla inr h adhla: xra a out 0 mov m,e kbuf1: pop psw rat start: ei cicl: nop jmp cicl
Вектор 06Ц
ЮТ-88 в минимальной конфигурации
Вектор 06Ц 2014 сборка платы
ATARI 65XE+USB SIO2PC
Commodore 64 ремонт
Код:A38SC2: STA DRS1+1 STA DRS2 + 1Код:0234 32 ?? ?? A38SC2: STA DRS1+1 0237 32 03 03 STA DRS2 + 1Код:A38SC2: STA DRS1 + 1 STA DRS2 + 1на питоне не понимает если нет пробелов, он лайновый транслирует правильно и без пробеловКод:0234 32 EC 02 A38SC2: STA DRS1 + 1 0237 32 03 03 STA DRS2 + 1
Вектор 06Ц
ЮТ-88 в минимальной конфигурации
Вектор 06Ц 2014 сборка платы
ATARI 65XE+USB SIO2PC
Commodore 64 ремонт
artyr_n, посмотрю вскоре.
Больше игр нет
Поправил несколько проблем, эти примеры должны теперь проходить. Еще![]()
Больше игр нет
Спасибо большое за обновление. Продолжу выступать бета тестером.
И в оффлайновом и в онлаоновом натолкнулся на следующее
Код:test100: nop lxi h,DWWSS ldax h mvi a,0 stax h jmp test100ldax h - такой команды нет, подсветки в листинге что команда ошибочна не было,Код:test100: 01C8 00 nop 01C9 21 BC 03 lxi h,DWWSS 01CC 2A ldax h 01CD 3E 00 mvi a,0 01CF 22 stax h 01D0 C3 C8 01 jmp test100
вместо нее был подставлен код 2A команда LHLD a16 Загрузить в HL содержимое ячейки с адресом a16, эта команда трех байтовая байт команды и два байта адреса и как следствие следующая команда mvi a,0 превратилась в адрес для нее.
Вектор 06Ц
ЮТ-88 в минимальной конфигурации
Вектор 06Ц 2014 сборка платы
ATARI 65XE+USB SIO2PC
Commodore 64 ремонт
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)