Attempt to fix line clipping

This commit is contained in:
Bill Chatfield 2024-02-24 02:04:14 -05:00
parent fc9eeda779
commit 8ace07d469

View File

@ -204,6 +204,21 @@ SET23 MAC
STA ]1 STA ]1
<<< <<<
********************************
* *
* STANDARD ASSEM LANG *
* BACKWARDS COPY OF 1 BYTE *
* A IS DESTROYED *
* ]1 DESTINATION *
* ]2 SOURCE *
* *
********************************
COPY_B MAC
LDA ]2
STA ]1
<<<
******************************** ********************************
* * * *
* MAIN PROGRAM * * MAIN PROGRAM *
@ -485,24 +500,23 @@ PRSTRBYTES PUSHY
******************************** ********************************
VIEWFILE VIEWFILE
DO TRACE DO TRACE
PUTS ENVIEW PUTS ENVIEW
FIN FIN
SET1 LINENUM ;INIT LINE NUMBER COPY_B LINEIDX;#1 ;POSITION IN LINE
SET1 LINEIDX ;POSITION IN LINE :LOOP JSR PRODOS_MLI ;CALL PRODOS TO READ FILE
:LOOP JSR PRODOS_MLI ;CALL PRODOS TO READ FILE DB READ ;SPECIFY PRODOS READ COMMAND
DB READ ;SPECIFY PRODOS READ COMMAND DA READPARMS ;READ PARAMETERS
DA READPARMS ;READ PARAMETERS BNE :READERR
BNE :READERR JSR WRITEBUF ;WRITE TO SCREEN WHAT WAS READ
JSR WRITEBUF ;WRITE TO SCREEN WHAT WAS READ LDA #1 ;PREPARE FOR NEXT OP
LDA #1 ;PREPARE FOR NEXT OP CMP USRQUIT ;IF USER WANTS TO QUIT, THEN
CMP USRQUIT ;IF USER WANTS TO QUIT, THEN BEQ :ENDLOOP ;EXIT THE LOOP
BEQ :ENDLOOP ;EXIT THE LOOP JMP :LOOP ;ELSE, GET THE NEXT BUFFER
JMP :LOOP ;ELSE, GET THE NEXT BUFFER :READERR JSR ERRPROC
:READERR JSR ERRPROC :ENDLOOP NOP
:ENDLOOP NOP RTS
RTS
******************************** ********************************
* * * *
@ -510,39 +524,33 @@ VIEWFILE
* * * *
******************************** ********************************
WRITEBUF PUSHY WRITEBUF PUSHY
LDY #0 ;INIT CHAR COUNTER VARIABLE LDY #0 ;INIT CHAR COUNTER VARIABLE
:LOOP CPY READCNT ;COMPARE TO MAX CHARS :LOOP CPY READCNT ;COMPARE TO MAX CHARS
BEQ :ENDLOOP BEQ :ENDLOOP
LDA (ZP_A1L),Y ;GET CHAR FROM BUFFER LDA (ZP_A1L),Y ;GET CHAR FROM BUFFER
ORA #%10000000 ;TURN ON HIGH BIT FOR PRINTING ORA #%10000000 ;TURN ON HIGH BIT FOR PRINTING
JSR WRITECHAR ;COUT PRESERVES ACCUM JSR WRITECHAR ;COUT PRESERVES ACCUM
*
* CHECK END OF LINE
*
CMP #CR_HIBIT ;COMPARE TO CARRIAGE RETURN
BNE :CONT ;IF NOT END OF LINE, NEXT CHAR
INC LINENUM ;NEXT LINE HAS BEEN REACHED
* *
* CHECK AT END OF PAGE * CHECK AT END OF PAGE
* *
LDA LINENUM LDA CV ;CURSOR VERTICAL SCREEN LINE
CMP #SCR_HGHT ;AT BOTTOM OF SCREEN? CMP #SCR_HGHT ;AT BOTTOM OF SCREEN?
BNE :CONT ;NO? THEN NEXT CHAR BNE :CONT ;NO? THEN NEXT CHAR
JSR STATBAR ;YES? THEN SHOW THE STATUS BAR JSR STATBAR ;YES? THEN SHOW THE STATUS BAR
LDA #1 ;SETUP FOR NEXT LINE LDA #1 ;SETUP FOR NEXT LINE
CMP USRQUIT ;DID USER ASK TO QUIT CMP USRQUIT ;DID USER ASK TO QUIT
BEQ :ENDLOOP ;YES? THEN END SUB BEQ :ENDLOOP ;YES? THEN END SUB
:CONT INY ;STATBAR HAS ADJUSTED LINENUM :CONT INY ;STATBAR HAS ADJUSTED LINENUM
JMP :LOOP JMP :LOOP
:ENDLOOP NOP :ENDLOOP NOP
POPY POPY
DO TRACE DO TRACE
PUTS EXWRITEBUF PUTS EXWRITEBUF
FIN FIN
RTS RTS
******************************** ********************************
* * * *
@ -551,19 +559,19 @@ WRITEBUF PUSHY
* PRESERVES ACCUMULATOR * * PRESERVES ACCUMULATOR *
* * * *
******************************** ********************************
WRITECHAR STA CHAR WRITECHAR STA CHAR ;DON'T LOOSE THE CHARACTER
LDA LINEIDX CMP #CR_HIBIT ;COMPARE TO CARRIAGE RETURN
BNE :NOT_EOL ;IF NOT END OF LINE, PRINT
INC CV ;FORCE DOWN 1 LINE ON SCREEN
COPY_B LINEIDX;#1 ;RESET TO BEGINNING OF LINE
JMP :ENDSUB ;NOTHING MORE TO DO FOR EOL
:NOT_EOL LDA LINEIDX ;GET CURSOR HORIZ COL
CMP SCR_WDTH ;COMPARE WITH SCREEN WIDTH CMP SCR_WDTH ;COMPARE WITH SCREEN WIDTH
BPL :OFF_SCR ;DON'T PRINT IF OFF SCREEN BPL :ENDSUB ;DON'T PRINT IF OFF SCREEN
LDA CHAR LDA CHAR ;ON SCREEN, SO PRINT IT
JSR COUT JSR COUT
JMP :DONE INC LINEIDX
:OFF_SCR INC LINEIDX ;TODO - THIS IS WRONG! :ENDSUB LDA CHAR
LDA CHAR
CMP #CR_HIBIT
BNE :DONE
JSR CROUT
:DONE LDA CHAR
RTS RTS
******************************** ********************************
@ -640,7 +648,7 @@ ERASEBAR
JSR COUT ;WRITE TO SCREEN JSR COUT ;WRITE TO SCREEN
INY ;MAKE PROGRESS INY ;MAKE PROGRESS
JMP :LOOP ;LOOP TO NEXT CHAR JMP :LOOP ;LOOP TO NEXT CHAR
:ENDLOOP SET0 OURCH ;RESET CURSON TO BEG OF LINE :ENDLOOP SET0 OURCH ;RESET CURSOR TO BEG OF LINE
POPY POPY
DO TRACE DO TRACE