improved VECTOR/RESTOR compatibility, small DOS wedge improvements
This commit is contained in:
1 parent
d0ac49b2b6
commit
05253c3e92
3 files changed
+11
-12
No files matched your search
@@ -66,6 +66,7 @@ wedge_dos_command:
|
|||||||
!:
|
!:
|
||||||
// Retrieve status, print it if not OK
|
// Retrieve status, print it if not OK
|
||||||
jsr JCLALL
|
jsr JCLALL
|
||||||
|
jsr print_return
|
||||||
jsr wedge_dos_status_get
|
jsr wedge_dos_status_get
|
||||||
lda BUF+0
|
lda BUF+0
|
||||||
cmp #$30 // '0'
|
cmp #$30 // '0'
|
||||||
@@ -92,6 +93,7 @@ wedge_dos_change_drive:
|
|||||||
jmp do_ILLEGAL_DEVICE_NUMBER_error
|
jmp do_ILLEGAL_DEVICE_NUMBER_error
|
||||||
!:
|
!:
|
||||||
sta FA
|
sta FA
|
||||||
|
jsr print_return
|
||||||
jmp basic_end_of_line
|
jmp basic_end_of_line
|
||||||
|
|
||||||
wedge_dos_status_get:
|
wedge_dos_status_get:
|
||||||
@@ -134,8 +136,8 @@ wedge_dos_x1:
|
|||||||
|
|
||||||
wedge_dos_status:
|
wedge_dos_status:
|
||||||
|
|
||||||
jsr print_return
|
|
||||||
jsr wedge_dos_status_get
|
jsr wedge_dos_status_get
|
||||||
|
jsr print_return
|
||||||
// FALLTROUGH
|
// FALLTROUGH
|
||||||
|
|
||||||
wedge_dos_status_print:
|
wedge_dos_status_print:
|
||||||
@@ -230,8 +232,6 @@ wedge_dos_directory_display:
|
|||||||
|
|
||||||
wedge_dos_clean_exit:
|
wedge_dos_clean_exit:
|
||||||
jsr JCLALL
|
jsr JCLALL
|
||||||
// Print new line
|
|
||||||
jsr print_return
|
|
||||||
jmp basic_main_loop
|
jmp basic_main_loop
|
||||||
|
|
||||||
wedge_dos_basic_error:
|
wedge_dos_basic_error:
|
||||||
|
|||||||
@@ -30,11 +30,11 @@ hw_entry_reset:
|
|||||||
!:
|
!:
|
||||||
// Initialising IO is obviously required. Also indicated by c64 prg p269.
|
// Initialising IO is obviously required. Also indicated by c64 prg p269.
|
||||||
jsr JIOINIT
|
jsr JIOINIT
|
||||||
|
|
||||||
// Setting up the screen and testing ram is obviously required
|
// Setting up the screen and testing ram is obviously required
|
||||||
// also affirmed by p269 of c64 prg
|
// also affirmed by p269 of c64 prg
|
||||||
jsr JRAMTAS // called RANTAM on Codebase64 wiki
|
jsr JRAMTAS // called RANTAM on Codebase64 wiki
|
||||||
|
|
||||||
// Resetting IO vectors is obviously required, if we want interrupts to run
|
// Resetting IO vectors is obviously required, if we want interrupts to run
|
||||||
// also affirmed by c64 prg p269
|
// also affirmed by c64 prg p269
|
||||||
jsr JRESTOR
|
jsr JRESTOR
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
|
||||||
vector_real:
|
vector_real:
|
||||||
|
|
||||||
// Use MEMUSS as temporary storage location - checked on real C64 that this is the
|
// Use MEMUSS as temporary storage location - checked on real C64 that this is the
|
||||||
@@ -8,11 +9,11 @@ vector_real:
|
|||||||
// According to 'Compute's Mapping the Commodore 64' page 237,
|
// According to 'Compute's Mapping the Commodore 64' page 237,
|
||||||
// the CBM implementation does not disable IRQs - yet, the
|
// the CBM implementation does not disable IRQs - yet, the
|
||||||
// 'C64 Programmers Reference Guide' does not contain such
|
// 'C64 Programmers Reference Guide' does not contain such
|
||||||
// warning and does not mention any preparations needed, so...
|
// warning and does not mention any preparations needed.
|
||||||
// better safe than sorry, disable the IRQ for the duration
|
|
||||||
// of vector manipulation
|
// Initial idea was to do php, cli, ..., plp to make the routine safer,
|
||||||
php
|
// but it seems it might cause problem with initialization sequence,
|
||||||
cli
|
// as the stack might be uninitialized when this routine is called
|
||||||
|
|
||||||
// Prepare the user data pointer - strange order to reduce risk
|
// Prepare the user data pointer - strange order to reduce risk
|
||||||
// of potential similarity to the original routine
|
// of potential similarity to the original routine
|
||||||
@@ -38,6 +39,4 @@ vector_end_loop:
|
|||||||
dey
|
dey
|
||||||
bpl vector_restore
|
bpl vector_restore
|
||||||
|
|
||||||
// Restore status register (IRQ) before return
|
|
||||||
plp
|
|
||||||
rts
|
rts
|
||||||
Reference in new issue
Block a user