mirror of
https://github.com/gungwald/prodos-more.git
synced 2025-01-12 06:29:57 +00:00
Added error messages
This commit is contained in:
parent
d564d8d7dd
commit
903b810f1b
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,4 @@
|
|||||||
MORE
|
MORE
|
||||||
MORE.dsk
|
MORE.dsk
|
||||||
_FileInformation.txt
|
_FileInformation.txt
|
||||||
|
*.swp
|
||||||
|
310
more.S
310
more.S
@ -31,7 +31,7 @@ FREEBUFR EQU $BEF8 ;FREE BUFFER
|
|||||||
|
|
||||||
* PRODOS ENTRY POINT
|
* PRODOS ENTRY POINT
|
||||||
|
|
||||||
PRODOS EQU $BF00 ;MACHINE LANG IFACE (MLI)
|
PRODOS_MLI EQU $BF00 ;MACHINE LANG IFACE (MLI)
|
||||||
|
|
||||||
* MEMORY LOCATIONS
|
* MEMORY LOCATIONS
|
||||||
*
|
*
|
||||||
@ -60,8 +60,8 @@ BUFSIZE .EQ $00FF
|
|||||||
SCR.HGHT .EQ 24 ;SCREEN HEIGHT
|
SCR.HGHT .EQ 24 ;SCREEN HEIGHT
|
||||||
*
|
*
|
||||||
* DEBUGGING
|
* DEBUGGING
|
||||||
*
|
|
||||||
TRACE .EQ 0
|
TRACE EQU 1
|
||||||
|
|
||||||
********************************
|
********************************
|
||||||
* *
|
* *
|
||||||
@ -169,30 +169,38 @@ MAIN CLD ;CLEAR DECIMAL FLG, AVOID CRASH
|
|||||||
>PUTS PROMPT
|
>PUTS PROMPT
|
||||||
JSR GETLN1 ;LENGTH IN X, CR AT END
|
JSR GETLN1 ;LENGTH IN X, CR AT END
|
||||||
CPX #0 ;IS THE LENGTH ZERO?
|
CPX #0 ;IS THE LENGTH ZERO?
|
||||||
BNE CONT1 ;USER JUST PRESSED RETURN
|
BNE :CONT1 ;USER JUST PRESSED RETURN
|
||||||
JMP :END
|
JMP END
|
||||||
CONT1 CPIN FILENAME ;COPY "IN" BUF TO FILENAME
|
:CONT1 CPIN FILENAME ;COPY "IN" BUF TO FILENAME
|
||||||
|
|
||||||
|
DO TRACE
|
||||||
|
JSR PRSTRBYTES
|
||||||
|
JSR GETLN
|
||||||
|
FIN
|
||||||
*
|
*
|
||||||
* GET FILE I/O BUFFER FOR OPEN CALL
|
* GET FILE I/O BUFFER FOR OPEN CALL
|
||||||
*
|
*
|
||||||
LDA #4 ;FOUR 256 BYTE PAGES = 1KB
|
LDA #4 ;FOUR 256 BYTE PAGES = 1KB
|
||||||
JSR GETBUFR ;GET BUF FROM BASIC.SYSTEM
|
JSR GETBUFR ;GET BUF FROM BASIC.SYSTEM
|
||||||
BCC CONT2
|
BCC :CONT2 ;CARRY CLEAR MEANS NO ERROR
|
||||||
JMP :OBUFERR ;CARRY CLEAR MEANS NO ERROR
|
JSR OBUFERR
|
||||||
CONT2 STA OBUFADDR+1 ;GETBUFR RETURNS HIBYTE IN A
|
JMP END
|
||||||
|
:CONT2 STA OBUFADDR+1 ;GETBUFR RETURNS HIBYTE IN A
|
||||||
LDA #0 ;PREPARE
|
LDA #0 ;PREPARE
|
||||||
STA OBUFADDR ;LOBYTE IS 0 B/C ADDR OF PAGE
|
STA OBUFADDR ;LOBYTE IS 0 B/C ADDR OF PAGE
|
||||||
*
|
*
|
||||||
* OPEN FILE
|
* OPEN FILE
|
||||||
*
|
*
|
||||||
JSR PRODOS
|
JSR PRODOS_MLI
|
||||||
DB OPENCMD
|
DB OPENCMD
|
||||||
DA OPENPRMS
|
DA OPENPRMS
|
||||||
BNE :OPENERR
|
BEQ CONT3
|
||||||
|
JSR OPENERR
|
||||||
|
JMP :FREEOBUF
|
||||||
*
|
*
|
||||||
* COPY FILE NUMBER FROM OPEN PARAMETERS TO READ AND CLOSE
|
* COPY FILE NUMBER FROM OPEN PARAMETERS TO READ AND CLOSE
|
||||||
*
|
*
|
||||||
LDA OPENFNUM
|
CONT3 LDA OPENFNUM
|
||||||
STA READFNUM
|
STA READFNUM
|
||||||
STA CLOSFNUM
|
STA CLOSFNUM
|
||||||
*
|
*
|
||||||
@ -200,8 +208,10 @@ CONT2 STA OBUFADDR+1 ;GETBUFR RETURNS HIBYTE IN A
|
|||||||
*
|
*
|
||||||
LDA #1 ;ONE 256 BYTE BUFFER
|
LDA #1 ;ONE 256 BYTE BUFFER
|
||||||
JSR GETBUFR ;CALL BASIC.SYSTEM SUB
|
JSR GETBUFR ;CALL BASIC.SYSTEM SUB
|
||||||
BCS :RBUFERR ;CARRY SET MEANS ERROR
|
BCC CONT4
|
||||||
STA RBADDR+1 ;STORE HI-BYTE
|
JSR RBUFERR ;CARRY SET MEANS ERROR
|
||||||
|
JMP :CLOSFILE
|
||||||
|
CONT4 STA RBADDR+1 ;STORE HI-BYTE
|
||||||
STA ZP_A1H ;FOR 0-PAGE INDIRECTION
|
STA ZP_A1H ;FOR 0-PAGE INDIRECTION
|
||||||
LDA #0 ;0 FOR LO-BYTE
|
LDA #0 ;0 FOR LO-BYTE
|
||||||
STA RBADDR ;STORE IT
|
STA RBADDR ;STORE IT
|
||||||
@ -214,16 +224,30 @@ CONT2 STA OBUFADDR+1 ;GETBUFR RETURNS HIBYTE IN A
|
|||||||
* CLEANUP
|
* CLEANUP
|
||||||
*
|
*
|
||||||
JSR FREEBUFR ;FREE READ BUFFER
|
JSR FREEBUFR ;FREE READ BUFFER
|
||||||
JMP :CLOSFILE ;SKIP OVER READ BUF ERR HANDLER
|
|
||||||
|
|
||||||
:RBUFERR JSR ERRPROC ;HANDLE ERR GETTING READ BUF
|
:CLOSFILE JSR PRODOS_MLI ;CLOSE THE FILE
|
||||||
|
|
||||||
:CLOSFILE JSR PRODOS ;CLOSE THE FILE
|
|
||||||
DB CLOSCMD
|
DB CLOSCMD
|
||||||
DA CLOSPRMS
|
DA CLOSPRMS
|
||||||
BEQ :FREEOBUF
|
BEQ :FREEOBUF
|
||||||
|
JSR CLOSERR
|
||||||
|
|
||||||
:OPENERR STA ERRCODE
|
:FREEOBUF JSR FREEBUFR ;FREE OPEN I/O BUFFER
|
||||||
|
END NOP
|
||||||
|
RTS
|
||||||
|
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* END OF MAIN - PROGRAM EXIT *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* HANDLE ERROR WHEN OPENING *
|
||||||
|
* FILE *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
OPENERR STA ERRCODE
|
||||||
PUTS OERRMSG
|
PUTS OERRMSG
|
||||||
PUTS FILENAME
|
PUTS FILENAME
|
||||||
LDA #"'"
|
LDA #"'"
|
||||||
@ -232,12 +256,101 @@ CONT2 STA OBUFADDR+1 ;GETBUFR RETURNS HIBYTE IN A
|
|||||||
JSR COUT
|
JSR COUT
|
||||||
LDA ERRCODE
|
LDA ERRCODE
|
||||||
JSR ERRPROC
|
JSR ERRPROC
|
||||||
:FREEOBUF JSR FREEBUFR ;FREE OPEN I/O BUFFER
|
|
||||||
JMP :END
|
|
||||||
:OBUFERR JSR ERRPROC
|
|
||||||
:END NOP
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* HANDLE ERROR WHEN CLOSING *
|
||||||
|
* FILE *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
CLOSERR STA ERRCODE
|
||||||
|
PUTS CERRMSG
|
||||||
|
PUTS FILENAME
|
||||||
|
LDA #"'"
|
||||||
|
JSR COUT
|
||||||
|
LDA #":"
|
||||||
|
JSR COUT
|
||||||
|
LDA ERRCODE
|
||||||
|
JSR ERRPROC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* HANDLE ERROR WHEN REQUESTING *
|
||||||
|
* READ BUFFER *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
RBUFERR STA ERRCODE
|
||||||
|
PUTS RBERRMSG
|
||||||
|
LDA #":"
|
||||||
|
JSR COUT
|
||||||
|
LDA ERRCODE
|
||||||
|
JSR ERRPROC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* HANDLE ERROR WHEN REQUESTING *
|
||||||
|
* READ BUFFER *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
OBUFERR STA ERRCODE
|
||||||
|
PUTS OBERRMSG
|
||||||
|
LDA #":"
|
||||||
|
JSR COUT
|
||||||
|
LDA ERRCODE
|
||||||
|
JSR ERRPROC
|
||||||
|
RTS
|
||||||
|
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* PRINT "IN" BUFFER *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
PRINT_IN
|
||||||
|
PUSHY
|
||||||
|
LDA #"X"
|
||||||
|
JSR COUT
|
||||||
|
LDA #"="
|
||||||
|
JSR COUT
|
||||||
|
TXA
|
||||||
|
JSR PRBYTE
|
||||||
|
JSR CROUT
|
||||||
|
|
||||||
|
LDY #0
|
||||||
|
:LOOP CPY #255
|
||||||
|
BEQ :ENDLOOP
|
||||||
|
LDA IN,Y
|
||||||
|
JSR PRBYTE
|
||||||
|
LDA #" "
|
||||||
|
JSR COUT
|
||||||
|
INY
|
||||||
|
JMP :LOOP
|
||||||
|
:ENDLOOP JSR CROUT
|
||||||
|
POPY
|
||||||
|
RTS
|
||||||
|
|
||||||
|
********************************
|
||||||
|
* *
|
||||||
|
* PRINT STRING BYTES *
|
||||||
|
* *
|
||||||
|
********************************
|
||||||
|
PRSTRBYTES
|
||||||
|
PUSHY
|
||||||
|
LDY #0
|
||||||
|
:LOOP CPY #255
|
||||||
|
BEQ :ENDLOOP
|
||||||
|
LDA FILENAME,Y
|
||||||
|
JSR PRBYTE
|
||||||
|
LDA #" "
|
||||||
|
JSR COUT
|
||||||
|
INY
|
||||||
|
JMP :LOOP
|
||||||
|
:ENDLOOP JSR CROUT
|
||||||
|
POPY
|
||||||
|
RTS
|
||||||
|
|
||||||
********************************
|
********************************
|
||||||
* *
|
* *
|
||||||
* VIEW FILE SUB *
|
* VIEW FILE SUB *
|
||||||
@ -250,7 +363,7 @@ VIEWFILE
|
|||||||
FIN
|
FIN
|
||||||
|
|
||||||
SET1 LINENUM ;INIT LINE NUMBER
|
SET1 LINENUM ;INIT LINE NUMBER
|
||||||
:LOOP JSR PRODOS ;CALL PRODOS TO READ FILE
|
:LOOP JSR PRODOS_MLI ;CALL PRODOS TO READ FILE
|
||||||
DB READCMD ;SPECIFY PRODOS READ COMMAND
|
DB READCMD ;SPECIFY PRODOS READ COMMAND
|
||||||
DA READPRMS ;READ PARAMETERS
|
DA READPRMS ;READ PARAMETERS
|
||||||
BNE :READERR
|
BNE :READERR
|
||||||
@ -298,7 +411,7 @@ WRITEBUF
|
|||||||
.3 >POPY
|
.3 >POPY
|
||||||
|
|
||||||
DO TRACE
|
DO TRACE
|
||||||
>PUTS EXVIEW
|
PUTS EXWRITEBUF
|
||||||
FIN
|
FIN
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
@ -393,14 +506,105 @@ ERASEBAR
|
|||||||
ERRPROC
|
ERRPROC
|
||||||
STA ERRCODE
|
STA ERRCODE
|
||||||
CMP #0
|
CMP #0
|
||||||
BEQ :NOERR
|
BNE :EEOF
|
||||||
CMP #EOFERR
|
JMP :END
|
||||||
BEQ :NOERR
|
:EEOF CMP #EOFERR
|
||||||
PUTS ERRTXT
|
BNE :E01
|
||||||
|
JMP :END
|
||||||
|
:E01 CMP #1
|
||||||
|
BNE :E04
|
||||||
|
PUTS E01MSG
|
||||||
|
:E04 CMP #4
|
||||||
|
BNE :E25
|
||||||
|
PUTS E04MSG
|
||||||
|
:E25 CMP #$25
|
||||||
|
BNE :E27
|
||||||
|
PUTS E25MSG
|
||||||
|
:E27 CMP #$27
|
||||||
|
BNE :E28
|
||||||
|
PUTS E27MSG
|
||||||
|
:E28 CMP #$28
|
||||||
|
BNE :E2B
|
||||||
|
PUTS E28MSG
|
||||||
|
:E2B CMP #$2B
|
||||||
|
BNE :E2E
|
||||||
|
PUTS E2BMSG
|
||||||
|
:E2E CMP #$2E
|
||||||
|
BNE :E40
|
||||||
|
PUTS E2EMSG
|
||||||
|
:E40 CMP #$40
|
||||||
|
BNE :E42
|
||||||
|
PUTS E40MSG
|
||||||
|
:E42 CMP #$42
|
||||||
|
BNE :E43
|
||||||
|
PUTS E42MSG
|
||||||
|
:E43 CMP #$43
|
||||||
|
BNE :E44
|
||||||
|
PUTS E43MSG
|
||||||
|
:E44 CMP #$44
|
||||||
|
BNE :E45
|
||||||
|
PUTS E44MSG
|
||||||
|
:E45 CMP #$45
|
||||||
|
BNE :E46
|
||||||
|
PUTS E45MSG
|
||||||
|
:E46 CMP #$46
|
||||||
|
BNE :E47
|
||||||
|
PUTS E46MSG
|
||||||
|
:E47 CMP #$47
|
||||||
|
BNE :E48
|
||||||
|
PUTS E47MSG
|
||||||
|
:E48 CMP #$48
|
||||||
|
BNE :E49
|
||||||
|
PUTS E48MSG
|
||||||
|
:E49 CMP #$49
|
||||||
|
BNE :E4A
|
||||||
|
PUTS E49MSG
|
||||||
|
:E4A CMP #$4A
|
||||||
|
BNE :E4B
|
||||||
|
PUTS E4AMSG
|
||||||
|
:E4B CMP #$4B
|
||||||
|
BNE :E4C
|
||||||
|
PUTS E4BMSG
|
||||||
|
:E4C CMP #$4C
|
||||||
|
BNE :E4D
|
||||||
|
PUTS E4CMSG
|
||||||
|
:E4D CMP #$4D
|
||||||
|
BNE :E4E
|
||||||
|
PUTS E4DMSG
|
||||||
|
:E4E CMP #$4E
|
||||||
|
BNE :E50
|
||||||
|
PUTS E4EMSG
|
||||||
|
:E50 CMP #$50
|
||||||
|
BNE :E51
|
||||||
|
PUTS E50MSG
|
||||||
|
:E51 CMP #$51
|
||||||
|
BNE :E52
|
||||||
|
PUTS E51MSG
|
||||||
|
:E52 CMP #$52
|
||||||
|
BNE :E53
|
||||||
|
PUTS E52MSG
|
||||||
|
:E53 CMP #$53
|
||||||
|
BNE :E55
|
||||||
|
PUTS E53MSG
|
||||||
|
:E55 CMP #$55
|
||||||
|
BNE :E56
|
||||||
|
PUTS E55MSG
|
||||||
|
:E56 CMP #$56
|
||||||
|
BNE :E57
|
||||||
|
PUTS E56MSG
|
||||||
|
:E57 CMP #$57
|
||||||
|
BNE :E5A
|
||||||
|
PUTS E57MSG
|
||||||
|
:E5A CMP #$5A
|
||||||
|
BNE :E_UNK
|
||||||
|
PUTS E5AMSG
|
||||||
|
JMP :END
|
||||||
|
:E_UNK PUTS E_UNK_MSG
|
||||||
|
LDA #":"
|
||||||
|
JSR COUT
|
||||||
LDA ERRCODE
|
LDA ERRCODE
|
||||||
JSR PRBYTE
|
JSR PRBYTE
|
||||||
JSR CROUT
|
:END JSR CROUT
|
||||||
:NOERR NOP
|
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
********************************
|
********************************
|
||||||
@ -412,23 +616,53 @@ ERRPROC
|
|||||||
PROMPT STR "FILE:"
|
PROMPT STR "FILE:"
|
||||||
ERRTXT STR "ERROR:"
|
ERRTXT STR "ERROR:"
|
||||||
FILENAME DS $FF
|
FILENAME DS $FF
|
||||||
HERE STR "HERE"
|
|
||||||
HERE2 STR "HERE2"
|
|
||||||
READRET STR "READRET="
|
|
||||||
SREADCNT STR "READCNT="
|
|
||||||
ERRCODE DS 1
|
ERRCODE DS 1
|
||||||
READERR DS 1
|
|
||||||
CLOSERR DS 1
|
|
||||||
LINENUM DS 1
|
LINENUM DS 1
|
||||||
BAR STR '[RET] LINE [SPC] PAGE [Q]UIT'
|
BAR STR '[RET] LINE [SPC] PAGE [Q]UIT'
|
||||||
USRQUIT DS 1
|
USRQUIT DS 1
|
||||||
BUFCHAR DS 1
|
BUFCHAR DS 1
|
||||||
USRCHAR DS 1
|
USRCHAR DS 1
|
||||||
|
|
||||||
OERRMSG STR "FAILED TO OPEN FILE '"
|
OERRMSG STR "FAILED TO OPEN FILE '"
|
||||||
|
CERRMSG STR "FAILED TO CLOSE FILE '"
|
||||||
|
RBERRMSG STR "REQUEST FOR READ BUFFER FAILED"
|
||||||
|
OBERRMSG STR "REQUEST FOR OPEN BUFFER FAILED"
|
||||||
|
|
||||||
|
E00MSG STR "NO ERROR"
|
||||||
|
E01MSG STR "BAD SYSTEM CALL NUMBER"
|
||||||
|
E04MSG STR "BAD SYSTEM CALL PARAMETER COUNT"
|
||||||
|
E25MSG STR "INTERRUPT TABLE FULL"
|
||||||
|
E27MSG STR "I/O ERROR"
|
||||||
|
E28MSG STR "NO DEVICE CONNECTED"
|
||||||
|
E2BMSG STR "DISK WRITE PROTECTED"
|
||||||
|
E2EMSG STR "DISK SWITCHED"
|
||||||
|
E40MSG STR "INVALID PATHNAME"
|
||||||
|
E42MSG STR "MAXIMUM NUMBER OF FILES OPEN"
|
||||||
|
E43MSG STR "INVALID REFERENCE NUMBER"
|
||||||
|
E44MSG STR "DIRECTORY NOT FOUND"
|
||||||
|
E45MSG STR "VOLUME NOT FOUND"
|
||||||
|
E46MSG STR "FILE NOT FOUND"
|
||||||
|
E47MSG STR "DUPLICATE FILENAME"
|
||||||
|
E48MSG STR "VOLUME FULL"
|
||||||
|
E49MSG STR "VOLUME DIRECTORY FULL"
|
||||||
|
E4AMSG STR "INCOMPATIBLE FILE FORMAT OR PRODOS DIRECTORY"
|
||||||
|
E4BMSG STR "UNSUPPORTED STORAGE TYPE"
|
||||||
|
E4CMSG STR "END OF FILE ENCOUNTERED"
|
||||||
|
E4DMSG STR "POSITION OUT OF RANGE"
|
||||||
|
E4EMSG STR "FILE ACCESS ERROR OR FILE LOCKED"
|
||||||
|
E50MSG STR "FILE IS OPEN"
|
||||||
|
E51MSG STR "DIRECTORY STRUCTURE DAMAGED"
|
||||||
|
E52MSG STR "NOT A PRODOS VOLUME"
|
||||||
|
E53MSG STR "INVALID SYSTEM CALL PARAMETER"
|
||||||
|
E55MSG STR "VOLUME CONTROL BLOCK TABLE FULL"
|
||||||
|
E56MSG STR "BAD BUFFER ADDRESS"
|
||||||
|
E57MSG STR "DUPLICATE VOLUME"
|
||||||
|
E5AMSG STR "FILE STRUCTURE DAMAGED"
|
||||||
|
E_UNK_MSG STR "UNKNOWN ERROR CODE"
|
||||||
|
|
||||||
ENVIEW STR 'ENTERING VIEWFILE'
|
ENVIEW STR 'ENTERING VIEWFILE'
|
||||||
EXVIEW STR 'EXITING VIEWFILE'
|
EXVIEW STR 'EXITING VIEWFILE'
|
||||||
|
EXWRITEBUF STR 'EXITING WRITEBUF'
|
||||||
ENSTATB STR 'ENTERING STATUSBAR'
|
ENSTATB STR 'ENTERING STATUSBAR'
|
||||||
EXSTATB STR 'EXITING STATUSBAR'
|
EXSTATB STR 'EXITING STATUSBAR'
|
||||||
ENERASEB STR 'ENTERING ERASEBAR'
|
ENERASEB STR 'ENTERING ERASEBAR'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user