> BTW, super ti je ideja... samo je pitanje gdje se moze naci nekakva
> dokumentacija za developere.
Slozio sam si toolchain s SjASMPlus koji mi omogucava da trenutno
kreiram pacman.6e ROM file (prva 4 KB ROM-a) i uspio sam napraviti
fuunkciju print - kao proof of concept da mogu kreirati software koji
radi na originalnom (Midway) Pac-Man hardware-u.
Evo source-a, ovaj put su komentari na engleskom :-))
; Short test for Pac-Man hardware
; no interrupt routine yet
; creates pacman.6e ROM file
; Usage:
; sjasmplus.exe pacman_src.zx
; drag'n'drop pacman.6e onto pacman.zip
; by Chupo_cro VI 2017.
OUTPUT pacman.6e
wdg equ #50c0 ; watchdog timer
irqen equ #5000 ; interrupt request enable
ram equ #4c00 ; RAM start
ramtop equ #4fff ; RAM end
vram equ #4000 ; video RAM
colram equ #4400 ; color RAM
org #0000
pocetak di
xor a
ld (irqen),a ; disable external interrupt
ld sp, ramtop ; stack pointer to the end of the RAM
ld hl, irqen ; reset 74ls259
ld b,#08
xor a
loop1 ld (hl),a
inc l
djnz loop1
; end of initialization
call print
jr loop
; comment 'call print' and 'jr loop' lines to
; see all the tiles dumped into the video RAM
ld hl,vram ; fill video RAM
ld b,#04
loop3 ld (wdg),a
xor a
loop2 ld (hl),a
inc a
and #0f
inc l
jr nz,loop2
inc h
djnz loop3
ld b,#04 ; fill color RAM
loop5 ld (wdg),a
ld a,#01 ; pallete #01
loop4 ld (hl),a
;inc a
inc l
jr nz,loop4
inc h
djnz loop5
loop call wdg_res
jr loop ; end
wdg_res xor a ; reset watchdog timer
ld (wdg),a
ret
; ***************
; * subroutines *
; ***************
; print
print ld hl,vram + #03a0 ; upper-left corner
ld de,msg ; pointer to text
msgloop ld a,(de) ; read byte
cp #ff
ret z ; ret if end
ld (hl),a ; write byte to video RAM
ld bc,#0400 ; offset to color RAM
push hl
add hl,bc ; calculate address
ld (hl),#01 ; set the collor
pop hl
;inc l ; vertical move
;ld a,#20 ; horizontal move (hl -= #20)
;ld c,a
;ld b,#00
;sub hl,bc
ld a,l ; better hl -= #20
sub #20
ld l,a
jr nc,skip1
dec h
skip1 inc de
call wdg_res
jr msgloop
; end print
msg byte "CHUPO@WAS@HERE"
defb #ff
; **************************************************
FPOS #0fff ; ROM has 4096 bytes
org #0fff
byte #c9 ; last byte is RET (can be any byte)
kraj
display " "
display "ERRORS : ", /d, _ERRORS
display "WARNINGS : ", /d, _WARNINGS
display "PROGRAM LENGTH: ", /a, kraj - pocetak, " bytes"
display " "