Skip to content

Instantly share code, notes, and snippets.

@nzeemin
Last active August 24, 2021 15:35
Show Gist options
  • Save nzeemin/db9333c66b02a68b25f8057cfb29be1a to your computer and use it in GitHub Desktop.
Save nzeemin/db9333c66b02a68b25f8057cfb29be1a to your computer and use it in GitHub Desktop.
Тест ️джойстиков для Вектора-06ц
; Тест ️джойстиков для Вектора-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