replaced BSMON constants with Open ROMs ones

This commit is contained in:
FeralChild64 authored and FeralChild64 committed 2021-01-26 00:03:07 +01:00
1 parent d17b6a8986
commit dfc72e8b17
2 files changed
+134 -151

No files matched your search

File renamed without changes.
+134 -151
View File
@@ -9,20 +9,6 @@
; XXX adapt all the addresses/constants!
; *************
; * Constants *
; *************
!set WHITE = $05
!set YELLOW = $9e
!set LRED = $96
!set CR = $0d
!set REV = $12
!set CRIGHT = $1d
!set QUOTE = $22
!set APOSTR = $27
; ************************************************
; * Register storage for JMPFAR and JSRFAR calls *
; ************************************************
@@ -80,8 +66,6 @@
!addr SA = $b9
!addr FA = $ba
!addr FNADR = $bb
!addr BA = $bd
!addr FNBANK = $be
!addr MODE_80 = $d7 ; 80 column / 40 volumn flag
@@ -103,32 +87,28 @@
!addr Disk_Sector = $40A ; logical sector 0 -> 255
!addr Disk_Status = $40B ; BCD value of status
Mon_Data = $410 ; 40 bytes, buffer for hunt and filename
Disk_Msg = $440 ; 40 bytes, disk status as text message
!addr Mon_Data = $410 ; 40 bytes, buffer for hunt and filename
!addr Disk_Msg = $440 ; 40 bytes, disk status as text message
!addr EXIT_OLD = $cf2e ; exit address for ROM 910110
!addr EXIT = $cfa4 ; exit address for ROM 911001
!addr EXIT_OLD = $cf2e ; exit address for ROM 910110
!addr EXIT = $cfa4 ; exit address for ROM 911001
!addr PRIMM = $ff7d
!addr CINT = $ff81
!addr IOINIT = $ff84
!addr SETMSG = $ff90
!addr SECOND = $ff93
!addr TKSA = $ff96
!addr KEY = $ff9f
!addr ACPTR = $ffa5
!addr CIOUT = $ffa8
!addr UNTALK = $ffab
!addr UNLSN = $ffae
!addr LISTEN = $ffb1
!addr TALK = $ffb4
!addr OPEN = $ffc0
!addr CLOSE = $ffc3
!addr CHRIN = $ffcf
!addr CHROUT = $ffd2
!addr LOAD = $ffd5
!addr SAVE = $ffd8
!addr STOP = $ffe1
!addr PRIMM = $ff7d
!addr CINT = $ff81
!addr SETMSG = $ff90
!addr SECOND = $ff93
!addr TKSA = $ff96
!addr ACPTR = $ffa5
!addr CIOUT = $ffa8
!addr UNTALK = $ffab
!addr UNLSN = $ffae
!addr LISTEN = $ffb1
!addr TALK = $ffb4
!addr OPEN = $ffc0
!addr CLOSE = $ffc3
!addr CHRIN = $ffcf
!addr CHROUT = $ffd2
!addr STOP = $ffe1
; *******
@@ -268,7 +248,7 @@ Main_A
INX
CPX #80
BCS Mon_Error ; input too long
CMP #CR
CMP #KEY_RETURN
BNE @loop
LDA #0
@@ -298,7 +278,7 @@ Mon_Error
; put a question mark at the end of the text
JSR PRIMM
!pet KEY_ESC, "o",CRIGHT,'?',0
!pet KEY_ESC, "o",KEY_CRSR_RIGHT,'?',0
LDX #$f8 ; reset stack pointer
TXS
BRA Main
@@ -320,7 +300,7 @@ Print_Commands
; ************
JSR PRIMM
!pet CR,YELLOW,REV,"bs monitor commands:"
!pet KEY_RETURN,KEY_YELLOW,KEY_RVS_ON,"bs monitor commands:"
; **********
Command_Char
@@ -339,7 +319,7 @@ Cons_Prefix
Load_Save_Verify
; **************
!pet "lsv",WHITE,0
!pet "lsv",KEY_WHITE,0
RTS
; ********
@@ -589,7 +569,7 @@ Mon_Bits
BCS @lab
JSR LAC_To_LPC ; Long_PC = start address
@lab JSR Print_CR
LDA #WHITE
LDA #KEY_WHITE
STA Long_DA+1
LDX #8
@@ -597,7 +577,7 @@ Mon_Bits
JSR Hex_LPC
LDZ #0
@col SEC
LDA #WHITE+LRED ; toggle colour
LDA #KEY_WHITE+KEY_LT_RED ; toggle colour
SBC Long_DA+1
STA Long_DA+1
JSR CHROUT
@@ -736,9 +716,9 @@ Dump_Row
LDX #2 ; 2 blocks in 80 columns
BBR7 MODE_80,@loop
DEX ; 1 block in 40 columns
@loop LDA #LRED
@loop LDA #KEY_LT_RED
JSR Dump_4_Bytes
LDA #WHITE
LDA #KEY_WHITE
JSR Dump_4_Bytes
DEX
BNE @loop
@@ -750,9 +730,9 @@ Dump_Row
LDX #2 ; 4 blocks in 80 columns
BBR7 MODE_80,@lchr
DEX ; 2 blocks in 40 columns
@lchr LDA #LRED
@lchr LDA #KEY_LT_RED
JSR Dump_4_Chars
LDA #WHITE
LDA #KEY_WHITE
JSR Dump_4_Chars
DEX
BNE @lchr
@@ -822,7 +802,7 @@ Mon_Hunt
LBCS Mon_Error ; Long_CT = count
LDY #0
JSR Get_Char
CMP #APOSTR
CMP #KEY_APOSTROPHE
BNE @bin
JSR Get_Char ; string hunt
CMP #0
@@ -867,84 +847,87 @@ Mon_Hunt
Load_Save
; *******
LDY Disk_Unit
STY FA
LDY #8
STY SA
LDY #0
STY BA
STY FNLEN
STY FNBANK
STY STATUS
LDA #>Mon_Data
STA FNADR+1
LDA #<Mon_Data
STA FNADR
@skip JSR Get_Char ; skip blanks
LBEQ Mon_Error
CMP #' '
BEQ @skip
CMP #QUOTE ; must be quote
LBNE Mon_Error
; XXX to be rewritten for OpenROMs!
rts
LDX Buf_Index
@copyfn LDA Buffer,X ; copy filename
BEQ @do ; no more input
INX
CMP #QUOTE
BEQ @unit ; end of filename
STA (FNADR),Y ; store to filename
INC FNLEN
INY
CPY #19 ; max = 16 plus prefix "@0:"
BCC @copyfn
JMP Mon_Error ; filename too long
; LDY Disk_Unit
; STY FA
; LDY #8
; STY SA
; LDY #0
; STY BA
; STY FNLEN
; STY FNBANK
; STY STATUS
; LDA #>Mon_Data
; STA FNADR+1
; LDA #<Mon_Data
; STA FNADR
; @skip JSR Get_Char ; skip blanks
; LBEQ Mon_Error
; CMP #' '
; BEQ @skip
; CMP #KEY_QUOTE ; must be quote
; LBNE Mon_Error
@unit STX Buf_Index ; update read position
JSR Get_Char
BEQ @do ; no more parameter
JSR Get_LAC
BCS @do
LDA Long_AC ; unit #
STA FA
JSR Get_LAC
BCS @do
JSR LAC_To_LPC ; Long_PC = start address
STA BA ; Bank
JSR Get_LAC ; Long_AC = end address + 1
BCS @load ; no end address -> load/verify
JSR Print_CR
LDX Long_AC ; X/Y = end address
LDY Long_AC+1
LDA VERCK ; A = load/verify/save
CMP #'S'
LBNE Mon_Error ; must be Save
LDA #0
STA SA ; set SA for PRG
LDA #Long_PC ; Long_PC = start address
JSR SAVE
@exit JMP Main
; LDX Buf_Index
; @copyfn LDA Buffer,X ; copy filename
; BEQ @do ; no more input
; INX
; CMP #KEY_QUOTE
; BEQ @unit ; end of filename
; STA (FNADR),Y ; store to filename
; INC FNLEN
; INY
; CPY #19 ; max = 16 plus prefix "@0:"
; BCC @copyfn
; JMP Mon_Error ; filename too long
@do LDA VERCK
CMP #'V' ; Verify
BEQ @exec
CMP #'L' ; Load
LBNE Mon_Error
LDA #0 ; 0 = LOAD
@exec JSR LOAD ; A == 0 : LOAD else VERIFY
BBR4 STATUS,@exit
LDA VERCK
LBEQ Mon_Error
LBCS Main
JSR PRIMM
!pet " error",0
JMP Main
; @unit STX Buf_Index ; update read position
; JSR Get_Char
; BEQ @do ; no more parameter
; JSR Get_LAC
; BCS @do
; LDA Long_AC ; unit #
; STA FA
; JSR Get_LAC
; BCS @do
; JSR LAC_To_LPC ; Long_PC = start address
; STA BA ; Bank
; JSR Get_LAC ; Long_AC = end address + 1
; BCS @load ; no end address -> load/verify
; JSR Print_CR
; LDX Long_AC ; X/Y = end address
; LDY Long_AC+1
; LDA VERCK ; A = load/verify/save
; CMP #'S'
; LBNE Mon_Error ; must be Save
; LDA #0
; STA SA ; set SA for PRG
; LDA #Long_PC ; Long_PC = start address
; JSR SAVE
; @exit JMP Main
@load LDX Long_PC
LDY Long_PC+1
LDA #0 ; 0 = use X/Y as load address
STA SA ; and ignore load address from file
BRA @do
; @do LDA VERCK
; CMP #'V' ; Verify
; BEQ @exec
; CMP #'L' ; Load
; LBNE Mon_Error
; LDA #0 ; 0 = LOAD
; @exec JSR LOAD ; A == 0 : LOAD else VERIFY
; BBR4 STATUS,@exit
; LDA VERCK
; LBEQ Mon_Error
; LBCS Main
; JSR PRIMM
; !pet " error",0
; JMP Main
; @load LDX Long_PC
; LDY Long_PC+1
; LDA #0 ; 0 = use X/Y as load address
; STA SA ; and ignore load address from file
; BRA @do
; ******
Mon_Fill
@@ -1337,7 +1320,7 @@ Mon_Assemble
; for easy entry of next assembler instruction
JSR PRIMM
!pet CR,"a ",0
!pet KEY_RETURN,"a ",0
LDA #'A'
STA Buffer
@@ -1562,7 +1545,7 @@ Print_Code
; detect long branches
@long LDA #YELLOW
@long LDA #KEY_YELLOW
JSR CHROUT
LDX Op_Code
LDA LEN_ADM,X
@@ -1640,7 +1623,7 @@ Print_Code
@mne4 JSR Print_Blank
@mne5 JSR Print_Blank
LDA #WHITE
LDA #KEY_WHITE
JSR CHROUT
; check for accumulator operand
@@ -1832,7 +1815,7 @@ Read_Number
JSR Get_Glyph ; get 1st. character
BEQ @exit
CMP #APOSTR ; character entry 'C
CMP #KEY_APOSTROPHE ; character entry 'C
BNE @numeric
JSR Get_Char ; character after '
STA Long_AC
@@ -1919,13 +1902,13 @@ Hex_LPC
LDX Long_PC+3
BEQ @laba
LDA #YELLOW
LDA #KEY_YELLOW
JSR CHROUT
TXA
JSR Print_Hex
LDA Long_PC+2
JSR Print_Hex
LDA #WHITE
LDA #KEY_WHITE
JSR CHROUT
BRA @labb
@laba LDA Long_PC+2
@@ -2945,26 +2928,26 @@ Mon_Help
; ******
JSR PRIMM
!pet LRED,"a",WHITE,"ssemble - a address mnemonic operand",CR
!pet LRED,"b",WHITE,"itmaps - b [from [to]]",CR
!pet LRED,"c",WHITE,"ompare - c from to with",CR
!pet LRED,"d",WHITE,"isassemble - d [from [to]]",CR
!pet LRED,"f",WHITE,"ill - f from to fillbyte",CR
!pet LRED,"g",WHITE,"o - g [address]",CR
!pet LRED,"h",WHITE,"unt - h from to (string or bytes)",CR
!pet LRED,"j",WHITE,"sr - j address",CR
!pet LRED,"l",WHITE,"oad - l filename [uniy [address]]",CR
!pet LRED,"m",WHITE,"emory - m [from [to]]",CR
!pet LRED,"r",WHITE,"egisters - r",CR
!pet LRED,"s",WHITE,"ave - s filename unit from to",CR
!pet LRED,"t",WHITE,"ransfer - t from to target",CR
!pet LRED,"v",WHITE,"erify - v filename [unit [address]]",CR
!pet "e",LRED,"x",WHITE,"it - x",CR
!pet LRED,".",WHITE,"<dot> - . address mnemonic operand",CR
!pet LRED,">",WHITE,"<greater> - > address byte sequence",CR
!pet LRED,";",WHITE,"<semicolon> - ; register contents",CR
!pet LRED,"@",WHITE,"dos - @ [dos command]",CR
!pet LRED,"?",WHITE,"help - ?",CR
!pet KEY_LT_RED,"a",KEY_WHITE,"ssemble - a address mnemonic operand",KEY_RETURN
!pet KEY_LT_RED,"b",KEY_WHITE,"itmaps - b [from [to]]",KEY_RETURN
!pet KEY_LT_RED,"c",KEY_WHITE,"ompare - c from to with",KEY_RETURN
!pet KEY_LT_RED,"d",KEY_WHITE,"isassemble - d [from [to]]",KEY_RETURN
!pet KEY_LT_RED,"f",KEY_WHITE,"ill - f from to fillbyte",KEY_RETURN
!pet KEY_LT_RED,"g",KEY_WHITE,"o - g [address]",KEY_RETURN
!pet KEY_LT_RED,"h",KEY_WHITE,"unt - h from to (string or bytes)",KEY_RETURN
!pet KEY_LT_RED,"j",KEY_WHITE,"sr - j address",KEY_RETURN
!pet KEY_LT_RED,"l",KEY_WHITE,"oad - l filename [uniy [address]]",KEY_RETURN
!pet KEY_LT_RED,"m",KEY_WHITE,"emory - m [from [to]]",KEY_RETURN
!pet KEY_LT_RED,"r",KEY_WHITE,"egisters - r",KEY_RETURN
!pet KEY_LT_RED,"s",KEY_WHITE,"ave - s filename unit from to",KEY_RETURN
!pet KEY_LT_RED,"t",KEY_WHITE,"ransfer - t from to target",KEY_RETURN
!pet KEY_LT_RED,"v",KEY_WHITE,"erify - v filename [unit [address]]",KEY_RETURN
!pet "e",KEY_LT_RED,"x",KEY_WHITE,"it - x",KEY_RETURN
!pet KEY_LT_RED,".",KEY_WHITE,"<dot> - . address mnemonic operand",KEY_RETURN
!pet KEY_LT_RED,">",KEY_WHITE,"<greater> - > address byte sequence",KEY_RETURN
!pet KEY_LT_RED,";",KEY_WHITE,"<semicolon> - ; register contents",KEY_RETURN
!pet KEY_LT_RED,"@",KEY_WHITE,"dos - @ [dos command]",KEY_RETURN
!pet KEY_LT_RED,"?",KEY_WHITE,"help - ?",KEY_RETURN
!pet 0
JMP Main