331 lines
6.5 KiB
Plaintext
331 lines
6.5 KiB
Plaintext
;
|
|
; S:BOEDIT4
|
|
;
|
|
;-----------
|
|
;
|
|
; Print border
|
|
;
|
|
BPWIDTH = 120
|
|
CRLF = $1803
|
|
SENDGC = $1806
|
|
GCOUT = $1809
|
|
;
|
|
PRINTBR LDA #24
|
|
JSR PRINTBR2
|
|
JSR PRINTBR2
|
|
LDA #120
|
|
JSR PRINTBR2
|
|
JSR PRINTBR2
|
|
LDX #12
|
|
LDY #1
|
|
JMP CRLF
|
|
;
|
|
PRINTBR2 STA TMP2
|
|
LDX #BPWIDTH
|
|
LDY #0
|
|
STY TMP0
|
|
JSR SENDGC
|
|
LDA #32
|
|
JSR PRINTBR3
|
|
LDX TMP2
|
|
^0 LDA #23
|
|
STA TMP1
|
|
^1 LDY BORDBASE+4,X
|
|
LDA FLIPPER,Y
|
|
JSR GCOUT
|
|
INX
|
|
INC TMP0
|
|
DEC TMP1
|
|
BNE <1
|
|
INX
|
|
TXA
|
|
CLC
|
|
ADC #24
|
|
TAX
|
|
CPX #96
|
|
BLT <0
|
|
LDA #BPWIDTH
|
|
SEC
|
|
SBC TMP0
|
|
JSR PRINTBR3
|
|
LDX #7
|
|
LDY #1
|
|
JSR CRLF
|
|
LDA TMP2
|
|
SEC
|
|
SBC #24
|
|
RTS
|
|
;
|
|
; Output X zero bytes
|
|
;
|
|
PRINTBR3 TAX
|
|
^0 LDA #0
|
|
JSR GCOUT
|
|
INC TMP0
|
|
DEX
|
|
BNE <0
|
|
RTS
|
|
;-----------
|
|
;
|
|
; Get a border from the original
|
|
; Print Shop. All of them are stored
|
|
; in here in packed format.
|
|
;
|
|
GETPSDSK JSR GETTEXT
|
|
JSR PRINT
|
|
BYT PRCNTR
|
|
.DA #PRLOC,140,#26
|
|
.DA #PRSTR,CABTEXT,#CR
|
|
BYT PRVTAB,66
|
|
BYT 'THIN LINE',CR
|
|
BYT 'DOUBLE LINE',CR
|
|
BYT 'THICK LINE',CR
|
|
BYT 'BEADS',CR
|
|
BYT 'LATTICE',CR
|
|
BYT 'FLORAL',CR
|
|
BYT 'STARS',CR
|
|
BYT 'HEARTS',CR
|
|
BYT 'WICKER',CR
|
|
BRK
|
|
^0 LDY #00
|
|
JSR SELECT
|
|
BYT 11,18,65,9
|
|
ADR GETPSHOW
|
|
BCS >1
|
|
;
|
|
; Unpack actual data and store it
|
|
;
|
|
STY <0+1
|
|
TYA
|
|
ASL
|
|
TAX
|
|
LDA PSBRDTBL,X
|
|
STA TMP0
|
|
LDA PSBRDTBL+1,X
|
|
STA TMP1
|
|
LDA #48
|
|
STA TMP4
|
|
LDY #BORDBASE+4
|
|
LDA /BORDBASE+4
|
|
JSR GETPSUNP
|
|
CLC
|
|
^1 RTS
|
|
;-----------
|
|
;
|
|
; Given X=table pointer, unpack
|
|
; data into MINIBUFF and display it
|
|
;
|
|
GETPSHOW LDA BORDBASE
|
|
PHA
|
|
LDA PSSCRTBL,X
|
|
STA TMP0
|
|
LDA PSSCRTBL+1,X
|
|
STA TMP1
|
|
LDA #28
|
|
STA TMP4
|
|
LDY #MINIBUFF
|
|
LDA /MINIBUFF
|
|
JSR GETPSUNP
|
|
;
|
|
; Got the border in buffer, now
|
|
; display it
|
|
;
|
|
LDX #6
|
|
LDY #39
|
|
STX MINIX
|
|
STY MINIY
|
|
LDX #14
|
|
LDY #9
|
|
SEC
|
|
JSR MINITUR2
|
|
PLA
|
|
STA BORDBASE
|
|
RTS
|
|
;-----------
|
|
;
|
|
; Given TMP4=28 for screen, 48 for
|
|
; printer data. A,Y=dest buffer.
|
|
;
|
|
GETPSUNP STY >3+1
|
|
STA >3+2
|
|
;
|
|
; TMP4=TMP4 * 3
|
|
;
|
|
LDA TMP4
|
|
STA TMP2
|
|
ASL
|
|
ADC TMP2
|
|
STA TMP4
|
|
;
|
|
LDY #7
|
|
CPX #2*2
|
|
BLT >0
|
|
;
|
|
LDY #0
|
|
LDA TMP2
|
|
;
|
|
^0 STY BORDBASE
|
|
;
|
|
; First unpack border into buffer.
|
|
; For 1 and 2 all 3 sections
|
|
; are defined and info byte=7
|
|
;
|
|
; For the rest, decompress 3 times,
|
|
; until X=LEN*3 (TMP4)
|
|
;
|
|
; TMP2=counter
|
|
; TMP3=repeat counter
|
|
;
|
|
LDX #0
|
|
^1 PHA
|
|
STA TMP2
|
|
LDY #$FF
|
|
^2 LDA #1
|
|
STA TMP3
|
|
INY
|
|
LDA (TMP0),Y
|
|
BPL >3
|
|
AND #$7F
|
|
STA TMP3
|
|
INY
|
|
LDA (TMP0),Y
|
|
^3 STA $FFFF,X
|
|
INX
|
|
DEC TMP2
|
|
BEQ >4
|
|
DEC TMP3
|
|
BNE <3
|
|
BEQ <2
|
|
;
|
|
^4 PLA
|
|
CPX TMP4
|
|
BLT <1
|
|
RTS
|
|
;-----------
|
|
;
|
|
PSBRDTBL ADR PSBRD1
|
|
ADR PSBRD2
|
|
ADR PSBRD3
|
|
ADR PSBRD4
|
|
ADR PSBRD5
|
|
ADR PSBRD6
|
|
ADR PSBRD7
|
|
ADR PSBRD8
|
|
ADR PSBRD9
|
|
;
|
|
PSSCRTBL ADR PSSCR1
|
|
ADR PSSCR2
|
|
ADR PSSCR3
|
|
ADR PSSCR4
|
|
ADR PSSCR5
|
|
ADR PSSCR6
|
|
ADR PSSCR7
|
|
ADR PSSCR8
|
|
ADR PSSCR9
|
|
;
|
|
; Borders from original Print Shop
|
|
; disk in compressed format.
|
|
;
|
|
PSBRD1 HEX 827F9600827F9501
|
|
HEX 9900970100827F96
|
|
HEX 00827F9600
|
|
;
|
|
PSSCR1 HEX 827F030003000300
|
|
HEX 0300030003000300
|
|
HEX 0300030003000300
|
|
HEX 03000300827F9A00
|
|
HEX 0300030003000300
|
|
HEX 0300030003000300
|
|
HEX 0300030003000300
|
|
HEX 03000300
|
|
;-------
|
|
PSBRD2 HEX 827F89008A40827F
|
|
HEX 00827F9501009701
|
|
HEX 00970100827F8900
|
|
HEX 827F8B00827F8900
|
|
HEX 827F8B00
|
|
;
|
|
PSSCR2 HEX 827F030003000300
|
|
HEX 0300030003000360
|
|
HEX 0360036003600360
|
|
HEX 036003837F8C0082
|
|
HEX 7F8C009C03
|
|
;-------
|
|
PSBRD3 HEX 977F00977F00
|
|
;
|
|
PSSCR3 HEX 9C7F
|
|
;-------
|
|
PSBRD4 HEX 00030F1F1C3D303A
|
|
HEX 3075606A6075603A
|
|
HEX 3035381E1F0F0382
|
|
HEX 00407078383C0C5C
|
|
HEX 0C2E0656062E065C
|
|
HEX 0C2C5C8278704000
|
|
;
|
|
PSSCR4 HEX 4003700F18192C34
|
|
HEX 0C3126640E712664
|
|
HEX 0C312C341819700F
|
|
HEX 40038200
|
|
;-------
|
|
PSBRD5 HEX 7182738274820C82
|
|
HEX 1C8221618221821C
|
|
HEX 820C827482737100
|
|
HEX 4782678217821882
|
|
HEX 1C8242438242821C
|
|
HEX 8218821782674700
|
|
;
|
|
PSSCR5 HEX 477167731774180C
|
|
HEX 821C022084630220
|
|
HEX 821C180C17746773
|
|
HEX 4771
|
|
;-------
|
|
PSBRD6 HEX 0001020A16821211
|
|
HEX 091D84231D091182
|
|
HEX 12160A0201820060
|
|
HEX 10141A821222646E
|
|
HEX 84716E642282121A
|
|
HEX 14106000
|
|
;
|
|
PSSCR6 HEX 82004001380E2412
|
|
HEX 24125C1D62236223
|
|
HEX 5C1D24122412380E
|
|
HEX 40018300
|
|
;-------
|
|
PSBRD7 HEX 008301830382070F
|
|
HEX 3F7F3F0F82078303
|
|
HEX 8301860083408260
|
|
HEX 707C7E7C70826083
|
|
HEX 408600
|
|
;
|
|
PSSCR7 HEX 0001000140034003
|
|
HEX 6007781F7E7F781F
|
|
HEX 6007400340030001
|
|
HEX 00018300
|
|
;-------
|
|
PSBRD8 HEX 8200018203820682
|
|
HEX 0C1830703018820C
|
|
HEX 8206820301830038
|
|
HEX 7C7E46840307060C
|
|
HEX 180C06078403467E
|
|
HEX 7C3800
|
|
;
|
|
PSSCR8 HEX 82001C0E3E1F6739
|
|
HEX 4330033007380E82
|
|
HEX 1C0E380760014085
|
|
HEX 00
|
|
;-------
|
|
PSBRD9 HEX 827F8348824F8948
|
|
HEX 827F8340827F0082
|
|
HEX 7F8301827F890982
|
|
HEX 798309827F00
|
|
;
|
|
PSSCR9 HEX 827F19401940797F
|
|
HEX 194C194C194C194C
|
|
HEX 194C194C7F4F014C
|
|
HEX 014C827F
|
|
;-----------
|
|
;
|
|
;
|
|
;
|
|
ICL "S:BOEDIT5"
|