Last active
August 24, 2021 15:41
-
-
Save svofski/5903638d517e282d14bbf7290346b50c to your computer and use it in GitHub Desktop.
joyсtest 07/0e/0f/27/2e/2f
This file contains 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ц | |
; проверяет джойстик "С" на портах 0e/0f и УСПИД на порту 07 | |
; то же на портах 2e/2f и 27 для платы ЛЕШАДОК ПОМПЕ | |
.project joyctest.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; установить палитру | |
toujours: | |
; задать позицию вывода текста | |
; столбец 0, строка $f8 (верх экрана) | |
lxi h, $00f8 | |
call gotoxy | |
; собрать строку из битов | |
lxi h, msg | |
call puts | |
; напечатать биты джойстика 1 | |
lxi h, $00e8 | |
call gotoxy | |
lxi h, joe | |
call puts | |
in $0e | |
call bit2str | |
call puts | |
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 | |
lxi h, j2f | |
call puts | |
in $2f | |
call bit2str | |
call puts | |
; напечатать биты джойстика "7" | |
lxi h, $00c8 | |
call gotoxy | |
lxi h, jo7 | |
call puts | |
in $07 | |
call bit2str | |
call puts | |
lxi h, j27 | |
call puts | |
in $27 | |
call bit2str | |
call puts | |
ei | |
hlt | |
jmp toujours | |
bl: lxi h, space | |
call puts | |
msg: | |
db 'JOY "C" 0E/0F/2E/2F USPID 07/27',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 | |
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