845 lines
16 KiB
Plaintext
845 lines
16 KiB
Plaintext
TTL "S:FOEDIT"
|
|
; S:FOEDIT1
|
|
NOG
|
|
ORG = $4000
|
|
ORGLOAD = $6000
|
|
ORGDIFF = ORGLOAD-ORG
|
|
TAILORG = $9600
|
|
;
|
|
; 08/02/85
|
|
; 09/10/85 last mod
|
|
;
|
|
; Font Editor main control
|
|
;
|
|
; The Print Shop Companion
|
|
;
|
|
; Copyright 1985
|
|
; by Roland Gustafsson
|
|
;
|
|
;
|
|
XOFF = 1
|
|
XOFF2 = XOFF*7
|
|
YOFF = 38
|
|
FONTW = 48
|
|
FONTH = 38
|
|
;
|
|
SDX = 113
|
|
SDY = YOFF+4
|
|
SDW = 4
|
|
SDH = 9
|
|
;---
|
|
FONTBUFF = $5FF4
|
|
MAXLEN = $1800
|
|
;
|
|
FONT1BUF = $6000
|
|
FONT1W = FONT1BUF
|
|
FONT1H = FONT1BUF+$3B
|
|
FONT1AL = FONT1BUF+$76
|
|
FONT1AH = FONT1BUF+$B1
|
|
FONT1BEG = FONT1BUF+$EC
|
|
;
|
|
FONT2BUF = $7800
|
|
FONT2W = FONT2BUF
|
|
FONT2H = FONT2BUF+$3B
|
|
FONT2AL = FONT2BUF+$76
|
|
FONT2AH = FONT2BUF+$B1
|
|
FONT2BEG = FONT2BUF+$EC
|
|
;
|
|
UFONTBUF = $8500
|
|
UFONTW = UFONTBUF
|
|
;
|
|
DAT EPZ $00
|
|
;
|
|
LENLO EPZ DAT
|
|
LENHI EPZ DAT+1
|
|
;
|
|
OLDCHAR EPZ DAT+2
|
|
OLDLEN EPZ DAT+3
|
|
;
|
|
NEWCHAR EPZ DAT+4
|
|
NEWWITH EPZ DAT+5
|
|
NEWHITE EPZ DAT+6
|
|
NEWLEN EPZ DAT+7
|
|
;
|
|
ACC1LO EPZ DAT+8
|
|
ACC1HI EPZ DAT+9
|
|
ACC2LO EPZ DAT+10
|
|
ACC2HI EPZ DAT+11
|
|
REMLO EPZ DAT+12
|
|
REMHI EPZ DAT+13
|
|
;
|
|
SAVED? EPZ DAT+14
|
|
;-----------
|
|
ORG ORG
|
|
OBJ $800
|
|
;-----------
|
|
START JMP MOVEPROG+ORGDIFF
|
|
JMP MOVEREFS
|
|
;-----------
|
|
ASC "COPYRIGHT 1985 "
|
|
ASC "ROLAND GUSTAFSSON"
|
|
;
|
|
TXTCTRL BYT 'CTRL-',0
|
|
TXTTOCLR BYT ' TO CLEAR ',0
|
|
TXTTOPRN BYT ' TO PRINT ',0
|
|
;-----------
|
|
;
|
|
; Set default font to MEDIUM REFERENCE
|
|
;
|
|
START2 JSR MOVUFONT
|
|
LDY #1
|
|
JSR SGRFONT2
|
|
;-----------
|
|
;
|
|
; Draw Font Editor main screen
|
|
;
|
|
SCR1MAIN JSR SCREEN1
|
|
JSR SHOWDONE
|
|
;
|
|
^0 JSR LOADCHAR
|
|
LSR REFFLAGS
|
|
JSR SHOWGR
|
|
ASL REFFLAGS
|
|
JSR SHOWCURR
|
|
JSR GETKEY
|
|
JSR >1
|
|
BCC <0
|
|
BCS SCR1MAIN
|
|
;
|
|
^1 JSR PARSE
|
|
.DA #'G'-$40,SCR1GET
|
|
.DA #'S'-$40,SCR1SAVE
|
|
.DA #'Q'-$40,SCR1QUIT
|
|
.DA #'C'-$40,SCR1CLR
|
|
.DA #'P'-$40,SCR1PRIN
|
|
.DA #CR,SCR1EDIT
|
|
.DA #'@',SCR1SKIP
|
|
.DA #' ',SCR1SKIP
|
|
BRK
|
|
SEC
|
|
SBC #$20
|
|
CMP #'Z'-$1F
|
|
BGE SCR1SKIP
|
|
STA OLDCHAR
|
|
SCR1SKIP CLC
|
|
RTS
|
|
;-----------
|
|
;
|
|
; Clear the "done bit" flags
|
|
;
|
|
SCR1CLR JSR PRINT
|
|
BYT PRCNTR
|
|
.DA #PRLOC,140,#184
|
|
.DA #PRSTR,TXTPRET
|
|
.DA #PRSTR,TXTTOCLR
|
|
BYT 'LIST',CR
|
|
BRK
|
|
JSR WAITCR
|
|
BNE >1
|
|
;
|
|
LDY #'Z'-$20
|
|
^0 LDA FONT1W,Y
|
|
AND #$7F
|
|
STA FONT1W,Y
|
|
DEY
|
|
BPL <0
|
|
JSR BLAKDONE
|
|
JSR SHOWDONE
|
|
;
|
|
^1 JMP BLAKBOTM
|
|
;-----------
|
|
SCR1PRIN JSR CKPRINT
|
|
BCS <1
|
|
JSR PRINT
|
|
BYT PRCNTR
|
|
.DA #PRSTR,TXTPRET
|
|
.DA #PRSTR,TXTTOPRN
|
|
.DA #PRSTR,TXTFONT,#CR
|
|
BRK
|
|
JSR WAITCR
|
|
BNE <1
|
|
JSR DEVICEOF
|
|
JSR PRINFONT
|
|
JSR DEVICEON
|
|
SEC
|
|
RTS
|
|
;-----------
|
|
;
|
|
; Load the character to edit
|
|
;
|
|
SCR1EDIT JSR SHOWGR
|
|
JSR BUFFSAVE
|
|
;
|
|
; Edit without reloading char or
|
|
; messing with the UNDO buffer.
|
|
;
|
|
^0 JSR SCR2RITE
|
|
JSR EDITCHAR
|
|
BCS >3
|
|
;
|
|
; Left justify the character
|
|
;
|
|
JSR LEFTJUST
|
|
;
|
|
; Now select where to store this
|
|
; character.
|
|
;
|
|
JSR BLAKDONE
|
|
JSR SHOWDONE
|
|
JSR BLAKBOTM
|
|
;
|
|
SCR3AGAN JSR SCR3RITE
|
|
LDA OLDCHAR
|
|
STA NEWCHAR
|
|
;
|
|
^1 LDY #SC3Y1+25
|
|
JSR SCR3KEY
|
|
PHA
|
|
JSR BLAKBOTM
|
|
PLA
|
|
CMP #CR
|
|
BEQ SCR3ESTR
|
|
CMP #ESC
|
|
BEQ <0
|
|
;
|
|
CMP #'@'
|
|
BEQ >2
|
|
CMP #'!'
|
|
BCC >2
|
|
CMP #'Z'+1
|
|
BCS >2
|
|
SBC #$1F
|
|
STA NEWCHAR
|
|
BNE <1
|
|
;
|
|
; Attempt to store NEWCHAR
|
|
;
|
|
SCR3ESTR JSR SCR3ALRY
|
|
BCS SCR3AGAN
|
|
SEC
|
|
ROR SAVED?
|
|
JSR SAVECHAR
|
|
BCC >5
|
|
ASL SAVED?
|
|
JSR PRINT
|
|
BYT PRCNTR
|
|
.DA #PRLOC,140,#185
|
|
BYT 'NOT ENOUGH ROOM ! '
|
|
BYT 'SEE MANUAL.',NOCR,0
|
|
;
|
|
^2 JSR BOOP
|
|
JMP SCR3AGAN
|
|
;
|
|
^3 JSR CMPCHAR
|
|
BEQ >4
|
|
JSR CMPCHAR
|
|
JSR BLAKBOTM
|
|
JSR MUSIC
|
|
JSR PRINT
|
|
BYT PRCNTR
|
|
.DA #PRLOC,140,#185
|
|
BYT PRCSPACE,1
|
|
BYT '<ESC> TO MAIN SCREEN WILL ERASE CHANGES',CR,0
|
|
JSR GETKEY
|
|
CMP #ESC
|
|
BEQ >4
|
|
JMP <0
|
|
;
|
|
^4 JSR BLAKDONE
|
|
;
|
|
^5 JSR SHOWDONE
|
|
JSR TOP1
|
|
JSR SCR1RITE
|
|
CLC
|
|
RTS
|
|
;-----------
|
|
BLAKDONE JSR PRINT
|
|
BYT RTOSBLAK,16,32,9,126,0
|
|
RTS
|
|
;-----------
|
|
;
|
|
; Save the graphic
|
|
;
|
|
SCR1SAVE JSR CALCHEAD
|
|
;
|
|
LDY LENLO
|
|
LDA LENHI
|
|
STY SETLEN
|
|
STA SETLEN+1
|
|
JSR SETADR
|
|
JSR SAVEFILE
|
|
BCS >0
|
|
LSR SAVED?
|
|
^0 SEC
|
|
RTS
|
|
;-----------
|
|
;
|
|
; Get a font
|
|
;
|
|
TXTGET BYT 'GET',0
|
|
;
|
|
SCR1GET LDX #TXTGET
|
|
LDY /TXTGET
|
|
JSR NEEDSAVE
|
|
JSR GETTEXT
|
|
JSR SETADR
|
|
^0 LDY #00
|
|
SEC
|
|
JSR FGETMAIN
|
|
BCS >1
|
|
STY <0+1
|
|
JSR SCR1GET2
|
|
BCS <0
|
|
LDA #0
|
|
;
|
|
; Special secret command!
|
|
; type password during GET
|
|
; and press ESC to double the
|
|
; font in memory. MAY CRASH
|
|
; if font is too big...
|
|
;
|
|
^1 EOR #6
|
|
BNE >2
|
|
INC DUBLMOD
|
|
JSR SGMOVE
|
|
DEC DUBLMOD
|
|
;
|
|
^2 SEC
|
|
RTS
|
|
;---
|
|
SCR1GET2 JSR JMPVECTS
|
|
ADR SGRFONT
|
|
ADR SGPSD
|
|
ADR SGCD
|
|
ADR SGOD
|
|
;---
|
|
;
|
|
; Get from Print Shop disk
|
|
;
|
|
SGPSD LDY #00
|
|
JSR FGETPSD
|
|
STY SGPSD+1
|
|
BCS >9
|
|
STY TMP5
|
|
JMP SGMOVE
|
|
;---
|
|
;
|
|
; Get from Companion disk
|
|
;
|
|
SGCD LDY #00
|
|
JSR FGETCD
|
|
STY SGCD+1
|
|
BCS >9
|
|
JMP SGMOVE
|
|
;---
|
|
;
|
|
; Get font from other disk
|
|
;
|
|
SGOD SEC
|
|
JSR GETFILE
|
|
LDY #11
|
|
STY TMP5
|
|
BCC SGMOVE
|
|
^9 RTS
|
|
;---
|
|
;
|
|
; Select reference size font
|
|
;
|
|
SGRFY = 60
|
|
;
|
|
SGRFONT JSR MOVUFONT
|
|
JSR CLS1
|
|
JSR PRINT
|
|
.DA #PRLOC,140,#SGRFY
|
|
BYT PRCNTR
|
|
BYT 'CHOOSE SIZE:',CR
|
|
BYT CR
|
|
BYT 'SMALL',CR
|
|
BYT 'MEDIUM',CR
|
|
BYT 'LARGE',CR,0
|
|
;
|
|
^0 LDY #00
|
|
JSR SELECT
|
|
BYT 15,10,SGRFY+15,3
|
|
ADR RTS
|
|
BCS <9
|
|
STY <0+1
|
|
;
|
|
SGRFONT2 TYA
|
|
PHA
|
|
JSR MOVEFONT
|
|
PLA
|
|
CLC
|
|
ADC #8
|
|
TAY
|
|
JMP SGSETREF
|
|
;---
|
|
;
|
|
; Save $8000.8FFF
|
|
;
|
|
SGMOVE JSR CLS1
|
|
JSR SWAPD000
|
|
;
|
|
; Move font data to buffer2
|
|
;
|
|
LDY #0
|
|
LDA /FONT1BUF
|
|
STY TMP0
|
|
STA TMP1
|
|
LDA /FONT2BUF
|
|
STY TMP2
|
|
STA TMP3
|
|
LDX #$18
|
|
^1 LDA (TMP0),Y
|
|
STA (TMP2),Y
|
|
INY
|
|
BNE <1
|
|
INC TMP1
|
|
INC TMP3
|
|
DEX
|
|
BNE <1
|
|
;
|
|
; Now do lint removal and unpacking
|
|
;
|
|
LDY #0
|
|
DUBLMOD = *-1
|
|
JSR MOVEFONT
|
|
JSR SWAPD000
|
|
;
|
|
; Set the reference lines
|
|
;
|
|
LDA FONT1W+$20
|
|
STA REFX1
|
|
LDA FONT1H+$20
|
|
STA REFY1
|
|
LDA FONT1AL+$20
|
|
STA REFY2
|
|
;
|
|
LDA FONT1AH+$20
|
|
CMP #$58
|
|
BLT >0
|
|
;
|
|
; If no reference lines, then use
|
|
; lookup table
|
|
;
|
|
LDY TMP5
|
|
SGSETREF LDA PSREFX1,Y
|
|
STA REFX1
|
|
LDA PSREFY1,Y
|
|
STA REFY1
|
|
LDA PSREFY2,Y
|
|
STA REFY2
|
|
;
|
|
^0 LDA #'A'-$20
|
|
STA OLDCHAR
|
|
LSR SAVED?
|
|
CLC
|
|
RTS
|
|
;
|
|
; Reference line lookup table
|
|
; First 8 are for Print Shop fonts
|
|
; then 3 are for the reference fonts
|
|
; the last one is the default
|
|
;
|
|
PSREFX1 BYT 35,27,23,21,19,15,10,12
|
|
BYT 6,13,27,13
|
|
PSREFY1 BYT 15,10,12,9,9,7,7,6
|
|
BYT 2,5,11,5
|
|
PSREFY2 BYT 29,29,25,24,24,17,16,14
|
|
BYT 6,13,27,13
|
|
;---
|
|
;
|
|
; SWAP $D000 area
|
|
;
|
|
SWAPD000 BIT $C083
|
|
BIT $C083
|
|
LDY #0
|
|
LDA #$80
|
|
STY TMP0
|
|
STA TMP1
|
|
LDA #$D0
|
|
STY TMP2
|
|
STA TMP3
|
|
LDX #16
|
|
^0 LDA (TMP0),Y
|
|
PHA
|
|
LDA (TMP2),Y
|
|
STA (TMP0),Y
|
|
PLA
|
|
STA (TMP2),Y
|
|
INY
|
|
BNE <0
|
|
INC TMP1
|
|
INC TMP3
|
|
DEX
|
|
BNE <0
|
|
RTS
|
|
;-----------
|
|
;
|
|
; GET text window
|
|
;
|
|
GETTEXT JSR WITEBORD
|
|
JSR PRINT
|
|
BYT PRINVR,PRRITE
|
|
.DA #PRLOC,149,#4
|
|
.DA #PRSTR,TXTFEDIT
|
|
BYT ':',CR
|
|
BYT PRBIG,PRLEFT
|
|
.DA #PRLOC,160,#1
|
|
BYT 'GET',CR,0
|
|
JMP ESCBACK
|
|
;-----------
|
|
;
|
|
; Set load/save parameters
|
|
;
|
|
SETADR JSR SETTYPE
|
|
TXTFONT BYT 'FONT',0
|
|
TXTFEDIT BYT 'FONT EDITOR',0
|
|
BYT 'FONT.',0
|
|
BYT 0
|
|
ADR FONTBUFF
|
|
SETLEN ADR 0
|
|
RTS
|
|
;-----------
|
|
;
|
|
; Quit the editor
|
|
;
|
|
TXTQUIT BYT 'QUIT',0
|
|
;
|
|
SCR1QUIT LDX #TXTQUIT
|
|
LDY /TXTQUIT
|
|
JSR NEEDSAVE
|
|
PHP
|
|
JSR BLAKBOTM
|
|
JSR PRINT
|
|
.DA #PRLOC,140,#184
|
|
BYT PRCNTR
|
|
.DA #PRSTR,TXTPRET,' TO '
|
|
.DA #PRSTR,TXTGTMM,#NOCR,#0
|
|
JSR WAITCR
|
|
BNE >0
|
|
JMP MAINMENU
|
|
^0 JSR BLAKBOTM
|
|
PLP
|
|
RTS
|
|
;-----------
|
|
TXTGTMM BYT 'GO TO MAIN MENU',0
|
|
TXTPRET BYT 'PRESS '
|
|
TXTRET BYT '<RETURN>',0
|
|
;-----------
|
|
;
|
|
; Draw initial screen
|
|
;
|
|
SCREEN1 JSR CLSCREEN
|
|
JSR TOP1
|
|
;
|
|
; Edit box
|
|
;
|
|
JSR PRINT
|
|
BYT RTOSANY,$7E,XOFF-1,YOFF-6,1,12+3*FONTH
|
|
BYT RTOSWITE,XOFF,YOFF-6,14,12+3*FONTH
|
|
BYT RTOSANY,$0F,XOFF+14,YOFF-6,1,12+3*FONTH
|
|
BRK
|
|
JSR LINES
|
|
BYT 'H'
|
|
BYT GRAY,XOFF2-4,YOFF-4,8+2*FONTW
|
|
BYT GRAY,XOFF2-4,YOFF-3,8+2*FONTW
|
|
BYT GRAY,XOFF2-4,YOFF+2+3*FONTH,8+2*FONTW
|
|
BYT GRAY,XOFF2-4,YOFF+3+3*FONTH,8+2*FONTW
|
|
BYT 1
|
|
JSR LINES
|
|
BYT 'V'
|
|
BYT GRAY,XOFF2-4,YOFF-4,8+3*FONTH
|
|
BYT GRAY,XOFF2-3,YOFF-4,8+3*FONTH
|
|
BYT GRAY,XOFF2+2+2*FONTW,YOFF-4,8+3*FONTH
|
|
BYT GRAY,XOFF2+3+2*FONTW,YOFF-4,8+3*FONTH
|
|
BYT 1
|
|
;
|
|
; Right side of SCREEN1
|
|
;
|
|
S1SPC = 18
|
|
SC1Y1 = 20
|
|
SC1Y2 = SC1Y1+67
|
|
;
|
|
SCR1RITE JSR BLAKRITE
|
|
JSR PRINT
|
|
BYT PRCNTR
|
|
.DA #PRLOC,XCENT,#SC1Y1
|
|
BYT 'SELECT',CR
|
|
BRK
|
|
JSR MESS1
|
|
JSR PRINT
|
|
BYT PRCNTR
|
|
BYT 'PRESS',CR
|
|
.DA #PRSTR,TXTRET,#CR
|
|
BYT 'TO EDIT',CR
|
|
;
|
|
BYT RTOSWITE,26,SC1Y2,14,2
|
|
;
|
|
BYT PRSPC,S1SPC
|
|
BYT PRLEFT
|
|
.DA #PRLOC,XEDGE,#SC1Y2+9
|
|
.DA #PRSTR,TXTCTRL,'G',#CR
|
|
.DA #PRSTR,TXTCTRL,'S',#CR
|
|
.DA #PRSTR,TXTCTRL,'P',#CR
|
|
.DA #PRSTR,TXTCTRL,'C',#CR
|
|
.DA #PRSTR,TXTCTRL,'Q',#CR
|
|
BYT PRRITE
|
|
.DA #PRLOC,279,#SC1Y2+9+4
|
|
.DA #PRSTR,TXTFONT,#CR
|
|
.DA #PRSTR,TXTFONT,#CR
|
|
.DA #PRSTR,TXTFONT,#CR
|
|
BYT 'LIST',CR
|
|
.DA #PRLOC,279,#SC1Y2+5
|
|
BYT 'GET',CR
|
|
BYT 'SAVE',CR
|
|
BYT 'PRINT',CR
|
|
BYT PRSPC,S1SPC+4
|
|
BYT 'CLEAR',CR
|
|
BYT 'QUIT',CR
|
|
BYT RTOSWITE,26,SC1Y2+91,14,2
|
|
;
|
|
MUY = YOFF+124
|
|
BYT PRLEFT
|
|
.DA #PRLOC,3,#MUY
|
|
BYT 'MEMORY USED: %',CR
|
|
BRK
|
|
JSR CALCMEM
|
|
LDX #16
|
|
LDY #MUY
|
|
JMP NUMBER
|
|
;-----------
|
|
MESS1 JSR PRINT
|
|
BYT PRCNTR
|
|
.DA #PRSTR,TXTCHAR,#CR
|
|
BYT 'USING THE',CR
|
|
BYT 'KEYBOARD',CR
|
|
BYT CR,0
|
|
RTS
|
|
;-----------
|
|
;
|
|
; Show the current letter
|
|
;
|
|
SCY = MUY+9
|
|
SCX1 = 108
|
|
SCX2 = 16
|
|
SCX2B = SCX2*7
|
|
;
|
|
SHOWCURR LDA OLDCHAR
|
|
CLC
|
|
ADC #$20
|
|
STA >0+0
|
|
JSR PRINT
|
|
BYT PRRITE
|
|
.DA #PRLOC,SCX1,#SCY
|
|
.DA #PRSTR,TXTCHAR
|
|
BYT ':',NOCR
|
|
BYT RTOSWITE,SCX2,SCY-1,2,9
|
|
.DA #PRHTAB,SCX2B+7
|
|
BYT PRCNTR
|
|
BYT PRINVR
|
|
^0 BYT ' ',NOCR,0
|
|
RTS
|
|
;-----------
|
|
;
|
|
; Top line of screen
|
|
;
|
|
TOPX = 140
|
|
;
|
|
TOP JSR PRINT
|
|
BYT RTOSWITE,0,0,40,16
|
|
BYT PRRITE,PRINVR
|
|
.DA #PRLOC,TOPX,#4
|
|
.DA #PRSTR,TXTFEDIT
|
|
BYT ':',CR
|
|
.DA #PRLOC,TOPX+5,#1
|
|
BRK
|
|
RTS
|
|
;
|
|
TOP1 JSR TOP
|
|
JSR PRINT
|
|
BYT PRBIG,PRINVR
|
|
BYT 'MAIN',CR,0
|
|
RTS
|
|
;
|
|
T2X = 105
|
|
T2Y = 74
|
|
TOP2 JSR BLAKDONE
|
|
JSR PRINT
|
|
BYT RTOSWITE,17,T2Y-2,7,35
|
|
BYT PRCNTR,PRINVR
|
|
.DA #PRLOC,143,#T2Y
|
|
BYT PRCSPACE,1
|
|
BYT 'PRESS',CR
|
|
.DA #PRSTR,TXTCTRL,'S',#CR
|
|
BYT 'WHEN',CR
|
|
BYT 'DONE',CR
|
|
BYT PRCSPACE,2
|
|
BYT RTOSWITE,0,0,26,16
|
|
BYT PRRITE
|
|
.DA #PRLOC,T2X,#4
|
|
.DA #PRSTR,TXTFEDIT
|
|
BYT ':',CR
|
|
.DA #PRLOC,T2X+5,#1
|
|
BYT PRBIG,PRLEFT
|
|
BYT 'EDIT',CR,0
|
|
RTS
|
|
;
|
|
TOP3 JSR TOP
|
|
JSR PRINT
|
|
BYT PRBIG,PRINVR
|
|
BYT 'STORE',CR,0
|
|
RTS
|
|
;-----------
|
|
;
|
|
; Right side of SCREEN3
|
|
;
|
|
SC3Y1 = YOFF+11
|
|
SC3Y2 = 164
|
|
;
|
|
TXTTSA BYT 'TO STORE AS',0
|
|
;
|
|
SCR3RITE JSR PRINT
|
|
BYT RTOSBLAK,26,16,14,169,0
|
|
JSR TOP3
|
|
JSR PRINT
|
|
BYT PRCNTR
|
|
.DA #PRLOC,XCENT,#SC3Y1
|
|
BYT 'PRESS',CR
|
|
.DA #PRSTR,TXTRET,#CR
|
|
.DA #PRSTR,TXTTSA,#CR
|
|
BYT PRVTAB,SC3Y1+36
|
|
BYT 'OR STORE AS',CR
|
|
BYT 'A DIFFERENT',CR
|
|
BRK
|
|
JSR MESS1
|
|
;
|
|
JSR PRINT
|
|
BYT RTOSWITE,26,SC3Y2-5,14,2
|
|
BYT PRVTAB,SC3Y2
|
|
BRK
|
|
JMP >0
|
|
;---
|
|
;
|
|
; Error message for right side
|
|
; of screen 3, when user tries
|
|
; to save character more than
|
|
; once.
|
|
;
|
|
SC3Y9 = SC3Y1-12
|
|
SCR3RIT2 JSR BLAKRITE
|
|
JSR MUSIC
|
|
JSR PRINT
|
|
BYT RTOSANY,$60,26,SC3Y9-8,1,132
|
|
BYT RTOSANY,$60,39,SC3Y9-8,1,132
|
|
BYT RTOSWITE,27,SC3Y9-8,13,2
|
|
BYT RTOSWITE,27,SC3Y9+122,13,2
|
|
BYT PRCNTR
|
|
.DA #PRLOC,XCENT,#SC3Y9
|
|
BYT 'WARNING !',CR
|
|
BYT CR
|
|
BYT 'YOU HAVE',CR
|
|
BYT 'ALREADY',CR
|
|
BYT 'STORED A',CR
|
|
.DA #PRSTR,TXTCHAR,#CR
|
|
BYT PRSPC,2,CR,PRSPC,8
|
|
BYT 'AS: ',CR
|
|
BYT PRSPC,2,CR,PRSPC,8
|
|
BYT 'PRESS',CR
|
|
.DA #PRSTR,TXTRET,#CR
|
|
BYT PRSPC,12
|
|
BYT 'TO STORE',CR
|
|
BYT 'OR',CR
|
|
BRK
|
|
;---
|
|
^0 JSR PRINT
|
|
BYT PRCNTR
|
|
BYT '<ESC> TO',CR
|
|
BYT 'GO BACK',CR
|
|
BRK
|
|
RTS
|
|
;---
|
|
;
|
|
; Show NEWCHAR and get key
|
|
;
|
|
SCR3KEY STY SLOP0
|
|
STY SLOP2
|
|
INY
|
|
STY SLOP1
|
|
;
|
|
LDA NEWCHAR
|
|
CLC
|
|
ADC #$20
|
|
STA >0+0
|
|
JSR PRINT
|
|
BYT RTOSBLAK,32,SC3Y1+25,2,9
|
|
SLOP0 = *-3
|
|
BYT PRCNTR
|
|
.DA #PRLOC,XCENT,#SC3Y1+26
|
|
SLOP1 = *-1
|
|
^0 BYT '?',CR,0
|
|
;---
|
|
ASL TMP0
|
|
^0 JSR SCR3CURS
|
|
JSR FLSHINIT
|
|
ASL FLASHLO
|
|
ROL FLASHHI
|
|
^1 JSR POLEBTN
|
|
BMI >2
|
|
DEC FLASHLO
|
|
BNE <1
|
|
DEC FLASHHI
|
|
BPL <1
|
|
BMI <0
|
|
;
|
|
SCR3CURS JSR PRINT
|
|
BYT RTOSINV,32,SC3Y1+25,2,9,0
|
|
SLOP2 = *-4
|
|
INC TMP0
|
|
^2 RTS
|
|
;-----------
|
|
;
|
|
; Check to see if this char has
|
|
; already been stored. If so,
|
|
; display message. SEC=<ESC>
|
|
; CLC=ok to store.
|
|
;
|
|
SCR3ALRY LDY NEWCHAR
|
|
LDA FONT1W,Y
|
|
BPL >1
|
|
JSR SCR3RIT2
|
|
^0 LDY #SC3Y9+49
|
|
JSR SCR3KEY
|
|
CMP #ESC
|
|
BEQ >2
|
|
CMP #CR
|
|
BEQ >1
|
|
JSR BOOP
|
|
JMP <0
|
|
;
|
|
^1 CLC
|
|
^2 RTS
|
|
;-----------
|
|
;
|
|
; Wait for return key
|
|
; with flashing bottom line
|
|
;
|
|
WAITCR JSR PRINT
|
|
BYT RTOSINV,0,183,40,9,0
|
|
JSR FLSHINIT
|
|
^0 JSR POLEBTN
|
|
BNE >1
|
|
DEC FLASHLO
|
|
BNE <0
|
|
DEC FLASHHI
|
|
BPL <0
|
|
BMI WAITCR
|
|
;
|
|
^1 CMP #CR
|
|
RTS
|
|
;-----------
|
|
;
|
|
;
|
|
;
|
|
ICL "S:FOEDIT2"
|