summaryrefslogtreecommitdiff
path: root/programs/subasm.s
diff options
context:
space:
mode:
authormrb0nk500 <b0nk@b0nk.xyz>2020-05-29 22:38:34 -0400
committermrb0nk500 <b0nk@b0nk.xyz>2020-05-29 22:38:34 -0400
commit2f9d38f9f9d6f17bc274934b23915417012eeed8 (patch)
treeb72aff709261d5e22f026835191eec9b73a77ff5 /programs/subasm.s
parent47cb4ad67be723a4df8e6ccd3cad6be79e3e7765 (diff)
Make JSL, JSR absolute, and remove RTL.
The reason for doing this was because JSL, and RTL are redundent, as they both do the same thing as JSR, and RTS.
Diffstat (limited to 'programs/subasm.s')
-rw-r--r--programs/subasm.s76
1 files changed, 37 insertions, 39 deletions
diff --git a/programs/subasm.s b/programs/subasm.s
index 350e105..e5d620f 100644
--- a/programs/subasm.s
+++ b/programs/subasm.s
@@ -65,8 +65,7 @@ mne:
.byte "CPY", $19, $3D, $FF, $FF, $85, $FF, $FF, $4C, $FF
.byte "PLB", $1A, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
.byte "INC", $FF, $1D, $FF, $FF, $FF, $FF, $FF, $1C, $F5
- .byte "JSR", $FF, $1E, $FF, $FF, $BE, $FF, $FF, $FF, $FF
- .byte "JSL", $FF, $FF, $FF, $FF, $FF, $FF, $FF, $20, $FF
+ .byte "JSR", $FF, $1E, $FF, $FF, $BE, $FF, $FF, $20, $FF
.byte "AND", $21, $26, $FF, $FF, $FF, $FF, $FF, $24, $FF
.byte "ABA", $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $22
.byte "PLP", $28, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
@@ -113,7 +112,6 @@ mne:
.byte "INY", $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $A8
.byte "TAX", $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $AA
.byte "RTS", $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $AE
- .byte "RTL", $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $B0
.byte "CMP", $B1, $B6, $FF, $FF, $25, $7D, $7C, $B4, $FF
.byte "CAB", $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $B2
.byte "SEI", $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $B8
@@ -214,22 +212,22 @@ fix_val:
subasm:
ldb #0 ; Set the first pointer
lda.d #cmd_buf ; to the command buffer.
- jsl set_ptr ;
+ jsr set_ptr ;
tba ; Reset A.
tax ; Reset X.
- jsl chk_shcmd ; Did we get a shortend command?
+ jsr chk_shcmd ; Did we get a shortend command?
bne parse_cmd ; Yes, so skip everything else.
jmp subasm_end ;
- jsl chk_cmd ; No, but did we get a full command?
+ jsr chk_cmd ; No, but did we get a full command?
bne parse_cmd ; Yes, so skip everything else.
- jsl lexer ; No, so start lexing this line.
+ jsr lexer ; No, so start lexing this line.
subasm_end:
- rtl ; End of subasm.
+ rts ; End of subasm.
parse_cmd:
ldb #1 ; Set the second pointer
lda.d #cmd_srt ; to the command subroutine table.
- jsl set_ptr ;
+ jsr set_ptr ;
deb ; Reset B.
tba ; Reset A.
lda f ; Get the command ID.
@@ -241,7 +239,7 @@ parse_cmd:
lda.w (ptr2), y ; Get the command subroutine, from the command subroutine table.
ply #2 ; Get back the screen buffer position.
ldb #2 ; Save it in the third pointer.
- jsl set_ptr ;
+ jsr set_ptr ;
ldb #0 ; Reset B.
jsr (ptr3) ; Run the command's subroutine.
jmp subasm_end ; We are done.
@@ -250,7 +248,7 @@ chk_shcmd:
tba ; Reset A.
inb ; Set the second pointer
lda.w #sh_cmds ; to the shortend command table.
- jsl set_ptr ;
+ jsr set_ptr ;
deb ; Reset B.
tba ; Reset A.
phy #2 ; Preserve the screen buffer position.
@@ -283,19 +281,19 @@ shcmd_fail:
tax ; Reset X.
shcmd_end:
ply #2 ; Get back the screen buffer position.
- rtl ; End of chk_shcmd.
+ rts ; End of chk_shcmd.
print_hex:
pha #8 ; Preserve the hex value.
and #0 ; Reset A.
ldb #1 ; Set the second pointer
lda.w #hex_char ; to the start of hex character table.
- jsl set_ptr ;
+ jsr set_ptr ;
inb ; Set the third pointer
lda.d #hex_str ; to the end of hex string buffer.
clc ; Do a non carrying add.
adc #$10 ;
- jsl set_ptr ;
+ jsr set_ptr ;
ldb #0 ; Reset B.
pla #8 ; Get the hex value back.
pnthex_lp:
@@ -325,22 +323,22 @@ pnthex_lp4:
beq pnthex_end ; Yes, so we're done.
jmp pnthex_lp ; No, so keep printing more digits.
pnthex_end:
- rtl ; End of print_hex.
+ rts ; End of print_hex.
charcpy:
ldx idx3 ; Get the string index.
sta strbuf, x ; Save it in the string buffer.
inc idx3 ; Increment the string index.
- rtl ; End of charcpy.
+ rts ; End of charcpy.
print_hi:
and #0 ; Reset A.
sta idx3 ; Clear the string index.
lda #'$' ; Print the hex delimiter.
- jsl charcpy ;
+ jsr charcpy ;
lda.q idx0 ; Get the masked address.
ldx #$10 ; Set digit count to 16.
- jsl print_hex ; Print the address.
+ jsr print_hex ; Print the address.
lda.q hex_str ; Get the lower half of the string.
sta.q strbuf+1 ; Save it in the string buffer.
lda.q hex_str+8 ; Get the upper half of the string.
@@ -348,10 +346,10 @@ print_hi:
ldx #$11 ; Add 16 to the index.
stx idx3 ;
lda #':' ; Print a colon.
- jsl charcpy ;
+ jsr charcpy ;
lda # ' ' ; Print a space.
- jsl charcpy ;
- rtl ; End of print_hi.
+ jsr charcpy ;
+ rts ; End of print_hi.
print_lo:
lda #0 ; Reset A.
@@ -359,11 +357,11 @@ print_lo:
pntlo_lp:
ldx #2 ; Set digit count to 2.
pha #1 ; Preserve the nibble offset.
- jsl print_hex ; Print the low nibble offset.
+ jsr print_hex ; Print the low nibble offset.
lda.w (ptr3) ; Get the two digits.
- jsl charcpy ; Copy the first digit.
+ jsr charcpy ; Copy the first digit.
lsr #8 ; Copy the next digit.
- jsl charcpy ;
+ jsr charcpy ;
pla #1 ; Get the nibble offset back.
inc ; Increment the offset.
cmp #$10 ; Are we at the last offset?
@@ -371,7 +369,7 @@ pntlo_lp:
pntlo_lp1:
pha #1 ; No, so preserve the nibble offset.
lda #' ' ; Add a space to the string buffer.
- jsl charcpy ;
+ jsr charcpy ;
pla #1 ; Get the nibble offset back.
jmp pntlo_lp ; Keep looping.
pntlo_end:
@@ -380,8 +378,8 @@ pntlo_end:
sta strbuf, x ;
tax ; Reset X.
lda.d #strbuf ; Print the string buffer.
- jsl print_str ;
- rtl ; End of print_lo.
+ jsr print_str ;
+ rts ; End of print_lo.
print_chunk:
ldx #0 ; Reset X.
@@ -391,16 +389,16 @@ pntchnk_lp:
and #0 ; Reset A.
ldx #2 ; Set the digit count to 2.
lda (idx0), y ; Get the byte at that address.
- jsl print_hex ; Print the byte.
+ jsr print_hex ; Print the byte.
lda.w (ptr3) ; Get the two digits.
- jsl charcpy ; Copy the first digit.
+ jsr charcpy ; Copy the first digit.
lsr #8 ; Copy the next digit.
- jsl charcpy ;
+ jsr charcpy ;
iny ; Increment the byte index.
cpy #$10 ; Have we read 16 bytes?
beq pntchnk_end ; Yes, so we're done.
lda #' ' ; No, so add a soace to the string buffer.
- jsl charcpy ;
+ jsr charcpy ;
jmp pntchnk_lp ; Keep looping.
pntchnk_end:
ply #2 ; Get the screen buffer index back.
@@ -409,7 +407,7 @@ pntchnk_end:
sta strbuf, x ;
tax ; Reset X.
sta idx3 ; Clear the string index.
- rtl ; End of print_chunk.
+ rts ; End of print_chunk.
viewmem:
lda.q prg_cnt ; Get the program counter.
@@ -418,18 +416,18 @@ viewmem:
sta idx0 ; Overwrite the first byte, with the masked byte.
lda #19 ; Move the cursor to the right, by 19 columns.
sta scr_col ;
- jsl update_pos ;
- jsl print_lo ; Print the low nibble offsets.
+ jsr update_pos ;
+ jsr print_lo ; Print the low nibble offsets.
ldx #0 ; Reset X.
ldb #0 ; Reset B.
stb idx1 ; Reset the byte count.
vmem_lp0:
lda #'\n' ; Print a newline.
- jsl print_char ;
- jsl print_hi ; Place the address in the string buffer.
- jsl print_chunk ; Place the next 16 bytes in the string buffer.
+ jsr print_char ;
+ jsr print_hi ; Place the address in the string buffer.
+ jsr print_chunk ; Place the next 16 bytes in the string buffer.
lda.d #strbuf ; Print the string buffer.
- jsl print_str ;
+ jsr print_str ;
inc idx1 ; Increment the chunk count.
ldb idx1 ; Get the chunk count.
cpb #$10 ; Did we print 16 chunks?
@@ -442,7 +440,7 @@ vmem_lp0:
jmp vmem_lp0 ; Keep looping.
vmem_end:
lda #'\n' ; Print a newline.
- jsl print_char ;
+ jsr print_char ;
and #0 ; Reset A.
rts ; End of viewmem.