jump table now uses vectors in RAM

This commit is contained in:
FeralChild64 committed 2019-08-05 18:08:15 +02:00
1 parent fb9caa7602
commit d5d6581901
32 files changed
+60 -140

No files matched your search

+1 -1
View File
@@ -20,7 +20,7 @@ print_string_loop:
lda (temp_string_ptr),y
beq print_string_end
jsr via_IBSOUT
jsr JCHROUT
txa
tay
+1 -1
View File
@@ -29,7 +29,7 @@ startup_banner:
jsr print_integer
lda #$20
jsr via_IBSOUT
jsr JCHROUT
;; Print the rest of the start up message
ldx #34
+5 -5
View File
@@ -7,9 +7,9 @@ basic_do_error:
;; Print ? at start
lda #$0d
jsr via_IBSOUT
jsr JCHROUT
lda #$3f
jsr via_IBSOUT
jsr JCHROUT
;; Print main part of error message
pla
@@ -18,7 +18,7 @@ basic_do_error:
;; Print ERROR at end
lda #$20
jsr via_IBSOUT
jsr JCHROUT
ldx #33
jsr print_packed_message
@@ -27,9 +27,9 @@ basic_do_error:
;; XXX print line number if not in direct mode
lda #$0d
jsr via_IBSOUT
jsr JCHROUT
lda #$0d
jsr via_IBSOUT
jsr JCHROUT
;; Reset stack, and go back to main loop
ldx #$fe
+1 -1
View File
@@ -52,7 +52,7 @@ rsl_l1: lda $0200,x
*
;; Do printing of the new line
lda #$0d
jsr via_IBSOUT
jsr JCHROUT
;; Ignore empty lines
lda tokenise_work1
+1 -1
View File
@@ -17,7 +17,7 @@ basic_do_break:
*
lda #$0d
jsr via_IBSOUT
jsr JCHROUT
cmd_end:
jmp basic_main_loop
+4 -4
View File
@@ -42,7 +42,7 @@ list_single_line: ; entry point needed by DOS wedge
pla
jsr print_integer
lda #$20
jsr via_IBSOUT
jsr JCHROUT
;; Iterate through printing out the line
;; contents
@@ -111,16 +111,16 @@ list_not_rem:
bne list_print_loop
list_is_literal:
jsr via_IBSOUT
jsr JCHROUT
iny
bne list_print_loop
list_end_of_line:
;; Clear reverse flag
lda #$92
jsr via_IBSOUT
jsr JCHROUT
;; Print end of line
lda #$0d
jsr via_IBSOUT
jsr JCHROUT
rts
+3 -2
View File
@@ -191,6 +191,7 @@ end_of_line_search:
pla
sta basic_current_line_ptr+0
jmp basic_relink_loop
via_ILOAD:
jmp (ILOAD)
+1 -1
View File
@@ -115,7 +115,7 @@ found_start_of_number:
;; Print digits
* lda $0100,y
ora #$30
jsr via_IBSOUT
jsr JCHROUT
iny
cpy #5
bne -
+5 -5
View File
@@ -38,7 +38,7 @@ found_message_in_token_stream:
beq +
jsr print_packed_word
lda #$20
jsr via_IBSOUT
jsr JCHROUT
pla
tay
iny
@@ -47,7 +47,7 @@ found_message_in_token_stream:
pla
;; Rub out space at the end
lda #$14
jsr via_IBSOUT
jsr JCHROUT
rts
print_packed_word:
@@ -144,7 +144,7 @@ next_packed_word_char:
;; X=1-14 = first 14 chars, so subtract one
lda packed_message_chars-1,x
jsr via_IBSOUT
jsr JCHROUT
;; See if there is a char in the low nybl to print
pla
@@ -171,7 +171,7 @@ has_nybl:
;; X=1-14 = first 14 chars, so subtract one
lda packed_message_chars-1,x
jsr via_IBSOUT
jsr JCHROUT
*
pla
tay
@@ -207,7 +207,7 @@ unpack_literal_char:
tya
pha
lda (temp_string_ptr),y
jsr via_IBSOUT
jsr JCHROUT
pla
tay
rts
+3 -3
View File
@@ -112,7 +112,7 @@ not_hexword:
not_pointer:
;; Print character
jsr via_IBSOUT
jsr JCHROUT
printf_nextchar:
jsr printf_advance
@@ -148,11 +148,11 @@ printf_printhexbyte:
cmp #$3A
bcc +
adc #6
* jsr via_IBSOUT
* jsr JCHROUT
pla
and #$0f
ora #$30
cmp #$3A
bcc +
adc #6
* jmp via_IBSOUT
* jmp JCHROUT
-42
View File
@@ -1,42 +0,0 @@
;;
;; Helper routines for jumping via vectors, to be used with JSR
;;
;; Note: they are not in the order of low memory vectors, to avoid
;; similarity with the original ROMs
via_ISAVE:
jmp (ISAVE)
via_ILOAD:
jmp (ILOAD)
via_ICLOSE:
jmp (ICLOSE)
via_IOPEN:
jmp (IOPEN)
via_ICHKIN:
jmp (ICHKIN)
via_IBASIN:
jmp (IBASIN)
via_IGETIN:
jmp (IGETIN)
via_ICKOUT:
jmp (ICKOUT)
via_IBSOUT:
jmp (IBSOUT)
via_ICLRCH:
jmp (ICLRCH)
via_ICLALL:
jmp (ICLALL)
via_ISTOP:
jmp (ISTOP)
+15 -15
View File
@@ -4,7 +4,7 @@
wedge_dos:
;; Close all the channels, so that wedge has full control
jsr via_ICLALL
jsr JCLALL
;; Set file parameters, channel 15 is a typical one for commands
jsr select_device ; sets X register
@@ -41,11 +41,11 @@ wedge_dos_command:
jsr wedge_dos_setnam
jsr JSETNAM
jsr via_IOPEN
jsr JOPEN
bcs wedge_dos_basic_error
;; Retrieve status, print it if not OK
jsr via_ICLALL
jsr JCLALL
jsr wedge_dos_status_get
lda BUF+0
cmp #$30 ; '0'
@@ -82,12 +82,12 @@ wedge_dos_status_get:
;; Set remaining file parameters, open the channel
lda #$00 ; empty file name
jsr JSETNAM
jsr via_IOPEN
jsr JOPEN
bcs wedge_dos_basic_error
;; Set channel for input
ldx #$0F
jsr via_ICHKIN
jsr JCHKIN
bcs wedge_dos_basic_error
ldy #$00
@@ -98,7 +98,7 @@ wedge_dos_status_get:
;; XXX error in case of status != EOF
;; Print out everything retrieved from the drive
bne +
jsr via_IBASIN
jsr JCHRIN
bcs wedge_dos_basic_error
sta BUF, y
iny
@@ -118,7 +118,7 @@ wedge_dos_status_print:
dey
bmi +
lda BUF, x
jsr via_IBSOUT
jsr JCHROUT
inx
bne -
*
@@ -139,18 +139,18 @@ wedge_dos_directory:
jsr wedge_dos_setnam
;; Open the file
jsr via_IOPEN
jsr JOPEN
bcs wedge_dos_basic_error
;; Set channel for file reading
ldx #$00
jsr via_ICHKIN
jsr JCHKIN
bcs wedge_dos_basic_error
;; Ignore start address (2 first bytes) - XXX check for errors
jsr via_IBASIN
jsr JCHRIN
bcs wedge_dos_basic_error
jsr via_IBASIN
jsr JCHRIN
bcs wedge_dos_basic_error
wedge_dos_directory_line:
@@ -159,7 +159,7 @@ wedge_dos_directory_line:
ldy #$FF
*
iny
jsr via_IBASIN
jsr JCHRIN
bcs wedge_dos_basic_error
sta BUF, y
cpy #$50
@@ -199,15 +199,15 @@ wedge_dos_directory_display:
;; FALLTROUGH
wedge_dos_clean_exit:
jsr via_ICLALL
jsr JCLALL
;; Print new line
lda #$0D
jsr via_IBSOUT
jsr JCHROUT
jmp basic_end_of_line
wedge_dos_basic_error:
pha
jsr via_ICLALL
jsr JCLALL
pla
tax
dex