PrintShopCompanion-Apple-II/PSC Source Disk 2 - Editors.../S_BOEDIT4.txt

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"