mirror of
https://github.com/A2osX/A2osX.git
synced 2024-09-10 22:54:59 +00:00
115 lines
3.0 KiB
Plaintext
115 lines
3.0 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
*--------------------------------------
|
||
* SET UP NEXT LINE TO ASSEMBLE
|
||
*--------------------------------
|
||
SETUP.NEXT.LINE
|
||
.1 BIT INFLAG
|
||
BVS .5 ...INSIDE .INBx
|
||
LDA SRCP CHECK IF AT END
|
||
CMP HI.MEM TOP OF SOURCE CODE
|
||
LDA SRCP+1
|
||
SBC HI.MEM+1
|
||
BCS .7 RETURN WITH CARRY SET
|
||
.5 LDA MACRO.LEVEL IN SKELETON OR BODY?
|
||
BEQ .2 BODY
|
||
LDY #0 SEE IF END OF SKELETON
|
||
>SYM LDA,SRCP
|
||
BNE .3 NO, STILL IN SKELETON
|
||
LDA (MACSTK),Y POP SKELETON OFF MACRO STACK
|
||
STA CALL.NUM+1
|
||
INY
|
||
LDA (MACSTK),Y
|
||
STA CALL.NUM
|
||
INY
|
||
LDA (MACSTK),Y
|
||
STA LF.ALL Real value of listing option
|
||
INY
|
||
LDA (MACSTK),Y
|
||
STA SRCP+1
|
||
INY
|
||
LDA (MACSTK),Y
|
||
STA SRCP
|
||
INY
|
||
LDA (MACSTK),Y (HIGH BYTE)
|
||
PHA
|
||
INY
|
||
LDA (MACSTK),Y (LOW BYTE)
|
||
STA MACSTK
|
||
PLA
|
||
STA MACSTK+1
|
||
DEC MACRO.LEVEL
|
||
JMP .1
|
||
*--------------------------------
|
||
.2 JSR GET.LINE.NUMBER BODY
|
||
.3 LDX #0
|
||
.4 JSR GET.NEXT.SOURCE.CHAR
|
||
BEQ .6 END OF LINE
|
||
STA WBUF,X PUT INTO WORKING BUFFER
|
||
INX
|
||
BNE .4 ...ALWAYS
|
||
.6 STA WBUF,X PUT ZERO ON END
|
||
CLC RETURN WITH CARRY CLEAR
|
||
.7 RTS
|
||
*--------------------------------
|
||
* GET NEXT CHARACTER FROM SOURCE LINE
|
||
* (IF INSIDE A MACRO SKELETON, EXPAND PARAMETERS)
|
||
*--------------------------------
|
||
GET.NEXT.SOURCE.CHAR
|
||
STX MACRO.SAVEX MUST PRESERVE X-REGISTER
|
||
LDY PARAM.PNTR
|
||
BNE .1 PRESENTLY EXPANDING A PARAMETER
|
||
LDA MACRO.LEVEL IN A SKELETON?
|
||
BNE .2 YES
|
||
JMP NTKN NO
|
||
*--------------------------------
|
||
.1 INC PARAM.PNTR
|
||
LDA (MACSTK),Y
|
||
BNE .8 ...NORMAL CHAR
|
||
STA PARAM.PNTR ...END OF PARAMETER
|
||
.2 JSR NTKN
|
||
BEQ .8 END OF LINE
|
||
CMP #$7F PARAMETER?
|
||
BNE .8 NO, NORMAL CHAR
|
||
*---MACRO PARAMETER--------------
|
||
JSR NTKN YES, GET PARAM #
|
||
LDY #6
|
||
CMP #'# ]# RETURNS NUMBER OF PARAMETERS (0-9)
|
||
BEQ .5 ...FOUND ]#
|
||
SEC
|
||
SBC #'1' CHANGE "1"..."9" TO 0...8
|
||
BEQ .4 ...]1
|
||
TAX ...]2 THRU ]9
|
||
.3 INY
|
||
LDA (MACSTK),Y SKIP OVER A PARAMETER
|
||
BNE .3
|
||
DEX
|
||
BNE .3
|
||
.4 INY
|
||
STY PARAM.PNTR
|
||
BNE .1 ...ALWAYS
|
||
*---NUMBER OF PARAMETERS---------
|
||
.5 CLC
|
||
LDA (MACSTK),Y
|
||
SBC MACSTK
|
||
TAY
|
||
LDX #10
|
||
.6 LDA (MACSTK),Y
|
||
BNE .7
|
||
DEX
|
||
DEY
|
||
CPY #7
|
||
BCS .6
|
||
LDX #0
|
||
.7 TXA
|
||
ORA #$30
|
||
*--------------------------------
|
||
.8 LDX MACRO.SAVEX RESTORE X-REG
|
||
CMP #0 SET "EQ" STATUS IF END OF LINE
|
||
RTS
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/scmasm.30/scmasm.s.asmnl
|
||
LOAD usr/src/scmasm.30/scmasm.s
|
||
ASM
|