Changes
add hl,de
l9cbd:
ld (0a410hdata_0a410h),hl ;; detected 'position' or 'ffff' for not detected
pop bc
ld a,082h
ret
;; HL = HL/DE
sub_9c94:
ld a,h
ret
;; HL = HL * DE
sub_9caeh:
ld a,l
;; detected.
ld de,00002h
call sub_9c94h;; HL = HL/DE
ld de,00064h
call sub_9caeh;; HL = HL*DE
ld de,00084h
call sub_9c94h;; HL = HL/DE
ex de,hl
ld hl,0018fh
sbc hl,de
ld (0a410hdata_0a410),hl
ret
sub_9d35h:
ld bc,(0a418hdata_0a418)
l9d79h:
push bc
ld hl,00014h
call 0bbf9h ;; gra line relative
ld de,(0a416hdata_0a416)
ld hl,0ffech
call 0bbc3h ;; gra move relative
ld hl,00000h
call 0bbc3h ;; gra move relative
ld bc,(0a420hdata_0a420)
l9db4h:
push bc
ld hl,00014h
call 0bbf9h ;; gra line relative
ld de,(0a416hdata_0a416)
ld hl,0ffech ;; -20
call 0bbc3h ;; gra move relative
djnz l9db4h
ld hl,0ffffh
ld (0a410hdata_0a410),hl
ret
sub_9d9ah:
pop bc
ld (0a410hdata_0a410),hl
call 0bbc6h ;; gra ask cursor
ld (0a412hdata_0a412),de
ret
push de
call sub_09e08h
ld (0a414hdata_0a414),hl
ld de,05398h
ld b,004h
l9e0bh:
push bc
ld hl,(0a414hdata_0a414)
ld c,b
ld b,000h
l9e2dh:
push bc
ld hl,(0a414hdata_0a414)
ld c,b
ld b,000h
push de
ld de,00002h
call sub_9c94h;; HL = HL/DE
pop de
push hl
ex de,hl
ld de,(0a416hdata_0a416) call sub_9c94h;; HL = HL/DE
ex de,hl
pop hl
sub_9e1fh:
call sub_9c8ah
ld hl,(0a418hdata_0a418) ld (0a420hdata_0a420h),hl ld hl,(0a410hdata_0a410)
ld a,0ffh
cp h
ret z
ld (0a41chdata_a41c),hl ld de,(0a412hdata_0a412) ld (0a41ahdata_a41a),de
l9e7ah:
ld de,0000ah
l9e85h:
push hl
ld hl,(0a412hdata_a412)
add hl,de
ex de,hl
call sub_09ed2h
call sub_09de6h
ld hl,(0a410hdata_a410)
ld a,0ffh
cp h
call 0bb1eh ;; km test key
ret z
ld hl,(0a41chdata_a41c) ld de,(0a41ahdata_a41a)
call 0bbc0h ;; gra move absolute
ld hl,(0a410hdata_a410) ld de,(0a412hdata_a412) ld a,(0a41ehdata_a41e)
call 0bbdeh ;; gra set pen
ld (0a41chdata_a41c),hl ld (0a41ahdata_a41a),de
call 0bbf6h ;; gra line absolute
ld hl,(0a410h)
sub_9eb7h:
ld hl,(0a41ahdata_a41a) ld de,(0a412hdata_a412)
and a
sbc hl,de
ld hl,00000h
call 0bbc3h ;; gra move relative
ld bc,(0a420hdata_a420)
push bc
ld de,00000h
jp nz,sub_9efeh
sub_9ef5h:
ld hl,(0a422hdata_a422) ld (0a410hdata_a410),hl
jp sub_9d9ah
sub_9efeh:
ld (0a422hdata_a422),hl ld de,(0a416hdata_a416)
ld hl,0ffech
call 0bbc3h ;; gra move relative
djnz l9f22h
ld hl,0ffffh
ld (0a410hdata_a410),hl
ret
sub_9f82h:
call sub_9e98h
ld bc,(0a420hdata_a420)
l9f5ch:
push bc
jp z,sub_9ef5h
ld (0a422hdata_0a422),hl ld de,(0a416hdata_a416)
ld hl,00000h
and a
call 0bbc3h ;; gra move relative
jp l9f0eh
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
;; screen dump to printer.
sub_0a028h:
ld a,013h;; INC instruction ld (0a124hla124),a
ld a,00eh
ld (0a0e2hla0e1+1),a ld a,(0a133hdata_a133)
bit 1,a
jr z,la083h
ld a,000h ;; NOP instruction ld (0a124hla124),a
ld a,007h
ld (0a0e2hla0e1+1),a
la083h:
call 0bd28h ;; mc reset printer
ld de,00000h
ld hl,00000h
ld (0a12dhdata_a12d),de
sub_a050h:
ld a,000h
ld (0a12chdata_a12c),a ;; accumulated pixels.
ld de,(0a12dhdata_a12d)
call sub_a10dh ;; store current graphics position
ld a,000h ;; number of columns low byte
call 0bd2bh ;; mc print char
ld a,(0a133hdata_a133)
bit 0,a
jr z,la0b4h
call 0bd2bh ;; mc print char
ld a,(0a12chdata_a12c) ;; pixel data
call 0bd2bh ;; mc print char
jr la0f9h
call 0bd2bh ;; mc print char
la0f9h:
ld a,(0a12chdata_a12c) ;; pixel data
call 0bd2bh ;; mc print char
call 0bb1eh ;; km test key
ret nz
ld hl,(0a12dhdata_a12d)la0e1:
ld de,0000eh
add hl,de
ld (0a12dhdata_a12d),hl
ld hl,00000h
call sub_a10dh
ld de,(0a12dhdata_a12d)
ld a,d
cp 002h
;; pixel is set to foreground. accumulate it into the pixel data so far
ld hl,(0a12chdata_a12c)
add hl,de
ld (0a12chdata_a12c),hl
ret
sub_a10dh:
ld (0a12fhdata_a12f),hl ld (0a131hdata_a131),de
ret
sub_a115h:
ld hl,(0a12fhdata_a12f) ld de,(0a131hdata_a131)
ret
call sub_a115h ;; get current X/Y graphics position
inc de ;; increment X to next pixel accross screen.
la124:
inc de
call sub_a10dh ;; set current X/Y graphics position
call 0bbf0h ;; gra test absolute
ret
data_a12c:
db 00h
data_a12d:
db 84h,02h
data_a12f:
db 00h,00h
data_a131:
dw 000eh
data_a133:
db 00h
data_a134:
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
sub_a154h:
call 0bc11h ;; scr get mode
ld a,b
la1aah:
ld (0a254hdata_a254),a
call 0bbc6h ;; gra ask cursor
ld (0a250hdata_a250),hl ld (0a250hdata_a250+2),de
la1b7h:
call 0bb99h ;; txt get paper
ld (0a1f9hpen_cmp+1),a
ld bc,00000h
ld (0a24chdata_a24c),bc ld (0a24ehdata_a24e),bc
call sub_a210
la18bh:
ld a,02fh ;; 47 - space
call 0bb1eh ;; km test key
ret nz
ld hl,(0a24ehdata_a24e)
inc hl
inc hl
ld hl,00000h
la1deh:
ld (0a24ehdata_a24e),hl
ld bc,05398h
add hl,bc
ld (0a1aahbuffer_addr3+2),hl;; +2 to skip ED,53buffer_addr3:
ld de,(055e0h)
ld hl,(0a24ehdata_a24e)
sub_a1efh:
ld bc,057e4h
add hl,bc
ld (0a1b7hbuffer_addr4+1),hl;; +1 to skip 22buffer_addr4:
ld hl,(05a2ch)
ld bc,00000h
ld a,(0a254hdata_a254)
ld c,a
ex de,hl
dec hl
call sub_a1efh
ld hl,(0a24ehdata_a24e) ld de,(0a24chdata_a24c)
inc hl
inc hl
ret z
jp la18bh
sub_a1efh:
push de
pop hl
pop de
pen_cmp:
cp 000h
jr nz,la248h
ld (0a250hdata_a250),hl ld (0a250h+2data_a252),de
push bc
call sub_0a210h
pop bc
la248h:
ld hl,(0a257hdata_a257) ld de,(0a255hdata_a255)
ret
sub_a210:
ld hl,(0a250hdata_a250) ld de,(0a250h+2data_a252)
call 0bbeah ;; gra plot absolute
ld hl,(0a24chdata_a24c)
inc hl
inc hl
ld hl,00000h
la267h:
ld (0a24chdata_a24c),hl
ld bc,05398h
add hl,bc
ld de,(0a250h+2data_a252) ld (0a237hbuffer_addr1+2),hl;; +2 to skip ED, 53buffer_addr1:
ld (05648h),de
ld hl,(0a24chdata_a24c)
ld bc,057e4h
add hl,bc
ld de,(0a250hdata_a250) ld (0a249buffer_addr+2),hl;; +2 to skip ED, 53buffer_addr2:
ld (05a94h),de
ret
;;Data area
data_a24c:
defw 02b0h
data_a24e:
defw 0248h
data_a250:
defw 0beh
data_a252:
defw 0120h
data_a254:
defb 04h
data_a255:
defw 0120h
data_a257:
defw 0bch
;; detected light pen position
data_a410:
defw 0
data_a412:
defw 0
;; memory/buffer address
data_a414:
defw 0
data_a416:
defw 0
data_a418:
defw 0
;; gra x,y position
data_a41a:
defw 0
data_a41c:
defw 0
;; graphics pen
data_a41e:
defb 0
defb 0
data_a420:
defw 0
end
</pre>
[[Category:Source code]]