###########################################################
# Relocatable machine language monitor for PC-1245 (125x) #
# yagmon1245 #
###########################################################
# key codes
K_BRK equ 7
K_UP equ $c
K_DOWN equ $d
K_RIGHT equ $e
K_LEFT equ $f
# work area of internal RAM
ADRL equ $39
ADRH equ $3a
ADR equ ADRL ; current address
BUF5 equ $3b ; 3b,3c,3d,3e,(3f)
SUM equ $3f ; check sum
# internal RAM registers
I equ 0
J equ 1
A equ 2
B equ 3
XL equ 4
XH equ 5
YL equ 6
YH equ 7
org $c200 ; start address
lidp $c6da
orid $20 ; cursor on
begin:
cal $11e0 ; display on
here0: ldr
sbia 2
str
stp
lib (here1-here0)>>8
lia (here1-here0)&$ff
adb
lij 1
cal $11f9 ; LIY CHRBUFF-1
lp ADRH
tohex: ; hexanize (P) into [Y]
; A and B will be destroyed.
ldm
lib 1
swp
tohex0: ania $0f
adia $40 ; '0'
cpia $4a
jrcp tohex1
adia $51-10-$40 ; 'A'-10-'0'
tohex1: iys
ldm
decb
jrzm tohex0
ldr
end: rtn
here1:
str
stp
lib (here2-here1)>>8
lia (here2-here1)&$ff
adb
lp ADRL
jrm tohex
here2:
str
stp
lib (here3-here2)>>8
lia (here3-here2)&$ff
adb
lia $1d ; ':'
iys
lp ADRH ; ADR -> BA
ldm
exab
lp ADRL
ldm
lii 3
lp BUF5
data
clra
exam ; clear check sum
lp BUF5
datlop:
ldp
push
ldm
lp SUM
adm
pop
stp
jrm tohex
here3:
str
incp
deci
jrncm datlop
stp
lib (here4-here3)>>8
lia (here4-here3)&$ff
adb
lia $1d ; internal code of ':'
iys
lp SUM
jrm tohex
####################
# cursor UP/DOWN (move 4byte)
mvup: lib $ff
lia $fc
jrp mvupdn
mvdn: lib $00
lia $04
mvupdn: lp ADR
adb
gobegin:
jrm begin
######################
here4:
clra
iys
cal $11af ; display
keyin: cal $1d0d ; key input
cpia K_UP
jrzm mvup
cpia K_DOWN
jrzm mvdn
cpia K_BRK
jrzm end
cpia K_LEFT
jrzp mvleft
cpia K_RIGHT
jrzp mvright
cpia $40
jrcm keyin
cpia $4a
jrcp bufwrt
cpia $51
jrcm keyin
cpia $57
jrncm keyin
bufwrt: exab
lidp $c6ea
ldd
deca
lp YL
exam
lia $c7
lp YH
exam
exab
iys
lp YL
cpim $b4
jrncp rddata
rdaddr:
lij 1
cal $119a
lp ADRH
ldad1:
ixl
sbia $40
cpia 10
jrcp ldad2
sbia 7
ldad2: swp
exam
ixl
sbia $40
cpia 10
jrcp ldad3
sbia 7
ldad3: orma
decp
ldp
cpia ADRL-1
jrnzm ldad1
jrp mvright
rddata:
lij 1
cal $119a ; LIX CHRBUFF-1
liq ADR
lij 1
mvb
dy
lp XL
adim 5
lia 3
push
stdat1: ixl
sbia $40
cpia 10
jrcp stdat2
sbia 7
stdat2: swp
exab
ixl
sbia $40
cpia 10
jrcp stdat3
sbia 7
stdat3: lp B
orma
exam
iys
loop stdat1
# move 1 nibble
mvright:
lidp $c6ea
ldd
inca
jrp mvlr1
mvleft:
lidp $c6ea
ldd
deca
mvlr1: cpia $bd
jrncp mvlr3
cpia $b0
jrcp mvlr2
std
mvlr2: jrm gobegin
mvlr3: lia $b5
std
jrm mvdn