mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 00:32:44 +00:00
221 lines
9.1 KiB
Plaintext
221 lines
9.1 KiB
Plaintext
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
|