Last active
August 24, 2021 15:35
-
-
Save nzeemin/db9333c66b02a68b25f8057cfb29be1a to your computer and use it in GitHub Desktop.
Тест ️джойстиков для Вектора-06ц
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ; Тест ️джойстиков для Вектора-06ц | |
| ; на основе теста от @svofski https://gist.github.com/svofski/5903638d517e282d14bbf7290346b50c | |
| ; проверяет джойстик "С" на портах 0e/0f (то же на портах 2e/2f и 27 для платы ЛЕШАДОК ПОМПЕ), | |
| ; проверяет джойстик "УСПИД" на порту 07, джойстик "П" на порту 06 | |
| .project joytest.rom | |
| .tape v06c-rom | |
| rastint equ 38h ; прервывание обратного хода луча | |
| .org 100h | |
| ; стандартная точка входа .rom файла | |
| di ; запретить прерывания | |
| xra a | |
| out 10h ; выключить квазидиск | |
| lxi sp, $100 ; инициализировать указатель стека | |
| mvi a, 0c9h ; код инструкции RET | |
| sta rastint ; инициализировать обработчик RST7 | |
| call clrscr ; очистить экран | |
| call set_palette; установить палитру | |
| mvi a, 60h ; биты для опроса обоих джойстиков-П | |
| out 5 ; инициализация для джойстик-П | |
| mvi a, 92h ; управляющее слово ВВ55 | |
| out 4 ; инициализация ВВ55 | |
| toujours: | |
| ; задать позицию вывода текста | |
| ; столбец 0, строка $f8 (верх экрана) | |
| lxi h, $00f8 | |
| call gotoxy | |
| ; надпись про джойстик-С | |
| lxi h, msg1 | |
| call puts | |
| ; напечатать биты джойстика 1 | |
| lxi h, $00e8 | |
| call gotoxy | |
| lxi h, joe | |
| call puts | |
| in $0e | |
| call bit2str | |
| call puts | |
| ; напечатать биты порта "2E" | |
| lxi h,j2e | |
| call puts | |
| in $2e | |
| call bit2str | |
| call puts | |
| ; напечатать биты джойстика 2 | |
| lxi h, $00d8 | |
| call gotoxy | |
| lxi h, jof | |
| call puts | |
| in $0f | |
| call bit2str | |
| call puts | |
| ; напечатать биты порта "2F" | |
| lxi h, j2f | |
| call puts | |
| in $2f | |
| call bit2str | |
| call puts | |
| ; надпись про джойстик-УСПИД | |
| lxi h, $00c8 | |
| call gotoxy | |
| lxi h, msg2 | |
| call puts | |
| ; напечатать биты порта "7" | |
| lxi h, $00b8 | |
| call gotoxy | |
| lxi h, jo7 | |
| call puts | |
| in $07 | |
| call bit2str | |
| call puts | |
| ; напечатать биты порта "27" | |
| lxi h, j27 | |
| call puts | |
| in $27 | |
| call bit2str | |
| call puts | |
| ; надпись про джойстик-П | |
| lxi h, $00a8 | |
| call gotoxy | |
| lxi h, msg3 | |
| call puts | |
| ; напечатать биты порта "6" | |
| lxi h, $0098 | |
| call gotoxy | |
| lxi h, jo6 | |
| call puts | |
| in $06 | |
| call bit2str | |
| call puts | |
| ei | |
| hlt | |
| jmp toujours | |
| bl: lxi h, space | |
| call puts | |
| msg1: db 'JOYSTICK S',0 | |
| msg2: db 'JOYSTICK USPID',0 | |
| msg3: db 'JOYSTICK P',0 | |
| joe: db '$0E ',0 | |
| jof: db '$0F ',0 | |
| jo7: db '$07 ',0 | |
| j2e: db '$2E ',0 | |
| j2f: db '$2F ',0 | |
| j27: db '$27 ',0 | |
| jo6: db '$06 ',0 | |
| space: db ' ',0 | |
| bitpad: | |
| db 'xxxxxxxx ', 0 ; also a trailing blank | |
| ; преобразовать число в A в строку бит в bitpad, | |
| ; вернуть указатель на строку в HL | |
| bit2str: | |
| mov b, a | |
| mvi c, 8 | |
| lxi hl, bitpad | |
| b2s_next: | |
| mov a, b | |
| rlc | |
| mov b, a | |
| mvi a, '0' | |
| jnc $+4 | |
| inr a | |
| mov m, a | |
| inx h | |
| dcr c | |
| jnz b2s_next | |
| lxi h, bitpad | |
| ret | |
| ; | |
| ; Микро-библиотека для Вектора-06ц | |
| ; | |
| ; Область временного хранения SP | |
| __savedsp dw 0 | |
| ; Очистка всей экранной области | |
| clrscr | |
| di | |
| lxi h,0 | |
| dad sp | |
| shld __savedsp | |
| lxi sp, 0 | |
| lxi b, 0 | |
| lxi d, $1000 | |
| _clrscr_1: | |
| push b | |
| push b | |
| push b | |
| push b | |
| dcx d | |
| mov a, d | |
| ora e | |
| jnz _clrscr_1 | |
| lhld __savedsp | |
| sphl | |
| ret | |
| ; Программирование палитры | |
| set_palette | |
| ei | |
| hlt | |
| mvi a, 88h ; настроить ППИ | |
| out 0 | |
| mvi a, 255 ; сбросить прокрутку | |
| out 03 | |
| mvi c, $f ; программирование палитры | |
| mvi b, $00 | |
| _set_palette_1: | |
| mov a,c | |
| out 2 | |
| mov a, b | |
| out $c | |
| out $c | |
| out $c | |
| out $c | |
| cma | |
| mov b, a | |
| dcr c | |
| jp _set_palette_1 | |
| ret | |
| ; установить позицию для вывода следующего символа | |
| ; H = столбец, L = строка ($F8 = верхняя) | |
| gotoxy | |
| shld _puts_de | |
| ret | |
| ; Вывести 0-терминированую строку в HL на экран | |
| puts | |
| shld _puts_sptr | |
| _puts_1: | |
| call _putchar | |
| jnz _puts_1 | |
| ret | |
| _puts_sptr:dw 0 | |
| _puts_de: dw 0 | |
| ; Нарисовать один символ | |
| _putchar: | |
| lhld _puts_sptr | |
| mov a, m | |
| ora a | |
| rz | |
| mov c, a | |
| inx h | |
| shld _puts_sptr | |
| xchg | |
| lhld _puts_de | |
| inr h | |
| shld _puts_de | |
| xchg | |
| lxi h,0 | |
| dad sp | |
| shld __savedsp | |
| ; Найти адрес спрайта символа | |
| ; bc = (c-32)*8 | |
| mov a,c | |
| sui 32 | |
| mov c, a | |
| rlc | |
| rlc | |
| rlc | |
| ani 7 | |
| mov b,a | |
| mov a,c | |
| rlc | |
| rlc | |
| rlc | |
| ani $f8 | |
| mov c,a | |
| lxi h, _font_table | |
| dad b | |
| sphl ; sp -> char | |
| lxi h, $e000 | |
| dad d ; hl -> destination | |
| ; Выдавить биты на экран | |
| pop b | |
| mov m, c | |
| dcr l | |
| mov m, b | |
| dcr l | |
| pop b | |
| mov m, c | |
| dcr l | |
| mov m, b | |
| dcr l | |
| pop b | |
| mov m, c | |
| dcr l | |
| mov m, b | |
| dcr l | |
| pop b | |
| mov m, c | |
| dcr l | |
| mov m, b | |
| dcr l | |
| lhld __savedsp | |
| sphl | |
| mvi a, 1 | |
| ret | |
| _font_table: | |
| ; Font: 8X8!FONT.pf | |
| db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | |
| db 0x30, 0x78, 0x78, 0x30, 0x30, 0x00, 0x30, 0x00 | |
| db 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00 | |
| db 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00 | |
| db 0x30, 0x7C, 0xC0, 0x78, 0x0C, 0xF8, 0x30, 0x00 | |
| db 0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00 | |
| db 0x38, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0x76, 0x00 | |
| db 0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00 | |
| db 0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00 | |
| db 0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00 | |
| db 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00 | |
| db 0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, 0x00 | |
| db 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x60 | |
| db 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00 | |
| db 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00 | |
| db 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00 | |
| db 0x7C, 0xC6, 0xCE, 0xDE, 0xF6, 0xE6, 0x7C, 0x00 | |
| db 0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00 | |
| db 0x78, 0xCC, 0x0C, 0x38, 0x60, 0xC0, 0xFC, 0x00 | |
| db 0x78, 0xCC, 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00 | |
| db 0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x0C, 0x00 | |
| db 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, 0x78, 0x00 | |
| db 0x38, 0x60, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00 | |
| db 0xFC, 0x0C, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00 | |
| db 0x78, 0xCC, 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00 | |
| db 0x78, 0xCC, 0xCC, 0x7C, 0x0C, 0x18, 0x70, 0x00 | |
| db 0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00 | |
| db 0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x60 | |
| db 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00 | |
| db 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00 | |
| db 0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, 0x00 | |
| db 0x78, 0xCC, 0x0C, 0x18, 0x30, 0x00, 0x30, 0x00 | |
| db 0x7C, 0xC6, 0xDE, 0xDE, 0xDE, 0xC0, 0x78, 0x00 | |
| db 0x18, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x00 | |
| db 0x7C, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x7C, 0x00 | |
| db 0x3C, 0x66, 0xC0, 0xC0, 0xC0, 0x66, 0x3C, 0x00 | |
| db 0x78, 0x6C, 0x66, 0x66, 0x66, 0x6C, 0x78, 0x00 | |
| db 0x7E, 0x60, 0x60, 0x78, 0x60, 0x60, 0x7E, 0x00 | |
| db 0x7E, 0x60, 0x60, 0x78, 0x60, 0x60, 0x60, 0x00 | |
| db 0x3C, 0x66, 0xC0, 0xC0, 0xCE, 0x66, 0x3E, 0x00 | |
| db 0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00 | |
| db 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00 | |
| db 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3C, 0x00 | |
| db 0x66, 0x66, 0x6C, 0x78, 0x6C, 0x66, 0x66, 0x00 | |
| db 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7E, 0x00 | |
| db 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00 | |
| db 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00 | |
| db 0x3C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00 | |
| db 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x60, 0x00 | |
| db 0x3C, 0x66, 0x66, 0x66, 0x6E, 0x3C, 0x0E, 0x00 | |
| db 0x7C, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0x66, 0x00 | |
| db 0x3C, 0x66, 0x70, 0x38, 0x0E, 0x66, 0x3C, 0x00 | |
| db 0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00 | |
| db 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00 | |
| db 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00 | |
| db 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00 | |
| db 0x66, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x66, 0x00 | |
| db 0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x00 | |
| db 0xFE, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xFE, 0x00 | |
| db 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x00 | |
| db 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00 | |
| db 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00 | |
| db 0x07, 0x0E, 0x39, 0x63, 0x83, 0x31, 0x1C, 0x07 | |
| db 0xC0, 0xE0, 0x38, 0x8C, 0x82, 0x18, 0x70, 0xC0 | |
| end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment