some more BSMON adaptations

This commit is contained in:
FeralChild64 authored and FeralChild64 committed 2021-01-26 00:03:07 +01:00
1 parent 5cc57b9f6d
commit 45784fe731
2 files changed
+6 -104

No files matched your search

+4 -101
View File
@@ -583,10 +583,11 @@ Mon_Assemble:
@labc LDA #0
@labd STA Mode_Flags
JSR Read_Number
LBCS Mon_Error
LDA #0
STA Addr_Mode
JSR Got_Val_To_LAC
BEQ @labg ; no operand
LDA Long_AC+2
LDA Mode_Flags
LBNE Mon_Error ; -> overflow
LDY #2 ; Y=2 word operand
LDA Long_AC+1
@@ -1275,104 +1276,6 @@ Print_Code:
INC Op_Size
@return RTS
; **********
Read_Number: ; XXX obsolete, to be replaced
; **********
PHX
PHY
PHZ
LDA #0
STA Dig_Cnt ; count columns read
STA Long_AC ; clear result Long_AC
STA Long_AC+1
STA Long_AC+2
STA Long_AC+3
JSR Get_Glyph ; get 1st. character
BEQ @exit
CMP #KEY_APOSTROPHE ; character entry 'C
BNE @numeric
JSR Get_Char ; character after '
STA Long_AC
INC Dig_Cnt
BRA @exit
@numeric LDY #3 ; $ + % %
@prefix CMP Cons_Prefix,Y ; Y = base index
BEQ @digit ; -> valid prefix
DEY
BPL @prefix
INY ; Y = 0
DEC Buf_Index ; character is digit
@digit JSR Get_Char ; hex -> BCD
BEQ @exit ; ? : ; and zero terminate
CMP #'0'
BCC @exit
CMP #':'
BCC @valid ; 0-9
CMP #'A'
BCC @exit
CMP #'G'
BCS @exit
SBC #7 ; hex conversion
@valid SBC #'0'-1
CMP Num_Base,Y
BCS @error
PHA ; push digit
INC Dig_Cnt
CPY #1 ; decimal
BNE @laba
LDX #3 ; push Long_AC * 2
CLC
@push LDA Long_AC,X
ROL
PHA
DEX
BPL @push
@laba LDX Num_Bits,Y
@shift ASL Long_AC
ROL Long_AC+1
ROW Long_AC+2
BCS @error ; overflow
DEX
BNE @shift
CPY #1 ; decimal adjustment
BNE @labc
LDX #0
LDZ #3
CLC
@pull PLA
ADC Long_AC,X
STA Long_AC,X
INX
DEZ
BPL @pull
@labc PLA ; pull digit
CLC
ADC Long_AC
STA Long_AC
BCC @digit
INC Long_AC+1
BNE @digit
INW Long_AC+2
BNE @digit
@error SEC
BRA @return
@exit CLC
@return PLZ
PLY
PLX
LDA Dig_Cnt ; digits read
RTS
; *************
Print_LPC_Addr: ; prints out the address in PC
; *************
+2 -3
View File
@@ -144,11 +144,10 @@ Get_Val_To_LAC:
@check_done:
lda Dig_Cnt
plz
ply
plx
cmp #$00 ; allow to easily check if a parameter was given
lda Dig_Cnt ; allow to easily check if a parameter was given
clc
rts