DOS Wedge nowv asks for confirmation on dangerous commands, updated binaries

This commit is contained in:
FeralChild64 committed 2020-07-12 16:50:11 +02:00
1 parent 8e65db666d
commit f3803fb0db
8 files changed
+63 -6

No files matched your search

+63 -5
View File
@@ -51,6 +51,52 @@ wedge_dos:
wedge_dos_command:
// Check if command needs confirmation
ldy #$00
lda (TXTPTR), y
cmp #$52 // 'R' - because 'RD' is a directory removal command
bne !+
iny
lda (TXTPTR), y
cmp #$44 // 'D'
bne wedge_dos_command_confirmed
beq wedge_dos_command_ask
!:
cmp #$4E // 'N' - for the disk format
beq !+
cmp #$53 // 'S' - for the file scratch
bne wedge_dos_command_confirmed
!:
// This is probably a dangerous command - check further the syntax,
// if 'N:', 'S:', 'Nx:' or 'Sx:' (where 'x' is a digit) - ask for confirmation first
iny
lda (TXTPTR), y
cmp #$3A // ':' - colon
beq wedge_dos_command_ask
jsr is_09
bcs wedge_dos_command_confirmed
iny
lda (TXTPTR), y
cmp #$3A // ':' - colon
bne wedge_dos_command_confirmed
// FALLTROUGH
wedge_dos_command_ask:
jsr helper_ask_if_sure
bcs_16 wedge_dos_clean_exit
// FALLTROUGH
wedge_dos_command_confirmed:
// Provide command name
jsr wedge_dos_setnam
@@ -62,14 +108,13 @@ wedge_dos_command:
// Retrieve status, print it if not OK
jsr JCLALL
jsr wedge_dos_status_get
jsr wedge_dos_status_get_no_new_line
lda BUF+0
cmp #$30 // '0'
bne wedge_dos_status_print
lda BUF+1
cmp #$30 // '0'
eor BUF+1
bne wedge_dos_status_print
// Clean-up and exit
@@ -103,6 +148,10 @@ wedge_dos_status_get:
jsr print_return
// FALLTROUGH
wedge_dos_status_get_no_new_line:
// Here the flow is mostly the same as in the example from
// https://codebase64.org/doku.php?id=base:reading_the_error_channel_of_a_disk_drive
@@ -158,10 +207,19 @@ wedge_dos_status_get_done:
wedge_dos_status:
jsr wedge_dos_status_get
#if HAS_OPCODES_65C02
bra wedge_dos_status_print_no_new_line
#else
jmp wedge_dos_status_print_no_new_line
#endif
wedge_dos_status_print:
jsr print_return
// FALLTROUGH
wedge_dos_status_print:
wedge_dos_status_print_no_new_line:
// Print buffered status
@@ -205,7 +263,7 @@ wedge_dos_directory:
bcs wedge_dos_basic_error
// Ignore start address (2 first bytes) - XXX check for errors
jsr JCHRIN
bcs wedge_dos_basic_error
jsr JCHRIN