diff --git a/STATUS.md b/STATUS.md index 829bf221..74180053 100644 --- a/STATUS.md +++ b/STATUS.md @@ -79,7 +79,7 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on | $FF9C | MEMBOT | DONE | | | $FF9F | SCNKEY | DONE | could be better integrated with ROM | | $FFA2 | SETTMO | NOT DONE | | -| $FFA5 | ACPTR | NOT DONE | * work in progress | +| $FFA5 | ACPTR | PARTIAL | * work in progress | | $FFA8 | CIOUT | DONE | | | $FFAB | UNTLK | PARITAL | * work in progress | | $FFAE | UNLSN | DONE | | @@ -93,8 +93,8 @@ NOTE: Even the 'DONE' routines won't support features described as missing in on | $FFC6 | CHKIN | PARTIAL | * work in progress | | $FFC9 | CHKOUT | PARTIAL | * work in progress | | $FFCC | CLRCHN | PARTIAL | * work in progress | -| $FFCF | CHRIN | NOT DONE | * work in progress | -| $FFD2 | CHROUT | NOT DONE | * work in progress | +| $FFCF | CHRIN | PARTIAL | | +| $FFD2 | CHROUT | PARTIAL | | | $FFD5 | LOAD | PARTIAL | no VERIFY support yet | | $FFD8 | SAVE | NOT DONE | * work in progress | | $FFDB | SETTIM | NOT DONE | | diff --git a/c64/aliases/,aliases_ram_lowmem.s b/c64/aliases/,aliases_ram_lowmem.s index 60c67bb4..c0a88d1d 100644 --- a/c64/aliases/,aliases_ram_lowmem.s +++ b/c64/aliases/,aliases_ram_lowmem.s @@ -81,7 +81,7 @@ .alias ICKOUT $320 .alias ICLRCH $322 .alias IBASIN $324 - .alias IBASOUT $326 + .alias IBSOUT $326 .alias ISTOP $328 .alias IGETIN $32A .alias ICLALL $32C diff --git a/c64/basic/ab1e.print_string.s b/c64/basic/ab1e.print_string.s index 0ea252a3..83f8d366 100644 --- a/c64/basic/ab1e.print_string.s +++ b/c64/basic/ab1e.print_string.s @@ -20,7 +20,7 @@ print_string_loop: lda (temp_string_ptr),y beq print_string_end - jsr JCHROUT + jsr via_IBSOUT txa tay diff --git a/c64/basic/basic_cold_start.s b/c64/basic/basic_cold_start.s index 341e0909..325bd1ed 100644 --- a/c64/basic/basic_cold_start.s +++ b/c64/basic/basic_cold_start.s @@ -29,7 +29,7 @@ startup_banner: jsr print_integer lda #$20 - jsr JCHROUT + jsr via_IBSOUT ;; Print the rest of the start up message ldx #34 diff --git a/c64/basic/basic_do_error.s b/c64/basic/basic_do_error.s index 731f99c2..92d7e46d 100644 --- a/c64/basic/basic_do_error.s +++ b/c64/basic/basic_do_error.s @@ -7,9 +7,9 @@ basic_do_error: ;; Print ? at start lda #$0d - jsr JCHROUT + jsr via_IBSOUT lda #$3f - jsr JCHROUT + jsr via_IBSOUT ;; Print main part of error message pla @@ -18,7 +18,7 @@ basic_do_error: ;; Print ERROR at end lda #$20 - jsr JCHROUT + jsr via_IBSOUT 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 JCHROUT + jsr via_IBSOUT lda #$0d - jsr JCHROUT + jsr via_IBSOUT ;; Reset stack, and go back to main loop ldx #$fe diff --git a/c64/basic/basic_main_loop.s b/c64/basic/basic_main_loop.s index 69e12c9d..2d7afdd6 100644 --- a/c64/basic/basic_main_loop.s +++ b/c64/basic/basic_main_loop.s @@ -52,7 +52,7 @@ rsl_l1: lda $0200,x * ;; Do printing of the new line lda #$0d - jsr JCHROUT + jsr via_IBSOUT ;; Ignore empty lines lda tokenise_work1 diff --git a/c64/basic/cmd_break.s b/c64/basic/cmd_break.s index 36128422..31194132 100644 --- a/c64/basic/cmd_break.s +++ b/c64/basic/cmd_break.s @@ -17,7 +17,7 @@ basic_do_break: * lda #$0d - jsr JCHROUT + jsr via_IBSOUT cmd_end: jmp basic_main_loop diff --git a/c64/basic/cmd_list.s b/c64/basic/cmd_list.s index d58af209..13038f54 100644 --- a/c64/basic/cmd_list.s +++ b/c64/basic/cmd_list.s @@ -36,7 +36,7 @@ list_more_lines: pla jsr print_integer lda #$20 - jsr JCHROUT + jsr via_IBSOUT ;; Iterate through printing out the line ;; contents @@ -105,17 +105,17 @@ list_not_rem: bne list_print_loop list_is_literal: - jsr JCHROUT + jsr via_IBSOUT iny bne list_print_loop list_end_of_line: ;; Clear reverse flag lda #$92 - jsr JCHROUT + jsr via_IBSOUT ;; Print end of line lda #$0d - jsr JCHROUT + jsr via_IBSOUT ;; Now link to the next line jsr basic_find_next_line diff --git a/c64/basic/print_integer.s b/c64/basic/print_integer.s index f5d93fa7..7e897243 100644 --- a/c64/basic/print_integer.s +++ b/c64/basic/print_integer.s @@ -115,7 +115,7 @@ found_start_of_number: ;; Print digits * lda $0100,y ora #$30 - jsr JCHROUT + jsr via_IBSOUT iny cpy #5 bne - diff --git a/c64/basic/print_packed_message.s b/c64/basic/print_packed_message.s index 006bf70e..7aac0876 100644 --- a/c64/basic/print_packed_message.s +++ b/c64/basic/print_packed_message.s @@ -38,7 +38,7 @@ found_message_in_token_stream: beq + jsr print_packed_word lda #$20 - jsr JCHROUT + jsr via_IBSOUT pla tay iny @@ -47,7 +47,7 @@ found_message_in_token_stream: pla ;; Rub out space at the end lda #$14 - jsr JCHROUT + jsr via_IBSOUT 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 JCHROUT + jsr via_IBSOUT ;; 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 JCHROUT + jsr via_IBSOUT * pla tay @@ -207,7 +207,7 @@ unpack_literal_char: tya pha lda (temp_string_ptr),y - jsr JCHROUT + jsr via_IBSOUT pla tay rts diff --git a/c64/basic/printf.s b/c64/basic/printf.s index ceb4337b..85fa0cf8 100644 --- a/c64/basic/printf.s +++ b/c64/basic/printf.s @@ -112,7 +112,7 @@ not_hexword: not_pointer: ;; Print character - jsr JCHROUT + jsr via_IBSOUT printf_nextchar: jsr printf_advance @@ -148,11 +148,11 @@ printf_printhexbyte: cmp #$3A bcc + adc #6 -* jsr JCHROUT +* jsr via_IBSOUT pla and #$0f ora #$30 cmp #$3A bcc + adc #6 -* jmp JCHROUT +* jmp via_IBSOUT diff --git a/c64/basic/via_vector.s b/c64/basic/via_vector.s index d17e36a5..e6a0be1a 100644 --- a/c64/basic/via_vector.s +++ b/c64/basic/via_vector.s @@ -21,8 +21,8 @@ via_ICLRCH: via_IBASIN: jmp (IBASIN) -via_IBASOUT: - jmp (IBASOUT) +via_IBSOUT: + jmp (IBSOUT) via_ISTOP: jmp (ISTOP) diff --git a/c64/basic/wedge_dos.s b/c64/basic/wedge_dos.s index 1c7726ec..172c50e1 100644 --- a/c64/basic/wedge_dos.s +++ b/c64/basic/wedge_dos.s @@ -55,9 +55,10 @@ wedge_dos_command: jsr JREADST ; retrieve errors ;; XXX error in case of status != 0 * + ;; XXX this loop does not seem to work, check it jsr basic_fetch_and_consume_character beq + - jsr JCHROUT + jsr via_IBSOUT ;; XXX check errors here jmp - * @@ -100,13 +101,16 @@ wedge_dos_status: * jsr JREADST ; retrieve errors ;; XXX error in case of status != 0 -* ;; Print out everything retrieved from the drive bne + - jsr JCHRIN - jsr JCHROUT + jsr via_IBASIN + jsr via_IBSOUT jmp - * + ;; Print new line + lda #$0D + jsr via_IBSOUT + ;; Clean-up and exit jmp wedge_dos_clean_exit diff --git a/c64/kernal/acptr.s b/c64/kernal/acptr.s index b6fd88be..028233c2 100644 --- a/c64/kernal/acptr.s +++ b/c64/kernal/acptr.s @@ -8,5 +8,10 @@ ;; CPU registers that has to be preserved (see [RG64]): .Y ;; +;; XXX preserve register Y! + acptr: - rts + ;; XXX temporary implementation + jsr kernalstatus_reset + jmp iec_rx_byte + diff --git a/c64/kernal/vector.s b/c64/kernal/vector.s index c0ad2d58..5fb49426 100644 --- a/c64/kernal/vector.s +++ b/c64/kernal/vector.s @@ -79,7 +79,7 @@ vector_defaults: .word ckout ;; ICKOUT .word clrchn ;; ICLRCH .word chrin ;; IBASIN - .word chrout ;; IBASOUT + .word chrout ;; IBSOUT .word stop ;; ISTOP .word getin ;; IGETIN .word clall ;; ICLALL