PrintShopCompanion-Apple-II/PSC Source Disk 1 - System .../S_8E00.txt

273 lines
4.6 KiB
Plaintext

NLS
TTL "S:8E00"
ORG = $8E00
;
GETBTNS = $8900
;
SP = $E000
;
POLEKEY = SP+31
FLSHINIT = SP+72
PARSE = SP+81
RTOS = SP+120
;
X0 EPZ $3A
Y0 EPZ $3B
WIDTH EPZ $3C
HEIGHT EPZ $3D
;-----------
;
; AUX SYSTEM LIB ROUTINES
;
XTEMP EPZ $70
YTEMP EPZ $71
DADDR EPZ $80
SADDR EPZ $82
;
STRING = $8A00
XBYTE2 EQU $9398
;*
ORG ORG
OBJ $800
;*
JMP GETBTNS
JMP TINPUT
PARAMS HEX 0000
INMAX HEX 00
;----------------
; GDOIT - X,Y ADDR OF PARAMS
; DRAW CONSECUTIVE STRINGS
; Y+=9 EACH TIME
;
GDOIT LDA #00
STA INMAX
GPRINT LDA DADDR
PHA
LDA DADDR+1
PHA
LDA SADDR
PHA
LDA SADDR+1
PHA
STX DADDR
STY DADDR+1
LDY #04
LDA (DADDR),Y
PHA
LDY #09
LDA (DADDR),Y
PHA
INY
LDA (DADDR),Y
PHA
*
GDOIT0 LDY #11
GDOIT1 LDA (DADDR),Y
STA STRING+3,Y
DEY
BPL GDOIT1
JSR STRING
LDA STRING+12
STA SADDR
LDA STRING+13
STA SADDR+1
LDY #00
GDOIT2 LDA (SADDR),Y
BEQ GDOIT3
INY
BNE GDOIT2
GDOIT3 STY STRPTR
INY
LDA (SADDR),Y
CMP #$FF
BEQ GDOITX
LDA INMAX
BNE GDOITX
TYA
LDY #09
CLC
ADC (DADDR),Y
STA (DADDR),Y
INY
LDA (DADDR),Y
ADC #00
STA (DADDR),Y
LDY #04
LDA (DADDR),Y
CLC
ADC #08
STA (DADDR),Y
JMP GDOIT0
*
GDOITX LDY #10
PLA
STA (DADDR),Y
DEY
PLA
STA (DADDR),Y
LDY #04
PLA
STA (DADDR),Y
RESTORE PLA
STA SADDR+1
PLA
STA SADDR
PLA
STA DADDR+1
PLA
STA DADDR
RTS
;------------------
;
; TEXT INPUT
;
TINPUT LDA PARAMS
STA GETPARAM+1
LDA PARAMS+1
STA GETPARAM+2
LDA SADDR
PHA
LDA SADDR+1
PHA
LDX #09
JSR GETPARAM
STA SADDR
INX
JSR GETPARAM
STA SADDR+1
TINPUT1 LDX #02
JSR GETPARAM
TAY
LDA XBYTE2,Y
STA X0
LDA #39
SEC
SBC X0
STA WIDTH
LDX #04
JSR GETPARAM
STA Y0
LDA #07
STA HEIGHT
LDA #$A9
LDY #$00
JSR RTOS
LDX PARAMS
LDY PARAMS+1
JSR GPRINT
LDA STRING+5
STA CURSX
LDA STRING+6
STA CURSX+1
;---
;
; Get a key
;
KEYIN JSR FLSHINIT
JSR CURSOR
^0 JSR POLEKEY
BMI >1
DEC $4E
BNE <0
DEC $4F
BPL <0
BMI KEYIN
;
^1 PHA
JSR CURSOFF
PLA
;
; Process keypress
;
CMP #$0D
BEQ RETURN
CMP #$1B
BEQ ESC
CMP #$08
BEQ BS
CMP #$7F
BEQ BS
CMP #$05
BEQ CTRLE
CMP #','
BEQ KEYIN
CMP #'@'
BEQ KEYIN
;
CMP #' '
BLT KEYIN
CMP #'Z'+1
BGE KEYIN
*
LDY STRPTR
CPY #00
BNE CHAR2
CMP #' '
BEQ KEYIN
LDY INMAX
CPY #15
BNE CHAR2
CMP #'A'
BLT KEYIN
CHAR2 LDY STRPTR
CPY INMAX
BCS KEYIN
STA (SADDR),Y
INY
BNE BS2
*
BS LDY STRPTR
BEQ KEYIN
DEY
BS2 LDA #00
BEQ CTRLE2
*
CTRLE LDA #00
TAY
CTRLE2 STA (SADDR),Y
STY STRPTR
JT1 JMP TINPUT1
*
RETURN CLC
HEX 24
*
ESC SEC
PLA
STA SADDR+1
PLA
STA SADDR
RTS
;---
;
; Plot cursor
;
CURSOR LDA #4
HEX 2C
CURSOFF LDA #03
STA STRING+3
LDA #00
STA STRING+10
STA STRING+4
LDA CURSX
STA STRING+5
LDA CURSX+1
STA STRING+6
LDA #CURSTR
STA STRING+12
LDA /CURSTR
STA STRING+13
JMP STRING
*
CURSTR ASC 'II'
HEX 00
*
GETPARAM LDA $8000,X
RTS
*
STRPTR HEX 00
CFLAG HEX 00
CURSX HEX 0000
*
USR "O:8E00",ORG
END