gvaddr equ $bff0
kcode equ $bff2
org $bf00
ld b, 5
loop:
ld de, 0
call getimg
call putimg
ld de, 0
call getimg
call getimg
call putimg
djnz loop
ld de, 0
call getimg
call putimg
ret
getimg:
ld hl, (kcode)
ld a, l
out ($e8), a
ld a, h
out ($e9), a
out ($ea), a
in a, ($e8)
or e
ld e, a
in a, ($e9)
or d
ld d, a
out ($eb), a
inc hl
ld (kcode), hl
ret
putimg:
ld hl, (gvaddr)
di
out ($5e), a
ld (hl), d
inc hl
ld (hl), e
out ($5f), a
ei
ld de, 79
add hl, de
ld (gvaddr), hl
ret
100 CLEAR ,&HBF00:DEFINT A-Z:SCREEN 0,0:CLS 3:COLOR=(4,6):TX=15:GY=180
110 P=&HBF00:DEF USR=P
120 READ D$:IF D$<>"*" THEN POKE P,VAL("&h"+D$):P=P+1:GOTO 120
130 *LOOP:READ D$:IF D$="*" THEN END
140 KC=VAL("&h"+D$):GOSUB *PUTK:TX=TX+2:GOTO *LOOP
150 *PUTK:GV=&HC000+GY*80+TX:IF KC>=&H3000 GOTO 170
160 KK!=(KC AND &H60)*&H80+(KC AND &H700)*2+(KC AND &H1F)*&H10:GOTO 180
170 KK!=(KC AND &H60)*&H200+(KC AND &H1F00)*2+(KC AND &H1F)*&H10
180 IF KK!>=32768! THEN KK!=KK!-65536!
190 KC=KK!
200 P=VARPTR(GV):POKE &HBFF0,PEEK(P):POKE &HBFF1,PEEK(P+1)
210 P=VARPTR(KC):POKE &HBFF2,PEEK(P):POKE &HBFF3,PEEK(P+1)
220 A=USR(0):RETURN
230 DATA 06,05,11,00,00,CD,23,BF,CD,3D,BF,11,00,00,CD,23
240 DATA BF,CD,23,BF,CD,3D,BF,10,E9,11,00,00,CD,23,BF,CD
250 DATA 3D,BF,C9,2A,F2,BF,7D,D3,E8,7C,D3,E9,D3,EA,DB,E8
260 DATA B3,5F,DB,E9,B2,57,D3,EB,23,22,F2,BF,C9,2A,F0,BF
270 DATA F3,D3,5E,72,23,73,D3,5F,FB,11,4F,00,19,22,F0,BF
280 DATA C9,*
290 DATA 3A23,3273,244E,255D,2524,2573,2548,213E,255E,2573,244F,2122
300 DATA 252A,256C,306C,3F4D,2447,2464,246B,2123,*