Finish err handling code

This commit is contained in:
Bill Chatfield 2024-02-04 02:33:02 -05:00
parent 1fbb9f7c5f
commit 2d2bae6f96

62
more.S
View File

@ -180,16 +180,17 @@ MAIN CLD ;CLEAR DECIMAL FLG, AVOID CRASH
STA OBUFADDR+1 ;GETBUFR RETURNS HIBYTE IN A 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
:OPENFILE JSR PRODOS *
* OPEN FILE
*
JSR PRODOS
DB OPENCMD DB OPENCMD
DA OPENPRMS DA OPENPRMS
BEQ :OPEN_OK BNE :OPENERR
JSR ERRPROC
JMP :FREEOBUF
* *
* COPY FILE NUMBER FROM OPEN PARAMETERS TO READ AND CLOSE * COPY FILE NUMBER FROM OPEN PARAMETERS TO READ AND CLOSE
* *
:OPEN_OK LDA OPENFNUM LDA OPENFNUM
STA READFNUM STA READFNUM
STA CLOSFNUM STA CLOSFNUM
* *
@ -197,10 +198,8 @@ MAIN CLD ;CLEAR DECIMAL FLG, AVOID CRASH
* *
LDA #1 ;ONE 256 BYTE BUFFER LDA #1 ;ONE 256 BYTE BUFFER
JSR GETBUFR ;CALL BASIC.SYSTEM SUB JSR GETBUFR ;CALL BASIC.SYSTEM SUB
BCC :RBUF_OK ;CARRY CLR MEANS NO ERROR BCS :RBUFERR ;CARRY CLR MEANS NO ERROR
JSR ERRPROC STA RBADDR+1 ;STORE HI-BYTE
JMP :CLOSFILE
:RBUF_OK STA RBADDR+1 ;STORE HI-BYTE
LDA #0 ;0 FOR LO-BYTE LDA #0 ;0 FOR LO-BYTE
STA RBADDR ;STORE IT STA RBADDR ;STORE IT
STA ZP.A1L ;AGAIN, FOR 0-PAGE INDIRECTION STA ZP.A1L ;AGAIN, FOR 0-PAGE INDIRECTION
@ -211,11 +210,16 @@ MAIN CLD ;CLEAR DECIMAL FLG, AVOID CRASH
* *
* CLEANUP * CLEANUP
* *
:FREERBUF 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 ;CLOSE THE FILE :CLOSFILE JSR PRODOS ;CLOSE THE FILE
DB CLOSCMD DB CLOSCMD
DA CLOSPRMS DA CLOSPRMS
BCC FREEOBUF BEQ :FREEOBUF
:OPENERR JSR ERRPROC :OPENERR JSR ERRPROC
:FREEOBUF JSR FREEBUFR ;FREE OPEN I/O BUFFER :FREEOBUF JSR FREEBUFR ;FREE OPEN I/O BUFFER
JMP :END JMP :END
@ -371,12 +375,12 @@ ERASEBAR
******************************** ********************************
* * * *
* ERROR HANDLER * * ERROR HANDLER *
* INPUT PARAM: ERRCODE * * INPUT PARAM: A HOLDS ERRCODE *
* * * *
******************************** ********************************
ERRPROC ERRPROC
LDA ERRCODE STA ERRCODE
CMP #0 CMP #0
BEQ :NOERR BEQ :NOERR
CMP #EOFERR CMP #EOFERR
@ -394,23 +398,21 @@ ERRPROC
* * * *
******************************** ********************************
PROMPT .DA #5 ;LENGTH BYTE PROMPT STR "FILE:"
.AS "FILE:" ERRTXT STR "ERROR:"
FILENAME DS $FF
ERRTXT .DA #6 ;LENGTH BYTE HERE STR "HERE"
.AS "ERROR:" HERE2 STR "HERE2"
READRET STR "READRET="
BAR .DA #42 SREADCNT STR "READCNT="
.AS '[RET] NEXT LINE / [SPC] NEXT PAGE / [Q]UIT' ERRCODE DS 1
READERR DS 1
FILENAME .BS $FF CLOSERR DS 1
ERRCODE .BS 1 LINENUM DS 1
READERR .BS 1 BAR STR '[RET] LINE [SPC] PAGE [Q]UIT'
CLOSERR .BS 1 USRQUIT DS 1
LINENUM .BS 1 BUFCHAR DS 1
USRQUIT .BS 1 USRCHAR DS 1
BUFCHAR .BS 1
USRCHAR .BS 1
ENVIEW STR 'ENTERING VIEWFILE' ENVIEW STR 'ENTERING VIEWFILE'
EXVIEW STR 'EXITING VIEWFILE' EXVIEW STR 'EXITING VIEWFILE'