PicoPAC/selectgame/text-engine_bank1.asm

397 lines
9.0 KiB
NASM
Raw Normal View History

2024-08-07 14:45:50 -04:00
; INTRAM
; 20-2f = char temp space
; 30 = temp exram pointer
; 31 = PAL/NTSC
; 32-35 = line colors
; only alterable during assemble-time: y0, gridfill
; alterable during runtime: x0, backcol
cpu 8048
include "g7000.h"
iram_disp_type equ 031h
iram_line_selected equ 37h
iram_mempage equ 36h
iram_timer equ 78h
x0 equ 018h ; between 000h and 024h
y0 equ 01ch ; multiple of 4, between 014h and 038h
gridfill equ 080h ; 000h or 080h
backcol equ 002h ; grid and background color
org 400h
jmp selectgame
jmp irq
retr
nop
; jmp vsyncirq ; VSYNC-interrupt
jmp vsync
jmp start
jmp soundirq
vsync
clr f1
cpl f1
mov r1,#0a2h
movx a,@r1
mov r0,#03fh
jmp 0030h
change_bank
dis i
anl p1,#0feh ; change to bank 2
call startchkpages
orl p1,#003h ;
anl p1,#0fdh ; change to bank 1
call startchkpages
anl p1,#0fch ; change to bank 0
call startchkpages
orl p1,#003h ; change to bank 3
en i
ret
start
startchkpages
mov r1,#iram_mempage
mov a,@r1
xrl a,#11
jnz chkpage12
call initpage11
ret
chkpage12
mov a,@r1
xrl a,#12
jnz chkpage13
call initpage12
ret
chkpage13
mov a,@r1
xrl a,#13
jnz chkpage14
call initpage13
ret
chkpage14
mov a,@r1
xrl a,#14
jnz chkpage15
call initpage14
ret
chkpage15
mov a,@r1
xrl a,#15
jnz chkpage16
call initpage15
ret
chkpage16
mov a,@r1
xrl a,#16
jnz chkpage17
call initpage16
ret
chkpage17
mov a,@r1
xrl a,#17
jnz chkpage18
call initpage17
ret
chkpage18
ret
initend
; --> color data (used for "initchars" and "initpage")
mov r0,#032h ; set text colors
mov @r0,#001h
inc r0
mov @r0,#023h
inc r0
mov @r0,#045h
inc r0
mov @r0,#067h
ret
calcchar
; call calcY
mov a,r5
rl a
rl a
mov r5,a
; mov a,r4
; rr a
; rr a
; cpl a
; inc a
; add a,r5
ret
putchar
call calcchar
movx @r1,a
ret
align 256
initpage11
call extramenable
mov r1,#0
mov r7,#pagedata11 & 0ffh
intpage11
mov a,r7
movp a,@a
mov r5,a
call putchar
inc r7
inc r1
mov a,r1
cpl a
jb7 intpage11
jmp initend
align 128
pagedata11:
db 00Ch, 017h, 002h, 028h, 003h, 003h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 017h, 002h, 028h, 003h, 005h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 017h, 002h, 028h, 003h, 008h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 017h, 002h, 028h, 003h, 009h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 017h, 002h, 028h, 004h, 000h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 017h, 002h, 028h, 004h, 001h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 017h, 002h, 028h, 004h, 003h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 017h, 002h, 028h, 004h, 005h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
align 128
initpage12
call extramenable
mov r1,#0
mov r7,#pagedata12 & 0ffh
intpage12
mov a,r7
movp a,@a
mov r5,a
call putchar
inc r7
inc r1
mov a,r1
cpl a
jb7 intpage12
jmp initend
align 128
pagedata12:
db 00Ch, 017h, 002h, 028h, 004h, 006h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 017h, 002h, 028h, 004h, 007h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 017h, 002h, 028h, 004h, 008h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 017h, 002h, 028h, 004h, 008h, 020h, 00Eh
db 014h, 027h, 025h, 016h, 02Dh, 00Ch, 00Ch, 00Ch
db 00Ch, 00Fh, 020h, 00Eh, 028h, 020h, 023h, 013h
db 017h, 025h, 020h, 014h, 019h, 027h, 025h, 016h
db 00Ch, 00Fh, 020h, 00Eh, 028h, 01Bh, 00Eh, 020h
db 019h, 01Dh, 00Fh, 017h, 016h, 02Dh, 014h, 027h
db 00Ch, 00Fh, 020h, 00Eh, 028h, 02Dh, 016h, 026h
db 025h, 00Eh, 012h, 028h, 02Dh, 015h, 026h, 025h
db 00Ch, 00Fh, 020h, 00Eh, 028h, 014h, 02Ch, 00Fh
db 012h, 028h, 020h, 02Dh, 01Ah, 028h, 014h, 012h
align 128
initpage13
call extramenable
mov r1,#0
mov r7,#pagedata13 & 0ffh
intpage13
mov a,r7
movp a,@a
mov r5,a
call putchar
inc r7
inc r1
mov a,r1
cpl a
jb7 intpage13
jmp initend
align 128
pagedata13:
db 00Ch, 00Fh, 025h, 028h, 01Bh, 013h, 017h, 01Ch
db 01Ch, 012h, 013h, 027h, 025h, 016h, 02Dh, 00Ch
db 00Ch, 00Fh, 025h, 028h, 00Fh, 017h, 00Fh, 012h
db 02Ch, 012h, 027h, 025h, 016h, 02Dh, 00Ch, 00Ch
db 00Ch, 00Fh, 025h, 028h, 018h, 028h, 025h, 012h
db 013h, 014h, 027h, 025h, 016h, 02Dh, 00Ch, 00Ch
db 00Ch, 00Fh, 025h, 028h, 019h, 015h, 00Fh, 012h
db 013h, 028h, 023h, 017h, 025h, 013h, 020h, 027h
db 00Ch, 00Fh, 013h, 028h, 023h, 00Eh, 020h, 02Ch
db 028h, 00Fh, 016h, 01Ch, 012h, 017h, 02Dh, 028h
db 00Ch, 00Fh, 013h, 028h, 023h, 00Eh, 020h, 02Ch
db 028h, 00Fh, 016h, 01Ch, 012h, 017h, 02Dh, 028h
db 00Ch, 00Fh, 013h, 028h, 016h, 02Dh, 014h, 012h
db 013h, 00Fh, 017h, 00Eh, 027h, 025h, 016h, 02Dh
db 00Ch, 00Fh, 013h, 028h, 026h, 020h, 013h, 014h
db 016h, 020h, 02Dh, 028h, 014h, 01Dh, 013h, 012h
align 128
initpage14
call extramenable
mov r1,#0
mov r7,#pagedata14 & 0ffh
intpage14
mov a,r7
movp a,@a
mov r5,a
call putchar
inc r7
inc r1
mov a,r1
cpl a
jb7 intpage14
jmp initend
align 128
pagedata14:
db 00Ch, 00Fh, 013h, 028h, 026h, 020h, 013h, 014h
db 016h, 020h, 02Dh, 028h, 014h, 01Dh, 013h, 012h
db 00Ch, 00Fh, 013h, 028h, 026h, 016h, 019h, 019h
db 016h, 017h, 02Dh, 028h, 016h, 026h, 00Fh, 017h
db 00Ch, 00Fh, 013h, 028h, 02Dh, 016h, 01Ch, 01Dh
db 014h, 01Bh, 016h, 01Ch, 01Dh, 014h, 012h, 013h
db 00Ch, 00Fh, 013h, 028h, 00Fh, 016h, 02Dh, 025h
db 020h, 00Eh, 00Eh, 027h, 025h, 016h, 02Dh, 00Ch
db 00Ch, 00Fh, 013h, 028h, 00Fh, 00Eh, 020h, 02Ch
db 014h, 020h, 01Ch, 027h, 025h, 016h, 02Dh, 00Ch
db 00Ch, 00Fh, 013h, 028h, 013h, 012h, 01Ah, 028h
db 025h, 020h, 013h, 017h, 02Dh, 027h, 025h, 016h
db 00Ch, 00Fh, 013h, 028h, 013h, 012h, 01Ah, 028h
db 025h, 020h, 013h, 017h, 02Dh, 028h, 020h, 00Eh
db 00Ch, 00Fh, 013h, 028h, 013h, 017h, 025h, 017h
db 014h, 028h, 023h, 016h, 014h, 02Ch, 027h, 025h
align 128
initpage15
call extramenable
mov r1,#0
mov r7,#pagedata15 & 0ffh
intpage15
mov a,r7
movp a,@a
mov r5,a
call putchar
inc r7
inc r1
mov a,r1
cpl a
jb7 intpage15
jmp initend
align 128
pagedata15:
db 00Ch, 00Fh, 013h, 028h, 019h, 01Dh, 020h, 013h
db 01Fh, 028h, 01Dh, 015h, 02Dh, 014h, 012h, 013h
db 00Ch, 00Fh, 013h, 028h, 019h, 00Fh, 016h, 01Ah
db 012h, 013h, 026h, 020h, 02Dh, 027h, 025h, 016h
db 00Ch, 00Fh, 013h, 028h, 019h, 00Fh, 016h, 01Ah
db 012h, 013h, 026h, 020h, 02Dh, 028h, 020h, 00Eh
db 00Ch, 00Fh, 013h, 028h, 014h, 015h, 014h, 020h
db 02Dh, 01Fh, 01Dh, 020h, 026h, 027h, 025h, 016h
db 00Ch, 024h, 00Fh, 028h, 000h, 001h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 000h, 001h, 01Dh, 020h
db 023h, 01Fh, 027h, 025h, 016h, 02Dh, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 000h, 001h, 00Fh, 00Eh
db 027h, 025h, 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 000h, 002h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
align 128
initpage16
call extramenable
mov r1,#0
mov r7,#pagedata16 & 0ffh
intpage16
mov a,r7
movp a,@a
mov r5,a
call putchar
inc r7
inc r1
mov a,r1
cpl a
jb7 intpage16
jmp initend
align 128
pagedata16:
db 00Ch, 024h, 00Fh, 028h, 000h, 003h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 000h, 004h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 000h, 005h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 000h, 006h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 000h, 006h, 00Fh, 00Eh
db 027h, 025h, 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 000h, 007h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 000h, 008h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 000h, 009h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
align 128
initpage17
call extramenable
mov r1,#0
mov r7,#pagedata17 & 0ffh
intpage17
mov a,r7
movp a,@a
mov r5,a
call putchar
inc r7
inc r1
mov a,r1
cpl a
jb7 intpage17
jmp initend
align 128
pagedata17:
db 00Ch, 024h, 00Fh, 028h, 001h, 000h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 001h, 001h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 001h, 001h, 020h, 00Eh
db 014h, 027h, 025h, 016h, 02Dh, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 001h, 001h, 00Fh, 00Eh
db 027h, 025h, 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 001h, 002h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 001h, 003h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 001h, 004h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch
db 00Ch, 024h, 00Fh, 028h, 001h, 005h, 027h, 025h
db 016h, 02Dh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch