home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib32b.dsk
/
EXTRA.AMPER.S
< prev
next >
Wrap
Text File
|
2023-02-26
|
6KB
|
488 lines
***********************
* EXTRA.AMPER *
* by Harold Portnoy *
* Copyright (c) 1987 *
* by MicroSPARC, Inc. * Merlin Assembler
* Concord, MA 01742 *
***********************
* COMMENTS FOUND IN MAGAZINE LISTING
* (Most have been omitted here)
*
*EQUATES
*....Zero page
A1L = $3C
A2L = $3E
A4L = $42
MEMSIZ = $73
CHRGET = $B1
CHRGOT = $B7
TXTPTR = $B8
BEGCH = $FC
OFFSET = $FD
CMDLEN = $FD
RPTR = $FE
TXTTEMP = $FE
*....Page 3
AMPERV = $3F5
*....ProDOS
ENTRY = $BF00
*....General
AUXMOVE = $C311
SYNERR = $DEC9
COUT = $FDED
MOVE = $FE2C
*....Special
PAGES = 2
RELADR = 17
AUXROUT = $800
INIT = $2000
COMHAND = $2100
ROUTINE = $2200
*EQUATES for routine 1 (hex-dec Converter)
*....Zero Page
LINNUM = $50
*....General
FRMNUM = $DD67
ILLQUAN = $E199
GETADR = $E752
LINPRT = $ED24
PRNTAX = $F941
CROUT = $FD8E
ORG INIT
* SECTION 1: INITIALIZATION
*
*
*
*
*
*
LDA MEMSIZ+1
SEC
SBC #PAGES
STA MEMSIZ+1
*
LDX ENTRY
CPX #$4C
BNE :1
CLC
ADC #$04
*
:1 STA BEGCH
PHA
*
*
*
SEC
SBC #>COMHAND
STA OFFSET
*
*
LDX #$00
STX AMPERV+1
PLA
STA AMPERV+2
*
LDY #$00
RLOOP LDA RTBL,X
STA RPTR
INX
LDA RTBL,X
STA RPTR+1
CLC
LDA (RPTR),Y
ADC OFFSET
STA (RPTR),Y
INX
CPX #RELADR*2
BCC RLOOP
*
*
JSR SPECIAL
*
*
LDA #COMHAND
STA A1L
LDA #>COMHAND
STA A1L+1
LDA #ENDLIST
STA A2L
LDA #>ENDLIST
STA A2L+1
LDA #0
STA A4L
LDA BEGCH
STA A4L+1
JSR MOVE
LDA #ROUTINE
STA A1L
LDA #>ROUTINE
STA A1L+1
LDA #ENDROUT
STA A2L
LDA #>ENDROUT
SEC
SBC #>BRT0a
ADC #>ROUTINE
STA A2L+1
LDA #0
STA A4L
LDA #>AUXROUT
STA A4L+1
SEC
JMP AUXMOVE
*
*
RTBL DA R1+2
DA R2+2
DA R3+2
DA R4+2
DA R5+2
DA R6+2
DA R7+2
DA R8+2
DA R0a+2
DA R0b+2
DA R2a+2+BRT2-BRT0
DA R2b+2+BRT2-BRT0
DA R3a+2+BRT3-BRT0
DA R3b+2+BRT3-BRT0
*
*
SPECIAL RTS
*
DS COMHAND-*
*
* SECTION 2: COMMAND HANDLER
*
CLD
*
*
LDA TXTPTR
STA TXTTEMP
LDA TXTPTR+1
STA TXTTEMP+1
*
*
LDY #$00
FINDCMD INY
R1 LDA CMDLIST,Y
STA CMDLEN
CMP #$FF
BEQ NOCMD
*
LDX #$00
JSR CHRGOT
CMDLOOP INX
INY
R2 CMP CMDLIST,Y
BNE CMDADV
CPX CMDLEN
BEQ ACTCMD
JSR CHRGET
CLC
BCC CMDLOOP
*
*
CMDADV INY
R3 LDA CMDLIST,Y
BNE CMDADV
LDA TXTTEMP
STA TXTPTR
LDA TXTTEMP+1
STA TXTPTR+1
CLC
BCC FINDCMD
*
*
NOCMD LDY #$02
*
*
*
*
*
ACTCMD JSR CHRGET
INY
R4 LDA CMDLIST,Y
STA A1L
R5 LDA CMDLIST+1,Y
STA A1L+1
R6 LDA CMDLIST+2,Y
STA A2L
R7 LDA CMDLIST+3,Y
STA A2L+1
LDA #$00
STA A4L
LDA BEGCH
CLC
ADC #$01
STA A4L+1
R8 STA GOROUT+2
CLC
JSR AUXMOVE
*
*
GOROUT HEX 4C0000
*
*
CMDLIST HEX 00
HEX 0100
DA BRT0
DA ERT0
*
HEX 00
HEX 01
ASC '#'
DA BRT1
DA ERT1
*
HEX 00
HEX 05
ASC 'ROUT2'
DA BRT2
DA ERT2
*
HEX 00
HEX 02
HEX 8C33
DA BRT3
DA ERT3
*
*
HEX 00
HEX FF00
*
ENDLIST DS 1
DS ROUTINE-*
* SECTION 3: ROUTINES
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
BRT0a LDY #$FF
CPY CMDLEN
BEQ BADCMD
*
NOCDSTR INY
R0a LDA NOCMDSTR,Y
BEQ ERT0a
JSR COUT
CLC
BCC NOCDSTR
*
BADCMD INY
R0b LDA BADCMDST,Y
BEQ ERT0a
JSR COUT
CLC
BCC BADCMD
*
NOCMDSTR HEX 8D87
ASC "NO COMMAND STRING"
HEX 8D00
BADCMDST HEX 8D87
ASC "INCORRECT COMMAND STRING"
HEX 8D00
ERT0a JMP $3D0
BRT0 = AUXROUT
ERT0 = ERT0a+2-BRT0a+BRT0
*
*
*
ORG ROUTINE
*
*
*
BRT1a JSR CHRGOT
CMP #'$'
BNE DtoH
BEQ HtoD
*
HtoD LDX #$00
STX A2L
STX A2L+1
LDY #$04
H2D JSR CHRGET
BEQ PRT
EOR #$30
CMP #$0A
BCC DIG
ADC #$88
CMP #$FA
BCS DIG
JMP SYNERR
DIG LDX #$03
ASL
ASL
ASL
ASL
NXTBIT ASL
ROL A2L
ROL A2L+1
DEX
BPL NXTBIT
DEY
BMI ILLNUM
BPL H2D
ILLNUM JMP ILLQUAN
PRT LDX A2L
LDA A2L+1
JSR LINPRT
BPL RTN
*
DtoH LDY #$00
JSR FRMNUM
JSR GETADR
LDA #"$"
JSR COUT
LDX LINNUM
LDA LINNUM+1
JSR PRNTAX
RTN JSR CROUT
ERT1a RTS
BRT1 = ERT0+1
ERT1 = ERT1a-BRT1a+BRT1
*
*
*
*
ORG ROUTINE
BRT2a LDX #$00
R2a LDA R2MSG,X
BEQ ERT2a
JSR COUT
INX
R2b JMP R2a
R2MSG HEX 8D
ASC "SAMPLE ROUTINE"8D00
ERT2a RTS
BRT2 = ERT1+1
ERT2 = ERT2a-BRT2a+BRT2
*
*
ORG ROUTINE
BRT3a LDX #$00
R3a LDA R3MSG,X
BEQ ERT3a
JSR COUT
INX
R3b JMP R3a
R3MSG HEX 8D
ASC "SAMPLE OF A ROUTINE"8D
ASC "WITH A BASIC KEYWORD"8D
ASC "IN THE COMMAND STRING"8D00
ERT3a RTS
BRT3 = ERT2+1
ERT3 = ERT3a-BRT3a+BRT3
*
ENDROUT = ERT3+1+ROUTINE