From e9b3bb42f86f2e0ce52f1b543030d263fb2e87e2 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Sat, 15 Jun 2019 13:14:35 +0200 Subject: [PATCH] implemented READST routine --- c64/basic/,aliases.s | 4 +++- c64/kernal/,aliases.s | 4 +++- c64/kernal/readst.s | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/c64/basic/,aliases.s b/c64/basic/,aliases.s index e91993c0..59fddba5 100644 --- a/c64/basic/,aliases.s +++ b/c64/basic/,aliases.s @@ -58,7 +58,8 @@ .alias BUCKYSTATUS $91 .alias load_or_verify_flag $93 .alias current_file_num $98 - .alias input_device_number $99 + .alias DFLTN $99 + .alias input_device_number DFLTN ; bit 6 = error messages, bit 7 = control messages .alias kernal_message_control_flags $9d .alias jiffy_clock_24bits $a0 @@ -131,6 +132,7 @@ .alias keyboard_decoding_ptr $028F .alias enable_case_switch $0291 .alias screen_scroll_disable $0292 + .alias RSSTAT $0297 ; RS-232 status .alias pal_or_ntsc $02A6 ;; Registers for SYS call diff --git a/c64/kernal/,aliases.s b/c64/kernal/,aliases.s index 8acaed6e..be1a53d2 100644 --- a/c64/kernal/,aliases.s +++ b/c64/kernal/,aliases.s @@ -9,7 +9,8 @@ .alias BUCKYSTATUS $91 .alias kernal_load_or_verify_flag $93 .alias current_file_num $98 - .alias input_device_number $99 + .alias DFLTN $99 + .alias input_device_number DFLTN ; bit 6 = error messages, bit 7 = control messages .alias kernal_message_control_flags $9d .alias jiffy_clock_24bits $a0 @@ -79,6 +80,7 @@ .alias keyboard_decoding_ptr $028F .alias enable_case_switch $0291 .alias screen_scroll_disable $0292 + .alias RSSTAT $0297 ; RS-232 status .alias pal_or_ntsc $02A6 ;; Kernal vectors - interrupts diff --git a/c64/kernal/readst.s b/c64/kernal/readst.s index 28139f1b..e8e0f164 100644 --- a/c64/kernal/readst.s +++ b/c64/kernal/readst.s @@ -1,3 +1,22 @@ ; Function defined on pp272-273 of C64 Programmers Reference Guide + readst: + + ;; Check the current device number + + lda DFLTN + cmp #$02 + bne + + + ;; This is RS-232 device - according to 'Compute's Mapping the Commodore 64' page 239 + ;; it reads status from RSSTAT + lda RSSTAT + rts +* + ;; According to 'Compute's Mapping the Commodore 64' page 239, it usually retrieves + ;; status from IOSTATUS + + ;; XXX is it always the case if device is not RS-232 ? + + lda IOSTATUS rts