mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 00:32:44 +00:00
267 lines
7.0 KiB
Plaintext
267 lines
7.0 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
*--------------------------------------
|
||
HELP
|
||
LDA #CMD.TBL
|
||
LDX /CMD.TBL
|
||
LDY #2
|
||
JSR HELP.1
|
||
JSR CRLF
|
||
LDA SCI.TBLADR
|
||
LDX SCI.TBLADR+1
|
||
LDY #4
|
||
*--------------------------------
|
||
HELP.1
|
||
STA .92+1
|
||
STX .92+2
|
||
STY .91+1
|
||
LDY #-1 POINT TO BEGINNING
|
||
LDX #10
|
||
LDA #$0D
|
||
.1 JSR CHO
|
||
BPL .2
|
||
JSR MON.PRBL2
|
||
TYA
|
||
CLC
|
||
.91 ADC #0
|
||
TAY
|
||
LDX #10
|
||
.2 INY
|
||
DEX
|
||
.92 LDA $5555,Y
|
||
BNE .1
|
||
.3 RTS
|
||
*--------------------------------
|
||
HILO JSR EXPR.DEFINED
|
||
LDA EXP.VALUE+3 MUST BE 0000XX00
|
||
ORA EXP.VALUE+2
|
||
ORA EXP.VALUE
|
||
BNE HL.RAER
|
||
LDX EXP.VALUE+1
|
||
RTS
|
||
*--------------------------------
|
||
HIMEM JSR HILO
|
||
DEX
|
||
CPX SYMBOL.BASE
|
||
BCC HL.RAER ...BELOW OR SAME AS LOMEM
|
||
CPX SCI.BUFFER.PAGES+2 Start of Exec Buffer
|
||
BCS HL.RAER ABOVE EXEC BUFFER
|
||
INX
|
||
STX SCI.HIMEM.PAGE
|
||
JMP NEW
|
||
*--------------------------------
|
||
HL.RAER JMP RAER
|
||
*--------------------------------
|
||
LOMEM JSR HILO
|
||
CPX #8
|
||
BCC HL.RAER ...BELOW $800
|
||
CPX SCI.HIMEM.PAGE
|
||
BCS HL.RAER ...ABOVE OR SAME AS HIMEM
|
||
STX SYMBOL.BASE
|
||
JMP NEW
|
||
*--------------------------------
|
||
* SET INCREMENT VALUE FOR AUTO-LINE-NUMBERING
|
||
*--------------------------------
|
||
INCREMENT
|
||
JSR SCAN.1.DECIMAL.NUMBER
|
||
DEX be sure there was a value
|
||
BMI SYNX1 ...no, not one
|
||
.1 LDA A0L,X GET VALUE
|
||
STA INCREMENT.VALUE,X
|
||
DEX
|
||
BPL .1
|
||
RTS
|
||
SYNX1 JMP SYNX
|
||
*--------------------------------
|
||
* AUTO & MANUAL COMMANDS
|
||
*--------------------------------
|
||
AUTO JSR SCAN.1.DECIMAL.NUMBER GET BASE, IF ANY
|
||
JSR SCAN.1.DECIMAL.NUMBER Get increment, if any
|
||
DEX Were there any parameters?
|
||
BMI .4 ...no, use current values
|
||
DEX ...yes, see if two parameters
|
||
DEX
|
||
BMI .2 ...no, only a starting line number
|
||
.1 LDA A1L,X ...yes, copy new increment
|
||
STA INCREMENT.VALUE,X
|
||
DEX
|
||
BPL .1
|
||
*---X=-1, form "previous" line number---
|
||
.2 SEC As written, this loop only works
|
||
.3 LDA A0L+1,X if all values are in page zero
|
||
SBC INCREMENT.VALUE+1,X because it uses negative
|
||
STA CURLNO+1,X indexing.
|
||
INX
|
||
BEQ .3
|
||
*---Set the AUTO flag------------
|
||
.4 SEC SET FLAG
|
||
.HS 90 "BCC", ALWAYS SKIP NEXT BYTE
|
||
MANUAL CLC CLEAR FLAG
|
||
ROR AUTOLN.FLAG
|
||
RTS
|
||
*--------------------------------
|
||
*
|
||
* EDIT COMMAND
|
||
*
|
||
*--------------------------------
|
||
EDIT
|
||
JSR GET.KEY.STRING
|
||
JSR PARSE.LINE.RANGE
|
||
.1 JSR GET.LINE.TO.WBUF
|
||
BCC .2
|
||
RTS Finished with range
|
||
.2 JSR FIND.KEY.IN.WBUF
|
||
BCC .1 Not there
|
||
JSR EDIT.ONE.LINE
|
||
JMP .1
|
||
*--------------------------------
|
||
DATE JSR SCAN.3.DECIMAL.NUMBERS Day, Month, Year
|
||
CPX #6
|
||
BCC SYNX1 NEED ALL THREE VALUES
|
||
LDA A1L MONTH
|
||
ASL
|
||
ASL
|
||
ASL
|
||
ASL
|
||
ASL M-MMM00000
|
||
ORA A0L M-MMMDDDDD
|
||
STA $BF90
|
||
LDA A2L YEAR
|
||
ROL YYYYYYYM
|
||
STA $BF91
|
||
RTS
|
||
*--------------------------------
|
||
TIME JSR SCAN.3.DECIMAL.NUMBERS Hour, Minute
|
||
CPX #4
|
||
BCC SYNX1 NEED BOTH VALUES
|
||
LDA A0L HOUR
|
||
STA $BF93
|
||
LDA A1L MINUTE
|
||
STA $BF92
|
||
RTS
|
||
*---------------------------------
|
||
* RENUMBER COMMAND
|
||
*
|
||
* UP TO THREE PARAMETERS
|
||
* 1: BASE NUMBER (DEFAULT = 1000)
|
||
* 2: INCREMENT (DEFAULT = 10)
|
||
* 3: STARTING LINE (DEFAULT = 0)
|
||
*---------------------------------
|
||
RENUMBER
|
||
JSR SCAN.3.DECIMAL.NUMBERS Base, Increment, Starting Line
|
||
.1 CPX #3 COPY DEFAULTS IF ANY NEEDED
|
||
BCS .2 NO MORE DEFAULTS NEEDED
|
||
LDA RENDTA,X
|
||
STA A0L,X
|
||
INX
|
||
BNE .1 ...ALWAYS
|
||
.2 LDX #A2L FIND STARTING LINE
|
||
JSR SERTXT
|
||
.3 LDA LINE.START TEST IF THRU YET
|
||
CMP HI.MEM
|
||
LDA LINE.START+1
|
||
SBC HI.MEM+1
|
||
BCS .4 FINISHED
|
||
LDY #0
|
||
LDA (LINE.START),Y GET LINE LENGTH
|
||
PHA SAVE FOR LATER
|
||
INY
|
||
LDA A0L STORE NEW LINE NUMBER IN LINE
|
||
STA (LINE.START),Y
|
||
ADC A1L ADD INCREMENT AS WE GO
|
||
STA A0L
|
||
INY
|
||
LDA A0H REST OF LINE NUMBER
|
||
STA (LINE.START),Y
|
||
ADC A1H ADD REST OF INCREMENT
|
||
BCS .5 YES, TOO BIG
|
||
STA A0H OK, AND CARRY CLEAR
|
||
PLA GET LINE SIZE
|
||
ADC LINE.START BUMP POINTER TO NEXT LINE
|
||
STA LINE.START
|
||
BCC .3
|
||
INC LINE.START+1
|
||
BNE .3 ...ALWAYS
|
||
.4 RTS FINISHED!
|
||
.5 LDY #QER3 RANGE ERROR
|
||
JMP HARD.ERROR
|
||
RENDTA .DA 1000 DEFAULT BASE
|
||
.DA #10 DEFAULT INCREMENT
|
||
*** .DA 0 DEFAULT STARTING LINE
|
||
*--------------------------------
|
||
* HIDE COMMAND
|
||
*--------------------------------
|
||
HIDE JSR MERGE MERGE IF ANY PREVIOUS HIDE
|
||
LDA #'H
|
||
STA PROMPT.FLAG NO, HIDE IT ALONE
|
||
INX NOW X=1
|
||
.1 LDA HI.MEM,X SAVE HI.MEM
|
||
STA HIDE.HIMEM,X
|
||
LDA PP,X
|
||
STA HI.MEM,X
|
||
DEX
|
||
BPL .1
|
||
RTS
|
||
*--------------------------------
|
||
* MERGE COMMAND
|
||
*--------------------------------
|
||
MERGE LDA PROMPT.FLAG
|
||
EOR #'H
|
||
BNE .1
|
||
STA PROMPT.FLAG CLEAR PROMPT CHAR
|
||
LDA HIDE.HIMEM RESTORE HI.MEM
|
||
STA HI.MEM
|
||
LDA HIDE.HIMEM+1
|
||
STA HI.MEM+1
|
||
.1 RTS
|
||
*--------------------------------
|
||
* NEW COMMAND
|
||
*--------------------------------
|
||
NEW JSR RESTORE RESTORE IF IN AN INCLUDE
|
||
JSR MERGE
|
||
JSR EMPTY.SOURCE.AREA
|
||
JMP HARD
|
||
*--------------------------------
|
||
* MEMORY COMMAND
|
||
* PRINT OUT BOUNDS ON SOURCE PROGRAM
|
||
* AND ON SYMBOL TABLE
|
||
*--------------------------------
|
||
MEMORY LDY #QSRCPRG "SOURCE PROGRAM: $"
|
||
LDX #PP
|
||
LDA #HI.MEM
|
||
JSR MEM.LINE
|
||
LDY #QSYMTBL " SYMBOL TABLE: $"
|
||
LDX #LO.MEM
|
||
LDA #EOT
|
||
MEM.LINE
|
||
PHA SAVE SECOND VALUE PNTR
|
||
TXA
|
||
PHA SAVE FIRST VALUE PNTR
|
||
JSR QT.OUT
|
||
PLA GET FIRST VALUE PNTR
|
||
JSR MEM.HEXVAL
|
||
JSR P.DASH
|
||
PLA GET SECOND VALUE PNTR
|
||
MEM.HEXVAL
|
||
TAX
|
||
LDA 1,X
|
||
JSR MON.PHEX
|
||
LDA 0,X
|
||
JMP MON.PHEX
|
||
*--------------------------------
|
||
RST JSR EXPR
|
||
LDY EXP.VALUE
|
||
LDA EXP.VALUE+1
|
||
*--------------------------------
|
||
SET.RESET.VECTOR
|
||
STY MON.RESET
|
||
STA MON.RESET+1
|
||
EOR #$A5
|
||
STA MON.RESET+2
|
||
RTS
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/scmasm.30/scmasm.s.mcmds
|
||
LOAD usr/src/scmasm.30/scmasm.s
|
||
ASM
|