A2osX/FSE/FSE.S.1.txt

221 lines
9.1 KiB
Plaintext
Raw Normal View History

2024-02-16 17:51:17 +00:00
NEW
AUTO 3,1
*--------------------------------
* BEWARE ZP USE!!!
*--------------------------------
CH .EQ $24 MONITOR HORIZ POSN
CV .EQ $25 MONITOR VERT POSN
BASEL .EQ $28 MONITOR BASE ADRS
A2L .EQ $3E
A2H .EQ $3F
A4L .EQ $42
A4H .EQ $43
*--------------------------------
SP.BEG .EQ $52,53 Changed! PROG CODE STACK BEGIN
SP.END .EQ $54,55 PROG CODE STACK END+1
PP.BEG .EQ $56,57 PROG CODE BEGIN
PP.END .EQ $58,59 Changed! PROG CODE END+1
*--------------------------------
.DUMMY
.OR $C0
LEFT.MARGIN .BS 1 INIT TO 6
RIGHT.MARGIN .BS 1 INIT TO SCR.SIZE-1
RM.ADJUST .BS 1 INIT TO 6
POSH .BS 1 INIT TO 6
POSV .BS 1 INIT TO 0
ED.PTR .BS 1 EDIT LINE CHAR PTR
ED.KEY .BS 1 FIND CHAR KEY CODE
CTR .BS 1 GENERAL CTR FOR SCROLL ROUTINES
MAXV .BS 1 MAX POSV OF SCREEN SCROLL
LN.FLAG .BS 1 INIT TO 0
FILL.TO .BS 1 COLUMN TO BLANK FILL TO
FIRST.LINE .BS 1 FIRST LINE OF SCRN (INIT 0)
LAST.LINE .BS 1 LAST LINE OF SCRN (INIT 23)
BLKSIZ .BS 1
RPTCNT .BS 1
RPTCHR .BS 1
PTR1 .BS 2
PTR2 .BS 2
CUR.KEY .BS 1 CURRENT KEY
LNO .BS 2 LINE NUMBER FOR PRNT ROUTINE
SAV.CTR .BS 1 CTR FOR EDIT LINE
SAV.PTR1 .BS 2 PTR1 FOR EDIT LINE
SAV.LNO .BS 2 LNO FOR EDIT LINE
CV.DIGFLG .BS 1 FIRST NON-ZERO DIGIT FLG
NO.SHOW.FLAG .BS 1 SET TO PREVENT SHOW SCRN
SRCP .BS 2
.ED
*--------------------------------
WBUF .EQ $200
M.RESET .EQ $3F2 THRU 3F4
*--------------------------------
M.BASCALC .EQ $FBC1 CALC BASE ADRS
M.BELL .EQ $FBDD RING BELL
M.COUT .EQ $FDED APPLE CHAR OUTPUT
*--------------------------------
HARD JMP HINIT INIT SCREEN EDITOR
*--------------------------------
START.COL .EQ 6 START OF LINE DATA IN BUFFER
*--------------------------------
*
* STANDARD PARAMETER AREA
*
* THESE PARAMETERS ALLOW CUSTOMIZATION
* OF THE SCREEN EDITOR TO SUIT INDIVIDUAL TASTE.
*--------------------------------
SCREEN.WIDTH .DA #SCR.SIZE WIDTH OF SCREEN
ROLL.VALUE .DA #24 (20 4 WM) SCREEN ROLL UP/DOWN VALUE
ROLL.VALUE2 .DA #100 BIG ROLL UP/DOWN VALUE
HORT.PAGE .DA #40 HORIZONTAL PAGE
RPT.CHAR .DA #'-' REPEAT CHAR FOR COMMENT LINE
RPT.LENG .DA #32 REPEAT LENGTH FOR COMMENT LINE
SKMOD.FLG .DA #$00 ($FF 4 WM) SHIFT KEY MOD FLAG
AUTO.REN .DA #$FF AUTO RENUMBER FLAG
AUTO.BASE .DA 1000 AUTO REN START LINE NUM
AUTO.INC .DA 10 AUTO REN INCREMENT LINE NUM
RT.FENCEL .DA #248-SCR.SIZE+START.COL RIGHTMOST HORTZ PAGE LIMIT
RT.FENCER .DA #248+START.COL-1 RIGHTMOST COLUMN ALLOWED
L.MARGIN .DA #START.COL LEFT MARGIN FOR CAR RETN POSN
* TAB TABLE 21 ENTRIES ZERO ON UNUSED ENTRIES
TAB.TBL .DA #1,#8,#12,#21,#26,#35,#50,#0,#0,#0 ENTRIES 1-10
.DA #0,#0,#0,#0,#0,#0,#0,#0,#0,#0 ENTRIES 11-20
.DA #0 END OF TABLE
SZ.TAB.TBL .EQ *-TAB.TBL
*--------------------------------
* VARIABLE AREA BELOW $3D0
*
* NOTE THAT WE SUBTRACT THE NEEDED SPACE
* FROM THE PREVIOUS DEFINED SYMBOL. I.E.
* 'LN.CNT' IS 32 BYTES BEFORE $3D0.
*--------------------------------
VAR.END .EQ $3D0
LN.CNT .EQ VAR.END-32 BACKWARD SCROLL LENGTH TABLE
INDEX .EQ LN.CNT-1 INDEX TO LN.CNT
COMPOSE.FLG .EQ INDEX-1 INIT TO 0
SPECIAL.FLG .EQ COMPOSE.FLG-1 INIT TO 0
MDIST .EQ SPECIAL.FLG-2 MOVE DISTANCE
ESC.FLAG .EQ MDIST-1 EDIT/SCROLL MODE FLG
ONCE.FLG .EQ ESC.FLAG-1 SPECIAL ESCAPE FLAG
CHANGE.FLG .EQ ONCE.FLG-1 EDIT LINE CHANGED / MUST SUBMIT
FORM.FLG .EQ CHANGE.FLG-1 SHOW FORM GUIDE (INIT 0)
ALPHA.FLG .EQ FORM.FLG-1 ALPHA SHIFT LOCK FLAG (INIT 0)
SAVE.RSTV .EQ ALPHA.FLG-2 SAVE RESET VECTOR
SAVE.3D1 .EQ SAVE.RSTV-2 SAVE OS SOFT VECTOR
SAVE.3D4 .EQ SAVE.3D1-2 SAVE OS HARD VECTOR
SAVE.36 .EQ SAVE.3D4-2 SAVE OUTPUT HOOK
SAVE.38 .EQ SAVE.36-2 SAVE INPUT HOOK
VAR.BEG .EQ save.38
.DO VAR.BEG<$300
*** ERROR VAR.BEG < $300
.FIN
*--------------------------------
*
* FUNCTION TABLE FOR SCROLL MODE
* KEYBOARD FUNCTIONS.
*
* BECAUSE OF KEYBOARD VARIATIONS BETWEEN APPLE II PLUS
* AND APPLE II E AND FRANKLIN KEYBOARDS SOME KEYS ARE
* DEFINED AS DUPLICATE FUNCTIONS TO IMPROVE THE HUMAN
* FACTORS OF KEY PLACEMENT.
*
* THE SHIFT 2 KEY ON AP2+ IS '"' BUT ON OTHER KEYBOARDS
* AN '@' IS THE SHIFT 2 KEY CODE. '"' AND '@' PERFORM
* THE SAME FUNCTION.
*
* THE HORIZONTAL SCROLL KEYS ':' AND '-' ON THE AP2+ KEYBOARD
* ARE NOT IN EASY REACH ON OTHER KEYBOARDS SO THE KEYS
* ',' AND '.' PERFORM THE SAME FUNCTION AND HAVE THE
* NICE SUGGESTIVE PROMPT OF THEIR SHIFT CODES '<' AND '>'
* TO POINT CORRECT SCROLL DIRECTION.
*--------------------------------
FTBL .DA #'1,ROLL.UP-1 ROLL UP 24 LINES
.DA #'2,ROLL.DN-1 ROLL DOWN 24 LINES
.DA #'3,LN.TOGL-1 LINE NUMBER TOGGLE
.DA #'4,COMPOSE-1 COMPOSE MODE TOGGLE
.DA #'5,FORM.GUIDE-1 FORM GUIDE MODE TOGGLE
.DA #'W-$40,SET.LMARGIN-1 SET LEFT MARGIN
.DA #'/,GOTO.LINE-1 GOTO LINE#
.DA #'Q-$40,EXIT-1 QUIT FROM EDITOR
.DA #'B,SHOW.BEGIN-1 BEGINNING OF FILE
.DA #'E,SHOW.END-1 END OF FILE
.DA #'!,ROLL.U100-1 ROLL UP 100 LINES
.DA #'",ROLL.D100-1 AP2+ ROLL DOWN 100 LINES
.DA #'@,ROLL.D100-1 AP2E ROLL DOWN 100 LINES
.DA #':,LEFT.PAGE-1 AP2+ HORIZONTAL SCROLL LEFT
.DA #',,LEFT.PAGE-1 AP2E HORIZONTAL SCROLL LEFT
.DA #'-,RIGHT.PAGE-1 AP2+ HORIZONTAL SCROLL RIGHT
.DA #'.,RIGHT.PAGE-1 AP2E HORIZONTAL SCROLL RIGHT
.DA #'I,MOVE.UP-1 MOVE CRSR UP 1 LINE
.DA #'K-$40,MOVE.UP-1 MOVE CRSR UP 1 LINE
.DA #'M,MOVE.DN-1 MOVE CRSR DOWN 1 LINE
.DA #'J-$40,MOVE.DN-1 MOVE CRSR DOWN 1 LINE
.DA #'J,MOVE.LF-1 MOVE CRSR LEFT 1 CHAR
.DA #'H-$40,MOVE.LF-1 MOVE CRSR LEFT 1 CHAR
.DA #'K,MOVE.RT-1 MOVE CRSR RIGHT 1 CHAR
.DA #'U-$40,MOVE.RT-1 MOVE CRSR RIGHT 1 CHAR
.DA #'L-$40,INSERT-1 INSERT LINE
.DA #'Z-$40,DELETE-1 DELETE LINE
.DA #$1B,ESCAPE-1 ENTER EDIT MODE
.DA #'M-$40,RETURN-1 RETURN TO NEXT LINE
.DA #'P-$40,DINSERT-1 INSERT DASHED LINE COMMENT
**** SPECIAL EDIT MODE FORCING KEYS
**** THERE MUST BE NO CONFLICT WITH THE ABOVE
**** SCROLL MODE FUNCTION KEY CODES.
.DA #'@-$40,SPECIAL-1 CLEAR TO EOL
.DA #'A-$40,SPECIAL-1 TOGGLE ALPHA SHIFT LOCK
.DA #'B-$40,SPECIAL-1 BEGINING OF LINE
.DA #'C-$40,SPECIAL-1 COPY TO TAB
.DA #'D-$40,SPECIAL-1 DELETE CHAR
.DA #'F-$40,SPECIAL-1 FIND CHAR
.DA #'I-$40,SPECIAL-1 INSERT CHAR
.DA #'N-$40,SPECIAL-1 END OF LINE
.DA #'O-$40,SPECIAL-1 INSERT CNTRL CHAR
.DA #'S-$40,SPECIAL-1 SET/CLEAR TAB
.DA #'T-$40,SPECIAL-1 TAB
FTBL.Z .EQ *-FTBL
.DO FTBL.Z>256
!!! SCROLL MODE FUNCTION TABLE TOO LARGE
.FIN
*--------------------------------
*
* FUNCTION TABLE FOR EDIT MODE
* KEYBOARD FUNCTIONS.
*
*--------------------------------
E.TBL
.DA #'@-$40,E.ZAP-1 CLEAR TO EOL
.DA #'A-$40,E.SHIFT-1 TOGGLE ALPHA SHIFT LOCK
.DA #'B-$40,E.BEG-1 BEGINNING
.DA #'C-$40,E.COPY-1 COPY TO TAB
.DA #'D-$40,E.DEL-1 DELETE CHAR
.DA #'F-$40,E.FIND-1 FIND CHAR
.DA #'H-$40,E.BKSP-1 BACKSPACE
.DA #'I-$40,E.INS-1 INSERT CHAR
.DA #'N-$40,E.END-1 END OF LINE
.DA #'O-$40,E.OVR-1 INSERT CONTROL CHAR
.DA #'R-$40,E.RESTORE-1 RESTORE LINE
.DA #'S-$40,E.SET.TAB-1 SET/CLEAR TAB
.DA #'T-$40,E.TAB-1 TAB TO NEXT POSN
.DA #'U-$40,E.RIT-1 RIGHT ARROW
.DA #$1B,E.ESC-1 ESCAPE FROM EDIT MODE
**** SCROLL MODE FUNCTIONS ****
**** THESE KEY CODES MUST NOT CONFLICT
**** WITH THE EDIT KEY CODES.
.DA #'J-$40,E.CTRL-1 MOVE DOWN
.DA #'K-$40,E.CTRL-1 MOVE UP
.DA #'L-$40,E.CTRL-1 INSERT LINE
.DA #'M-$40,E.CTRL-1 RETURN
.DA #'P-$40,E.CTRL-1 INSERT COMMENT LINE
.DA #'Q-$40,E.CTRL-1 QUIT
.DA #'W-$40,E.CTRL-1 SET LEFT MARGIN
.DA #'Z-$40,E.CTRL-1 DELETE LINE
E.TBLSZ .EQ *-E.TBL
.DO E.TBLSZ>256
!!! EDIT MODE FUNCTION TABLE TOO LARGE
.FIN
*--------------------------------
MAN
SAVE usr/src/fse/fse.s.1
LOAD usr/src/fse/fse.s
ASM