Added *DUMP (hexdump) command.
This commit is contained in:
parent
271fb3ed58
commit
90caff7374
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
|
@ -205,7 +205,7 @@ BYTE00 BEQ BYTE00A ; OSBYTE 0,0 - generate error
|
|||
RTS ; %000x1xxx host type, 'A'pple
|
||||
BYTE00A BRK
|
||||
DB $F7
|
||||
HELLO ASC 'Applecorn MOS 2022-09-20'
|
||||
HELLO ASC 'Applecorn MOS 2022-09-22'
|
||||
DB $00 ; Unify MOS messages
|
||||
|
||||
|
||||
|
|
130
auxmem.oscli.s
130
auxmem.oscli.s
|
@ -72,6 +72,9 @@ CMDTABLE ASC 'CAT' ; Must be first command so matches '*.'
|
|||
ASC 'TYPE'
|
||||
DB $80
|
||||
DW TYPE-1 ; TYPE -> (LPTR)=>params
|
||||
ASC 'DUMP'
|
||||
DB $80
|
||||
DW DUMP-1 ; DUMP -> (LPTR)=>params
|
||||
ASC 'SPOOL'
|
||||
DB $80
|
||||
DW SPOOL-1 ; EXEC -> (LPTR)=>params
|
||||
|
@ -538,8 +541,10 @@ TYPE JSR LPTRtoXY
|
|||
TAY ; File handle in Y
|
||||
:L1 JSR BGETHND ; Read a byte
|
||||
BCS :CLOSE ; EOF
|
||||
CMP #$0A ; Don't print LF
|
||||
BEQ :S1
|
||||
JSR OSASCI ; Print the character
|
||||
LDA ESCFLAG
|
||||
:S1 LDA ESCFLAG
|
||||
BMI :ESC
|
||||
BRA :L1
|
||||
:CLOSE LDA #$00
|
||||
|
@ -561,6 +566,129 @@ TYPE JSR LPTRtoXY
|
|||
BRK
|
||||
|
||||
|
||||
* Handle *DUMP command
|
||||
* LPTR=>parameters string
|
||||
*
|
||||
DUMP JSR LPTRtoXY
|
||||
PHX
|
||||
PHY
|
||||
JSR XYtoLPTR
|
||||
JSR PARSLPTR ; Just for error handling
|
||||
BEQ :SYNTAX ; No filename
|
||||
PLY
|
||||
PLX
|
||||
LDA #$40 ; Open for input
|
||||
JSR FINDHND ; Try to open file
|
||||
CMP #$00 ; Was file opened?
|
||||
BEQ :NOTFOUND
|
||||
TAY ; File handle in Y
|
||||
STZ DUMPOFF
|
||||
STZ DUMPOFF+1
|
||||
:L1 JSR BGETHND ; Read a byte
|
||||
BCS :CLOSE ; EOF
|
||||
PHA
|
||||
LDA DUMPOFF+0
|
||||
AND #$07
|
||||
BNE :INC
|
||||
LDA DUMPOFF+1 ; Print file offset
|
||||
JSR PRHEXBYTE
|
||||
LDA DUMPOFF+0
|
||||
JSR PRHEXBYTE
|
||||
LDA #' '
|
||||
JSR OSASCI
|
||||
LDX #$07
|
||||
LDA #' ' ; Clear ASCII buffer
|
||||
:L2 STA DUMPASCI,X
|
||||
DEX
|
||||
BNE :L2
|
||||
:INC INC DUMPOFF+0 ; Increment file offset
|
||||
BNE :S1
|
||||
INC DUMPOFF+1
|
||||
:S1 PLA
|
||||
STA DUMPASCI,X
|
||||
JSR PRHEXBYTE
|
||||
INX
|
||||
LDA #' '
|
||||
JSR OSASCI
|
||||
CPX #$08 ; If EOL ..
|
||||
BNE :S2
|
||||
JSR PRCHARS ; Print ASCII representation
|
||||
:S2 LDA ESCFLAG
|
||||
BMI :ESC
|
||||
BRA :L1
|
||||
:CLOSE JSR PRCHARS ; Print ASCII representation
|
||||
LDA #$00
|
||||
JSR FINDHND ; Close file
|
||||
:DONE RTS
|
||||
:SYNTAX BRK
|
||||
DB $DC
|
||||
ASC 'Syntax: DUMP <*objspec*>'
|
||||
BRK
|
||||
:NOTFOUND BRK
|
||||
DB $D6
|
||||
ASC 'Not found'
|
||||
BRK
|
||||
:ESC LDA #$00 ; Close file
|
||||
JSR FINDHND
|
||||
BRK
|
||||
DB $11
|
||||
ASC 'Escape'
|
||||
BRK
|
||||
DUMPOFF DW $0000
|
||||
DUMPASCI DS 8
|
||||
|
||||
* Print byte in A in hex format
|
||||
PRHEXBYTE PHA
|
||||
LSR A
|
||||
LSR A
|
||||
LSR A
|
||||
LSR A
|
||||
JSR PRHEXNIB
|
||||
PLA
|
||||
JSR PRHEXNIB
|
||||
RTS
|
||||
|
||||
* Print nibble in A in hex format
|
||||
PRHEXNIB AND #$0F
|
||||
CMP #10
|
||||
BPL :LETTER
|
||||
CLC
|
||||
ADC #'0'
|
||||
BRA :PRINT
|
||||
:LETTER CLC
|
||||
ADC #'A'-10
|
||||
:PRINT JSR OSASCI
|
||||
RTS
|
||||
|
||||
* Print ASCII char buffer
|
||||
* with non-printing chars shown as '.'
|
||||
PRCHARS CPX #$00
|
||||
BEQ :DONE
|
||||
CPX #$08 ; Pad final line
|
||||
BEQ :S0
|
||||
LDA #' '
|
||||
JSR OSASCI
|
||||
JSR OSASCI
|
||||
JSR OSASCI
|
||||
INX
|
||||
BRA PRCHARS
|
||||
:S0 LDX #$00
|
||||
:L2 LDA DUMPASCI,X
|
||||
CMP #$20
|
||||
BMI :NOTPRINT
|
||||
CMP #$7F
|
||||
BPL :NOTPRINT
|
||||
JSR OSASCI
|
||||
:S1 INX
|
||||
CPX #$08
|
||||
BNE :L2
|
||||
JSR OSNEWL
|
||||
LDX #$00
|
||||
:DONE RTS
|
||||
:NOTPRINT LDA #'.'
|
||||
JSR OSASCI
|
||||
BRA :S1
|
||||
|
||||
* Handle *SPOOL command
|
||||
* LPTR=>parameters string
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue