mirror of
https://github.com/retrogear/Analyst.git
synced 2024-06-12 23:29:32 +00:00
1 line
8.3 KiB
Plaintext
1 line
8.3 KiB
Plaintext
* ANALYST 128XG PART B *
|
|
* LAST EDIT: 01/19/19
|
|
*
|
|
* CALL HERE TO INIT GRAPHICS DRIVER
|
|
* WITH Y = $20 FOR HGR OR $40 FOR HGR2
|
|
*
|
|
INITGR LDA HCOUTLOC+1
|
|
STA CSWH
|
|
LDA HCOUTLOC
|
|
STA CSWL
|
|
STA HIRES
|
|
STA MIXCLR
|
|
STA HISCR
|
|
STZ CH HOME CURSOR BUT DONT CLS
|
|
STZ CV
|
|
TYA
|
|
CMP #$40
|
|
BEQ H6026
|
|
STA LOWSCR
|
|
H6026 STA GBASE
|
|
STA TXTCLR
|
|
HCOUT PHA
|
|
CMP #$88 BACKSPACE
|
|
BNE CHKL
|
|
DEC CH
|
|
BPL CHKL
|
|
LDA #$8D DO CR
|
|
CHKL CMP #$8C CTRL-L
|
|
BNE HCOUTZ
|
|
HCLS LDY #$00 CLEAR SCREEN
|
|
STY BAS2L
|
|
LDA GBASE
|
|
STA BAS2H
|
|
H6050 TYA
|
|
H6058 STA (BAS2L),Y
|
|
INY
|
|
BNE H6058
|
|
INC BAS2H
|
|
LDA BAS2H
|
|
SEC
|
|
SBC GBASE
|
|
CMP #$20
|
|
BNE H6050
|
|
STY CH Y = 0
|
|
STY CV
|
|
CLC
|
|
BCC H60DC
|
|
HCOUTZ CMP #$8D
|
|
BEQ HCROUT
|
|
CMP #$A0
|
|
BCC H60EE IGNORE CTRL CHARS
|
|
LDA CV
|
|
LSR A
|
|
AND #$03
|
|
ORA GBASE
|
|
STA BAS2H
|
|
LDA CV
|
|
ROR A
|
|
PHP
|
|
ASL A
|
|
AND #$18
|
|
STA BAS2L
|
|
ASL A
|
|
ASL A
|
|
ORA BAS2L
|
|
ASL A
|
|
PLP
|
|
ROR A
|
|
CLC
|
|
ADC CH
|
|
STA BAS2L
|
|
PLA
|
|
AND #$7F MASK
|
|
SEC
|
|
SBC #$20 CONVERT FOR FONT TABLE
|
|
PHA
|
|
LDA FONTLOC+1
|
|
LSR A
|
|
LSR A
|
|
LSR A
|
|
STA BASH
|
|
PLA
|
|
PHA
|
|
ROL A
|
|
ROL BASH
|
|
ROL A
|
|
ROL BASH
|
|
ROL A
|
|
ROL BASH
|
|
AND #$F8
|
|
STA BASL
|
|
LDY #$00
|
|
H60AF LDA (BASL),Y
|
|
PHY
|
|
LDY #$00
|
|
PHA
|
|
TYA
|
|
STA (BAS2L),Y
|
|
PLA
|
|
EOR (BAS2L),Y
|
|
STA (BAS2L),Y
|
|
PLY
|
|
LDA BAS2H
|
|
CLC
|
|
ADC #$04
|
|
STA BAS2H
|
|
INY
|
|
CPY #$08
|
|
BNE H60AF
|
|
INC CH
|
|
LDA CH
|
|
CMP WNDWDTH
|
|
H60DC BCC H60EE
|
|
HCROUT LDA #0
|
|
STA CH
|
|
INC CV
|
|
LDA CV
|
|
CMP #24 IS IT BELOW BOTTOM OF SCREEN?
|
|
BCC H60EE BRANCH IF NOT, OTHERWISE CLEAR SCREEN
|
|
JMP HCLS AND MOVE TO TOP INSTEAD OF SCROLLING
|
|
H60EE PLA
|
|
RTS
|
|
*
|
|
* #1020 AUXLOAD MOVED HERE AND MADE RELOCATEABLE
|
|
*
|
|
AUXV STZ MA1 F(CTRL-X) MOVE ANALYST TO AUX MEMORY
|
|
STZ MA4 PAGE ALIGNED LOW = 0
|
|
LDA STARTLOC+1 PAGE# OF START
|
|
STA MA1+1
|
|
STA MA4+1
|
|
STZ MA2 PAGE ALIGNED LOW = 0
|
|
LDA ENDLOC+1
|
|
STA MA2+1
|
|
LDA #$03
|
|
STA INITBL+43
|
|
LDA #$05
|
|
STA INITBL+46
|
|
JSR INITXQTS
|
|
LDA #$60
|
|
STA AUXV DISABLE FUTURE MOVES TO AUXMEM
|
|
LDA #$D8 'X'
|
|
STA BANKORG
|
|
SEC
|
|
JSR AUXMOVE A1.A2 TO A4
|
|
LDX #5
|
|
AUXLD2 LDA INITBL4,X
|
|
STA XQT,X
|
|
DEX
|
|
BPL AUXLD2
|
|
STZ START DESTROY OLD ANALYST ID
|
|
STA INHPAGE2 #1008 SO CTRL-X WORKS
|
|
JMP XQT
|
|
LST ON
|
|
INITBL4 JSR XQTS+36
|
|
JMP TXTMON
|
|
SKP 1
|
|
*** PROGRAM DATA AREA ***
|
|
SKP 1
|
|
*
|
|
* CHAR1 MARKS START OF PROGRAM DATA AREA #1020
|
|
*
|
|
CHAR1 DFB 172,169,172,163,168,164
|
|
CHAR2 DFB 217,0,216,164,164,0
|
|
LST ON
|
|
HEREL EQU >*
|
|
DS $100-HEREL
|
|
*
|
|
* ASCII.SET FROM HRCG TOOLKIT
|
|
* MUST BE DIVISIBLE BY $800
|
|
*
|
|
FONTADR DB $00,$00,$00,$00
|
|
* LST OFF
|
|
DB $00,$00,$00,$00
|
|
DB $08,$08,$08,$08
|
|
DB $08,$00,$08,$00
|
|
DB $14,$14,$14,$00
|
|
DB $00,$00,$00,$00
|
|
DB $28,$94,$7E,$14
|
|
DB $BF,$8A,$0A,$00
|
|
DB $08,$3C,$0A,$1C
|
|
DB $28,$1E,$08,$00
|
|
DB $06,$26,$10,$08
|
|
DB $04,$32,$30,$00
|
|
DB $04,$0A,$0A,$04
|
|
DB $2A,$12,$2C,$00
|
|
DB $08,$08,$08,$00
|
|
DB $00,$00,$00,$00
|
|
DB $08,$04,$02,$02
|
|
DB $02,$04,$08,$00
|
|
DB $08,$10,$20,$20
|
|
DB $20,$10,$08,$00
|
|
DB $08,$2A,$1C,$08
|
|
DB $1C,$2A,$08,$00
|
|
DB $00,$08,$08,$3E
|
|
DB $08,$08,$00,$00
|
|
DB $00,$00,$00,$00
|
|
DB $00,$8C,$88,$84
|
|
DB $00,$00,$00,$3E
|
|
DB $00,$00,$00,$00
|
|
DB $00,$00,$00,$00
|
|
DB $00,$00,$8C,$00
|
|
DB $00,$20,$10,$08
|
|
DB $04,$02,$00,$00
|
|
DB $8C,$92,$22,$22
|
|
DB $22,$92,$8C,$00
|
|
DB $08,$0C,$08,$08
|
|
DB $08,$08,$1C,$00
|
|
DB $1C,$22,$20,$10
|
|
DB $84,$82,$3E,$00
|
|
DB $3E,$90,$10,$18
|
|
DB $20,$22,$1C,$00
|
|
DB $10,$18,$14,$12
|
|
DB $3E,$10,$10,$00
|
|
DB $3E,$02,$1E,$20
|
|
DB $20,$22,$1C,$00
|
|
DB $18,$04,$82,$1E
|
|
DB $22,$22,$1C,$00
|
|
DB $3E,$90,$10,$88
|
|
DB $08,$84,$04,$00
|
|
DB $1C,$22,$22,$1C
|
|
DB $22,$22,$1C,$00
|
|
DB $1C,$22,$22,$3C
|
|
DB $90,$10,$0C,$00
|
|
DB $00,$00,$8C,$00
|
|
DB $00,$8C,$00,$00
|
|
DB $00,$00,$8C,$00
|
|
DB $00,$8C,$88,$84
|
|
DB $10,$08,$04,$02
|
|
DB $04,$08,$10,$00
|
|
DB $00,$00,$3E,$00
|
|
DB $3E,$00,$00,$00
|
|
DB $04,$08,$10,$20
|
|
DB $10,$08,$04,$00
|
|
DB $1C,$22,$90,$88
|
|
DB $08,$00,$08,$00
|
|
DB $1C,$22,$2A,$3A
|
|
DB $1A,$02,$3C,$00
|
|
DB $08,$8C,$14,$92
|
|
DB $3E,$22,$22,$00
|
|
DB $1E,$22,$22,$1E
|
|
DB $22,$22,$1E,$00
|
|
DB $1C,$22,$02,$02
|
|
DB $02,$22,$1C,$00
|
|
DB $1E,$22,$22,$22
|
|
DB $22,$22,$1E,$00
|
|
DB $3E,$02,$02,$1E
|
|
DB $02,$02,$3E,$00
|
|
DB $3E,$02,$02,$1E
|
|
DB $02,$02,$02,$00
|
|
DB $3C,$02,$02,$02
|
|
DB $32,$22,$3C,$00
|
|
DB $22,$22,$22,$3E
|
|
DB $22,$22,$22,$00
|
|
DB $1C,$08,$08,$08
|
|
DB $08,$08,$1C,$00
|
|
DB $20,$20,$20,$20
|
|
DB $20,$22,$1C,$00
|
|
DB $22,$12,$0A,$06
|
|
DB $0A,$12,$22,$00
|
|
DB $02,$02,$02,$02
|
|
DB $02,$02,$3E,$00
|
|
DB $22,$36,$2A,$2A
|
|
DB $22,$22,$22,$00
|
|
DB $22,$22,$26,$2A
|
|
DB $32,$22,$22,$00
|
|
DB $1C,$22,$22,$22
|
|
DB $22,$22,$1C,$00
|
|
DB $1E,$22,$22,$1E
|
|
DB $02,$02,$02,$00
|
|
DB $1C,$22,$22,$22
|
|
DB $2A,$12,$2C,$00
|
|
DB $1E,$22,$22,$1E
|
|
DB $0A,$12,$22,$00
|
|
DB $1C,$22,$02,$1C
|
|
DB $20,$22,$1C,$00
|
|
DB $3E,$08,$08,$08
|
|
DB $08,$08,$08,$00
|
|
DB $22,$22,$22,$22
|
|
DB $22,$22,$1C,$00
|
|
DB $22,$22,$22,$92
|
|
DB $14,$8C,$08,$00
|
|
DB $22,$22,$22,$2A
|
|
DB $2A,$36,$22,$00
|
|
DB $22,$92,$14,$08
|
|
DB $14,$92,$22,$00
|
|
DB $22,$92,$14,$08
|
|
DB $08,$08,$08,$00
|
|
DB $3E,$90,$10,$08
|
|
DB $04,$82,$3E,$00
|
|
DB $3E,$06,$06,$06
|
|
DB $06,$06,$3E,$00
|
|
DB $00,$02,$04,$08
|
|
DB $10,$20,$00,$00
|
|
DB $3E,$30,$30,$30
|
|
DB $30,$30,$3E,$00
|
|
DB $00,$00,$08,$14
|
|
DB $22,$00,$00,$00
|
|
DB $00,$00,$00,$00
|
|
DB $00,$00,$00,$7F
|
|
*
|
|
* #1012 DELETED LAST $100 OF FONT TABLE
|
|
* BECAUSE ASCII CHARS $60-7F NOT USED
|
|
*
|
|
MNEML DFB 28,138
|
|
DFB 28,35,93,139,27,161,157,138
|
|
DFB 29,35,157,139,29,161,28,41
|
|
DFB 25,174,105,168,25,35,36,83
|
|
DFB 27,35,36,83,25,161,173,26
|
|
DFB 165,91,165,172,139,138,174,174
|
|
DFB 168,173,41,138,124,139,21,156
|
|
DFB 109,156,165,105,41,83,132,19
|
|
DFB 52,17,165,105,35,160
|
|
MNEMR DFB 216,98
|
|
DFB 90,72,38,98,148,136,84,68
|
|
DFB 200,84,104,68,232,148,196,180
|
|
DFB 8,132,116,180,40,110,116,244
|
|
DFB 204,74,114,242,164,138,6,170
|
|
DFB 118,162,116,198,116,116,68,104
|
|
DFB 178,50,178,114,34,114,26,26
|
|
DFB 38,38,114,114,136,200,196,202
|
|
DFB 38,72,68,68,162,200
|
|
FMT1 DFB 240,34,0,51,93,130,0,147
|
|
DFB 243,34,0,51,93,136,0,153
|
|
DFB 240,47,0,51,93,143,0,159
|
|
DFB 240,34,0,59,93,136,0,148
|
|
DFB 253,34,0,51,93,200,0,147
|
|
DFB 17,34,0,51,93,200,0,169
|
|
DFB 241,34,0,51,93,143,0,159
|
|
DFB 241,34,0,51,93,143,0,159
|
|
DFB 38,49,135,154
|
|
REPL65C DFB 17,49,81,113,145,177
|
|
DFB 209,241,194,226,52,164,172,196
|
|
DFB 228,92,92,92,92,124,60,52
|
|
DFB 124,160,160,160,160,192,192
|
|
DFB 224,224
|
|
RTBL ASC "AXY"
|
|
TITLE DFB $8D
|
|
ASC "ANALYST 128XG"
|
|
DFB $8D
|
|
ASC "BUILD = 1023"
|
|
DFB $8D
|
|
ASC "ORG = "
|
|
BANKORG ASC "$"
|
|
DFB $00
|
|
NOT65C DFB $8D
|
|
ASC "65C02 REQ'D"
|
|
DFB $8D
|
|
DOSTR ASC "3F5<3D0G"
|
|
DFB $8D
|
|
FMT2 DFB 0,33,129,130,90,73,89,77
|
|
DFB 145,146,134,74,133,157
|
|
CHAR3 ASC "CZIDB-VN"
|
|
OPC65C DFB 18,50,82,114
|
|
DFB 146,178,210,242,58,26,137,28
|
|
DFB 20,122,90,156,100,158,116,124
|
|
DFB 60,52
|
|
DFB 76,164,172,180,188,196,204,228
|
|
DFB 236
|
|
CHRTBL DFB 198,152,249,177,241,3
|
|
DFB 236,6,149,5
|
|
DFB 0,147,2,167,153
|
|
DFB 155,239,233,1,191
|
|
DFB 168,237,159,235,197
|
|
SUBTBL DW BL1-1 F(CR) MUST BE 1ST IN TBL
|
|
DW HELP-1 F(?) LIST PC'S TRACED
|
|
DW SETVID-1 F(@) SWITCH 40/80 COL
|
|
DW AUXV-1 F(CTRL-X) MOVE TO AUX
|
|
DW AUXRW-1 F(X) MAIN/AUX $200-BFFF
|
|
DW EXECJSR-1 F(J) EXECUTE JSR
|
|
DW STEP-1 F(S) STEP
|
|
DW MOVE-1 F(M) MOVE
|
|
DW LT-1 F(<) COPY A2 TO A4 & A5
|
|
DW LIST-1 F(L) LIST DISASSEMBLY
|
|
DW GO-1 F(G) GO
|
|
DW SETMODE-1 F(:) STORE
|
|
DW SETREG-1 F(I) SET INTERNAL PC/REG
|
|
DW SETMODE-1 F(.) XAM
|
|
DW BLANK-1 F( ) HANDLE SPACES
|
|
DW ASC-1 F(") DUMP IN ASCII
|
|
DW PRTITLE-1 F(V) PRINT TITLE
|
|
DW SETPRNT-1 F(P) TO PRINTER
|
|
DW LOAD-1 F(H) LOAD FOR HSF
|
|
DW FIND-1 F(CTRL-F) HEX SEQ. FIND
|
|
DW SETDOS-1 F(/) SET DOS CALL JSR #.
|
|
DW TRACE-1 F(T) TRACE
|
|
DW EXDOS-1 F(&) EXIT TO DOS
|
|
DW RELOC-1 F(R) RELOCATOR
|
|
DW HOME-1 F(CTRL-L) CLEAR SCREEN
|
|
OUTVECT DW VIDOUT
|
|
HCOUTLOC DW HCOUT
|
|
FONTLOC DW FONTADR
|
|
STARTLOC DW START
|
|
ENDLOC DW PGMEND MARKER FOR END OF CODE TO RELOC
|
|
SKP 1
|
|
* DYNAMIC PROGRAM AREA *
|
|
SKP 1
|
|
GBASE DFB $40 $20 = HGR $40 = HGR2
|
|
CSWL DS 1 ADDR. OF OUTPUT ROUTINE
|
|
CSWH DS 1
|
|
TFLG DS 1 <>0 = CANCEL COUT FOR TRC
|
|
JFLG DS 1 SET TO ALLOW F(J)
|
|
DOSCALL DW MLI ROUTINE TO JSR IMMED.
|
|
ERRFLG DS 1 SET FOR BAD OPCODE
|
|
ASFLAG DS 1 #1022 NZ WHEN APPLESOFT NEWSTT ENCOUNTERED
|
|
PCREG DS 2,0
|
|
ACC DFB 0 DON'T CHANGE ORDER
|
|
XREG DFB 0 OF ACC TO SPNT
|
|
YREG DFB 0
|
|
STATUS DFB 0
|
|
SPNT DFB $FF
|
|
SREF DFB $FF STACK REF SET BY TXS OPC
|
|
LMNEM DS 1
|
|
RMNEM DS 1
|
|
LENGTH DS 1
|
|
FORMAT DS 1
|
|
MODE DS 1
|
|
FLG8 DS 1 FF = 80 COL, 0 = 40 COL
|
|
WNDWDTH DS 1
|
|
PROMPT DS 1
|
|
CH DS 1
|
|
CV DFB 0
|
|
DSPTOP DS 1 TOP OF DISPLAY FOR STEP
|
|
YSAV DS 1
|
|
YSAV1 DS 1
|
|
PCPNT DFB 0 INDEX TO PCBUF
|
|
BRKADDR DS 2,255 BREAK FOR STEP,TRACE,LIST
|
|
TEMP1 DS 1 FOR INSTDSP AND STEP.
|
|
TEMP2 DS 1 FOR STEP.
|
|
TEMP3 DS 1 FOR STEP.
|
|
PCFLG DS 1 PRNTPC ON/OFF FOR TRACE
|
|
COUNTER DS 1 FOR TRACE
|
|
ZBUF DS $100-PCL PAGE ZERO STORAGE BUFFER
|
|
LST ON
|
|
PAGEFIL EQU >*
|
|
DS $FF-PAGEFIL
|
|
ROMFLG DFB 1 1 = TRACE JSR ROM $D000-FFFF
|
|
* LST OFF
|
|
STACK DS $100,0 MUST BE ON PAGE BOUNDARY
|
|
PGMEND EQU * #1020 PAGE ALIGNED END OF MOVE
|
|
* LST NOASYM
|