NLS TTL "S:SETUP" NOG ORG = $5800 ; ; 06/11/85 ; 10/03/85 last mod ; ; Print Shop Companion ; ; SETUP option, updates original ; Print Shop disk to recognize ; Companion disk and fixes a few bugs! ; Also grabs PRCOMMS, CONFIG from ; original Print Shop disk. ; ; by Roland Gustafsson ; Copyright 1985 ; TMP0 EPZ $F0 TMP1 EPZ $F1 TMP2 EPZ $F2 TMP3 EPZ $F3 ; MAINMENU = $800 ; PRCOMS = $1800 PRCOMLEN = 8 ;----------- ; ; Subroutine package: ; SP = $E000 ; PRINT = SP CLSCREEN = SP+3 WITEBORD = SP+6 ESCBACK = SP+9 PICDRAW = SP+12 ; DEVICENW = SP+15 DEVICEON = SP+18 DEVICEOF = SP+21 DEVICERD = SP+24 DEVICEST = SP+27 SCALING = SP+30 ; POLEBTN = SP+31 POLEKEY = SP+34 GETKEY = SP+37 SELECT = SP+40 ; SETTYPE = SP+43 GETFILE = SP+46 SAVEFILE = SP+49 TYPELEN = SP+52 FLSTART = SP+53 FLLENGTH = SP+55 BLOAD = SP+57 BSAVE = SP+60 DOSCR = SP+63 ERROR = SP+66 ; MUSIC = SP+69 FLSHINIT = SP+72 JMPVECTS = SP+75 LINES = SP+78 PARSE = SP+81 SHOWAROW = SP+84 NUMBER = SP+87 WAITPSD = SP+90 WAITCD = SP+93 ANYKEY = SP+96 CHKPRINT = SP+99 BOOP = SP+102 GETINIT = SP+105 GETBYTE = SP+108 INPUT = SP+111 CLS1 = SP+114 PRINTGRP = SP+117 RTOS = SP+120 SPACEBAR = SP+123 GETPDISK = SP+126 ESCMAIN = SP+129 ; WITE = $FF GRAY = $AA BLAK = $00 ; PRNORM = 1 PRINVR = 2 PRLEFT = 3 PRRITE = 4 PRCNTR = 5 PRLOC = 6 PRSMAL = 7 PRBIG = 8 PRSTR = 9 PRSPC = 10 PRHTAB = 11 PRVTAB = 12 CR = 13 NOCR = 14 RTOSBLAK = 15 RTOSWITE = 16 RTOSANY = 17 PRCSPACE = 18 GOOBER = 24 ; ; Monitor routines: ; RTS = $FF58 ; ; SYSLIB ; MENULAST = $95F5 MENUOTHR = $95F6 FIRSTIME = $95F7 ;----------- ESC = $1B ; MENUTOP = 20 MENU0Y = 70 MENU1Y = 64 MENU2Y = 72 ;----------- ORG ORG OBJ $800 ; START LDX #$FF TXS JSR WITEBORD JSR ESCBACK JSR PRINT BYT PRBIG,PRCNTR,PRINVR .DA #PRLOC,140,#1 BYT 'SETUP',CR,0 ; LDA FIRSTIME BNE >0 JMP MENUFRST ; ^0 JSR PRINT BYT PRCNTR BYT PRVTAB,MENU0Y BYT 'MAKE A CHOICE:',CR BYT CR .DA #PRSTR,MENUTXT1,#CR .DA #PRSTR,MENUTXT2,#CR BYT 'GO TO MAIN MENU',CR BRK START2 JSR PRINT BYT PRVTAB,MENUTOP,0 ; ^0 LDY #00 SEL1 = *-1 JSR SELECT BYT 3,34,MENU0Y+15,3 ADR RTS BCS >2 STY SEL1 JSR CLS1 JSR >1 JMP START ; ^1 LDA #6 STA MENULAST LDY SEL1 JSR JMPVECTS ADR MENU1 ADR MENU2 ADR MAINMENU ; ^2 JSR ESCMAIN BCS START2 ; CLS3 JSR PRINT BYT RTOSBLAK,1,31,38,151,0 RTS ;----------- TXTTOU BYT 'THIS OPTION UPDATES',0 TXTFYWU BYT 'FIRST YOU WILL UPDATE',0 TXTNYWU BYT 'NEXT YOU WILL UPDATE',0 TXTPS BYT 'PRINT SHOP',0 TXTINFO BYT 'INFORMATION',0 ;----------- ; ; Borrow PRCOMMS and CONFIG from ; original Print Shop disk and save ; them on the Companion disk. ; MENUTXT1 BYT 'UPDATE ' CDSTXT BYT 'COMPANION DISK SETUP',0 ; MENU1A LDX #TXTNYWU LDA /TXTNYWU STX >0+1 STA >0+2 ; MENU1 JSR PRINT BYT PRCNTR .DA #PRSTR,MENUTXT1,#CR BYT PRVTAB,MENU1Y ^0 .DA #PRSTR,TXTTOU,' THE',#CR BYT 'COMPANION DISK WITH THE SETUP',CR .DA #PRSTR,TXTINFO BYT ' FROM THE ORIGINAL',CR .DA #PRSTR,TXTPS,'. THIS INCLUDES',#CR BYT 'PRINTER, INTERFACE AND DISK',CR BYT 'DRIVE ' .DA #PRSTR,TXTINFO,'.',#CR BRK JSR ANYKEY CMP #ESC BEQ MENU1DON ; JSR CLS3 LDA #$80 MENU1FLG = *-1 ASL ^0 JSR WAITPSD2 BCS MENU1DON JSR BLOAD BYT 'PRCOMS,D1',0 JSR ERROR? BCS <0 ; JSR FXPRCOMS ; JSR BLOAD BYT 'CONFIG',0 JSR ERROR? BCS <0 ; ; Has the SETUP program been run on ; the original Print Shop? ; LDA FIRSTIME BEQ >2 ; LDA #0 STA MENULAST ;--- SEC ^1 JSR WAITCD2 BCS <0 JSR BSAVE BYT 'PRCOMS,A$1800,L$800',0 JSR ERROR? BCS <1 ; JSR BSAVE BYT 'CONFIG,A$95F0,L$10',0 JSR ERROR? BCS <1 ; MENU1DON RTS ;--- ; ; Setup was never run on the original ; Print Shop. ; ^2 JSR MUSIC JSR PRINT BYT PRCNTR .DA #PRLOC,140,#68 BYT 'YOU MUST FIRST RUN SETUP',CR BYT CR BYT 'ON YOUR ' .DA #PRSTR,TXTPS BYT ' DISK.',CR BRK JSR ANYKEY LDA #7 STA MENULAST JMP MAINMENU ;----------- ; ; Scan through PRCOMS file ; and change all references to ; the $9600 page to $8900. ; ; Uses monitor routine $F88C ; ; Given: X=0, $3A.3B pointing to data ; ; Return: $2F=length of instrucion-1 ; FXPRCOMS LDY #PRCOMS LDA /PRCOMS STY $3A STA $3B LDA #PRCOMLEN STA TMP0 ^0 LDX #0 LDA ($3A,X) JSR $F88E LDY $2F CPY #2 BNE >2 LDA ($3A),Y CMP #$96 BNE >2 ; ; Now check for appropriate ; instructions, JSR, JMP or ; LDA $FFFF,Y ; LDY #0 LDA ($3A),Y CMP #$20 BEQ >1 CMP #$4C BEQ >1 CMP #$B9 BNE >2 ; ; LDA $890E,Y ; There is at least one version ; of the Print Shop that doesn't ; use the LDA $960E,Y table but ; one at $9608,Y !!! ; INY LDA #$0E STA ($3A),Y ; ; Change page reference to $8900 ; ^1 LDY #2 LDA #$89 STA ($3A),Y ; ^2 TYA SEC ADC $3A STA $3A BCC <0 INC $3B DEC TMP0 BNE <0 RTS ;----------- ; ; Update original Print Shop disk to ; recognize "FROM OTHER DISK" for ; borders and fonts, also fix a few ; bugs associated with "FROM OTHER ; DISK" ; MENUTXT2 BYT 'UPDATE PRINT SHOP DISK',0 ; MENU2A LDX #TXTFYWU LDA /TXTFYWU STX >0+1 STA >0+2 ; MENU2 JSR PRINT BYT PRCNTR .DA #PRSTR,MENUTXT2,#CR BYT PRVTAB,MENU2Y ^0 .DA #PRSTR,TXTTOU,' YOUR',#CR .DA #PRSTR,TXTPS BYT ' DISK TO RECOGNIZE',CR BYT 'BORDERS AND FONTS',CR BYT 'FROM OTHER DISKS',CR,0 JSR ANYKEY CMP #ESC BEQ >0 ; JSR M2MODS ; ^0 RTS ;----------- ; ; Make changes to PRINT SHOP files ; M2MODS SEC ^0 JSR WAITPSD2 BCS M2MODS2 ; ; Make sure Print Shop is checked ; for protection ; LDA #8 ^1 PHA JSR GOOBERDO PLA SEC SBC #1 BNE <1 ; JSR FXCONFIG BCS <0 JSR FXHELLO BCS <0 JSR FXMENLIB BCS <0 JSR FXMENUS1 BCS <0 JSR FXMENUS5 BCS <0 JSR FXDRAW3 BCS <0 ; M2MODS2 RTS ;----------- ; ; "HELLO" file ; FXHELLO JSR SWAP800 JSR BLOAD BYT 'HELLO',0 JSR ERROR? BCS SWAP800 ; ; Fix bug with printer cards that ; use $C800 space. If any other ; card is using that space, then ; the PRCOMS will crash. ; LDY #CFFFLEN-1 ^0 LDA CFFFMOD,Y STA $83D,Y DEY BPL <0 ; ; FONT from other disk bug, was ; LDA, should have been LDX ; LDA #$A2 STA $D58 ; ; Move $1800 bytes, not $1700 ; LDA #$18 STA $D74 ; ; pressed when asking for ; DATA DISK, didn't clear screen ; LDA #$97 STA $BBB ; ; New routine to get SUPP file ; LDY #SUPPFIXL-1 ^0 LDA SUPPFIX,Y STA $BC0,Y DEY BPL <0 ; ; New text for supplemental disk ; LDY #SUPPTXTL-1 ^0 LDA SUPPTEXT,Y STA $C28,Y DEY BPL <0 ; LDY #SUPPTX2L-1 ^1 LDA SUPPTXT2,Y STA $C62,Y DEY BPL <1 ; LDA #$3B STA $BA9 ; ; Change SUPP filename to [CD] ; LDY #3 ^0 LDA SUPPNAME,Y STA $CA9,Y DEY BPL <0 ; JSR BSAVE BYT 'HELLO,A$800,L$800',0 JSR ERROR? ; SWAP800 LDA #8 JMP SWAP ;--- ; ; Hit $CFFF when booting ; CFFFMOD LDA $CFFF LDA $C000 CMP #$9B BNE *+5 CFFFLEN = *-CFFFMOD ; ; Replacement text for ; "SUPPLEMENTAL DISK" ; SUPPTEXT BYT 'DATA DISK IN ' BYT 'DRIVE 2' DFS 8,$20 BYT 0 SUPPTXTL = *-SUPPTEXT ; SUPPTXT2 BYT ' DATA DISK ' BYT 0,0 SUPPTX2L = *-SUPPTXT2 ; SUPPNAME BYT '[CD]' ; ; Change to SUPP routine ; SUPPFIX LDA #0 STA $B00D LDX #$A9 LDY #$0C JSR $0CD2 BEQ >0 JSR $B53 LDX #$9D LDY #$0C JSR $8E06 JSR $8005 JMP $0B8E ^0 LDA $CB1 JSR $6300 NOP NOP NOP SUPPFIXL = *-SUPPFIX ;----------- ; ; "MENULIB" file ; FXMENLIB JSR BLOAD BYT 'MENULIB',0 JSR ERROR? BCS >9 ; ; Better way of checking for 16k ; RAMcard. Old one killed contents ; LDY #RMCHKLEN-1 ^0 LDA RMCHK,Y STA $78D6,Y DEY BPL <0 ; ; Enable to work during ; CATALOGs!!! ; LDY #$E0 LDA #$81 STY $80C1 STA $80C2 LDY #PAKMSG2L-1 ^1 LDA PAKMSG2,Y STA $81E0,Y DEY BPL <1 ; ; Fix PSDCHK bug which causes ; DISK ERROR if you try to use ; COMPANION disk as a graphic ; data disk. ; LDY #PSDCHKL-1 ^0 LDA PSDCHK,Y STA $77D9,Y DEY BPL <0 ; JSR BSAVE BYT 'MENULIB,A$6000,L$21F8',0 JSR ERROR? ; ^9 RTS ;--- ; ; New RAMcard check routine ; RMCHK LDA $C083 LDA $C083 LDY $D000 LDX #0 ^0 STX $D000 CPX $D000 BNE >1 INX BNE <0 ^1 STY $D000 STA $C082 RTS RMCHKLEN = *-RMCHK ;--- ; ; Patch to allow ESC exit ; from CATALOG ; PAKMSG2 JSR $80F4 AND #$7F CMP #ESC BNE >0 PLA PLA ^0 RTS PAKMSG2L = *-PAKMSG2 ;--- ; ; Correct error in PSDCHK which ; returned SEC for any data disk ; that had a 3 or greater at loc ; TS(17,0) offset $FF ; ; PSDCHK LDA #0 STA $B00D SEC ROL PSDCHKL = *-PSDCHK ;----------- ; ; "CONFIG" file ; FXCONFIG JSR BLOAD BYT 'CONFIG,A$55F0',0 JSR ERROR? BCS >0 ; ; Enable FROM OTHER DISK messages ; LDA MENUOTHR-$4000 CMP #4 BGE >1 LDA #3 STA MENUOTHR-$4000 ; LDY #15 ^0 LDA $55F0,Y STA $95F0,Y DEY BPL <0 ; JSR BSAVE BYT 'CONFIG,A$95F0,L16',0 JSR ERROR? ; ^0 RTS ;--- ; ; Don't update this Print Shop ; ^1 JSR CLS3 JSR MUSIC JSR PRINT BYT PRCNTR .DA #PRLOC,140,#MENU2Y+8 BYT 'THIS ' .DA #PRSTR,TXTPS BYT ' DISK DOES',CR BYT 'NOT NEED TO BE UPDATED.',CR BRK JSR ANYKEY PLA PLA CLC RTS ;----------- FXMENUS1 JSR BLOAD BYT 'MENUS1',0 JSR ERROR? BCS >9 ; ; Fix bug in greeting card when ; using two different fonts from ; other disk, edit window got ; wrong information after printing ; and backing up with ; LDX #$E0 LDY #$54 STX $4AD4 STY $4AD5 ; LDY #MEN1FLEN-1 ^0 LDA MENU1FIX,Y STA $54E0,Y DEY BPL <0 ; JSR BSAVE BYT 'MENUS1,A$4000,L$17F8',0 JSR ERROR? ; ^9 RTS ;--- MENU1FIX LDA #$60 STA $D6F JSR $D27 LDA #$A9 STA $D6F LDA $C082 JMP $4204 MEN1FLEN = *-MENU1FIX ;----------- ; ; "MENUS5" files ; FXMENUS5 JSR SWAP1000 ; JSR BLOAD BYT 'MENUS5',0 JSR ERROR? BCS SWAP1000 ; ; Screen Magic Font bug, didn't ; get parameters in the correct ; order ; LDY #SMFIXLEN-1 ^0 LDA SMFIX,Y STA $154A,Y DEY BPL <0 ; JSR BSAVE BYT 'MENUS5,A$1000,L$DF8',0 JSR ERROR? ; SWAP1000 LDA #$10 JMP SWAP ; ; Screen Magic patch ; SMFIX: TEXT2 = *-$21 ; LDA $81F STA $1BC4 LDA $820 STA $1BB2 LDA $821 STA $1BBB LDX $85C0 DEX LDA $1BBC,X STA $7904 LDA $15AB,X ASL ASL ASL SEC SBC $15AB,X STA $7905 LDA #01 STA $7906 JSR $7900 DEC $7906 LDA $83FF CMP #$1B BEQ TEXT2 JSR $7016 LDA $85C0 JSR $810 SMFIXLEN = *-SMFIX ;----------- ; ; "DRAW3" file (LETTERHEAD) ; FXDRAW3 JSR BLOAD BYT 'DRAW3',0 JSR ERROR? BCS >9 ; ; Letterhead draw enhancement. ; LDX #$A2 LDA #$00 STX $7B66 STA $7B67 LDX #$4C LDY #$D1 LDA #$7C STX $7B68 STY $7B69 STA $7B6A ; LDY #LHDRWLEN-1 ^0 LDA LHDRWFIX,Y STA $7CD1,Y DEY BPL <0 ; JSR BSAVE BYT 'DRAW3,A$7800,L$4F8',0 JSR ERROR? ; ^9 RTS ; ; This routine enhances the ; Letterhead draw routine by ; automatically doubling fonts ; that are small enough to be ; doubled. ; LHDRWFIX LDA $87C0 CMP #7 BLT >3 CMP #10 BNE >2 LDY #'Z'-$20 ^0 CPY #$20 BEQ >1 LDA $603B,Y CMP #19+1 BGE >3 ^1 DEY BPL <0 ^2 INX ^3 STX $8A0B RTS LHDRWLEN = *-LHDRWFIX ;----------- ; ; Enter with A= DOS error code ; ERROR? BNE >0 CLC RTS ; ^0 JSR ERROR SEC RTS ;----------- WAITPSD2 JSR WAITPSD ^0 BCS >1 GOOBERDO JSR PRINT BYT GOOBER,0 ^1 RTS ; WAITCD2 LDA #1 JSR WAITCD BCC <0 RTS ;----------- ; ; Swap memory given A=page ; ; Swaps 16 pages with $6000 ; SWAP LDX #$10 LDY #0 STY TMP0 STA TMP1 LDA #$60 STY TMP2 STA TMP3 ; ^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 ;----------- ; ; Update Print Shop and Companion ; for the first time. ; MENUFRST LSR MENU1FLG LDA #1 JSR MENUF LDA #0 JSR MENUF JMP MAINMENU ; MENUF PHA JSR CLS1 JSR PRINT .DA #PRLOC,140,#MENUTOP BRK PLA TAY JSR >1 BCC >0 JSR PRINT BYT RTOSBLAK,1,160,38,23,0 JSR ESCMAIN PLA PLA BCS MENUFRST ^0 RTS ; ^1 JSR JMPVECTS ADR MENU1A ADR MENU2A ;----------- ; ; ; USR "SETUP,S4",ORG END