initial commit

This commit is contained in:
Roland Gustafsson 2017-06-15 00:15:35 -07:00
parent 8b9340131f
commit f54669b997
149 changed files with 68318 additions and 1 deletions

View File

@ -0,0 +1,14 @@
5 PRINT "MONC"
10 LL = - 21920:LH = - 21919: DEF FN L(A) = PEEK (LL) + 256 * PEEK (LH)
20 PRINT "BLOAD IPL,A$4000":BF = 16384 + FN L(0)
30 READ F$,AL,AH: POKE BF,AL: POKE BF + 1,AH:BF = BF + 2: IF AH THEN PRINT "BLOAD "F$",A"BF + 2: POKE BF, PEEK (LL): POKE BF + 1, PEEK (LH):BF = BF + 2 + FN L(0): GOTO 30
40 REM GOSUB100
45 REM EX$=",V12":GOSUB100
46 EX$ = ",S4": GOSUB 100
50 END
100 PRINT "BSAVE "F$",A16384,L"BF - 16384;EX$: RETURN
1000 DATA "SUBPAK",0,224: REM $E000
1010 DATA "SYSLIB2",0,133: REM $8500
1020 DATA "O:HELLO",0,8: REM $0800
2000 DATA "HELLO",,
63999 PRINT "SAVE MH"

View File

@ -0,0 +1,108 @@
4000- 20 59 40 JSR $4059
4003- 20 CC 40 JSR $40CC
4006- 20 0F 40 JSR $400F
4009- 20 0F E0 JSR $E00F
400C- 4C 00 08 JMP $0800
400F- 2C 83 C0 BIT $C083 rw:LCBANK2
4012- 2C 83 C0 BIT $C083 rw:LCBANK2
4015- A0 E6 LDY #$E6
4017- A9 40 LDA #$40
4019- 84 3A STY $3A
401B- 85 3B STA $3B
401D- A0 00 LDY #$00
401F- 20 50 40 JSR $4050
4022- 85 3C STA $3C
4024- 20 50 40 JSR $4050
4027- 85 3D STA $3D
4029- 05 3C ORA $3C
402B- F0 2B BEQ $4058
402D- 20 50 40 JSR $4050
4030- AA TAX
4031- 20 50 40 JSR $4050
4034- 85 3F STA $3F
4036- 20 50 40 JSR $4050
4039- 91 3C STA ($3C),Y
403B- E6 3C INC $3C
403D- D0 02 BNE $4041
403F- E6 3D INC $3D
4041- 8A TXA
4042- D0 02 BNE $4046
4044- C6 3F DEC $3F
4046- CA DEX
4047- D0 ED BNE $4036
4049- 8A TXA
404A- 05 3F ORA $3F
404C- D0 E8 BNE $4036
404E- F0 CF BEQ $401F
4050- B1 3A LDA ($3A),Y
4052- E6 3A INC $3A
4054- D0 02 BNE $4058
4056- E6 3B INC $3B
4058- 60 RTS
4059- 2C 83 C0 BIT $C083 rw:LCBANK2
405C- 2C 83 C0 BIT $C083 rw:LCBANK2
405F- A2 00 LDX #$00
4061- 8E 00 E0 STX $E000
4064- EC 00 E0 CPX $E000
4067- D0 04 BNE $406D
4069- E8 INX
406A- D0 F5 BNE $4061
406C- 60 RTS
406D- 2C 81 C0 BIT $C081 rw:ROMIN
4070- 20 2F FB JSR $FB2F F8ROM:INIT
4073- 20 58 FC JSR $FC58 F8ROM:HOME
4076- 20 84 FE JSR $FE84 F8ROM:SETNORM
4079- 20 93 FE JSR $FE93 F8ROM:SETVID
407C- 20 89 FE JSR $FE89 F8ROM:SETKBD
407F- A9 08 LDA #$08
4081- 20 5B FB JSR $FB5B F8ROM:TABV
4084- A0 00 LDY #$00
4086- B9 99 40 LDA $4099,Y
4089- F0 FE BEQ $4089
408B- 20 ED FD JSR $FDED F8ROM:COUT
408E- C9 8D CMP #$8D
4090- D0 04 BNE $4096
4092- A9 07 LDA #$07
4094- 85 24 STA $24
4096- C8 INY
4097- D0 ED BNE $4086
4099- 8D D4 C8 STA $C8D4
409C- C5 A0 CMP $A0
409E- D0 D2 BNE $4072
40A0- C9 CE CMP #$CE
40A2- D4 ???
40A3- A0 D3 LDY #$D3
40A5- C8 INY
40A6- CF ???
40A7- D0 A0 BNE $4049
40A9- C3 ???
40AA- CF ???
40AB- CD D0 C1 CMP $C1D0
40AE- CE C9 CF DEC $CFC9
40B1- CE 8D 8D DEC $8D8D
40B4- A0 D2 LDY #$D2
40B6- C5 D1 CMP $D1
40B8- D5 C9 CMP $C9,X
40BA- D2 C5 CMP ($C5)
40BC- D3 ???
40BD- A0 B6 LDY #$B6
40BF- B4 CB LDY $CB,X
40C1- A0 CF LDY #$CF
40C3- C6 A0 DEC $A0
40C5- CD C5 CD CMP $CDC5
40C8- CF ???
40C9- D2 D9 CMP ($D9)
40CB- 00 BRK
40CC- A0 00 LDY #$00
40CE- A9 F8 LDA #$F8
40D0- 84 3A STY $3A
40D2- 85 3B STA $3B
40D4- 2C 81 C0 BIT $C081 rw:ROMIN
40D7- 2C 81 C0 BIT $C081 rw:ROMIN
40DA- B1 3A LDA ($3A),Y
40DC- 91 3A STA ($3A),Y
40DE- C8 INY
40DF- D0 F9 BNE $40DA
40E1- E6 3B INC $3B
40E3- D0 F5 BNE $40DA
40E5- 60 RTS

View File

@ -0,0 +1,8 @@
FP
MONCIO
BLOAD SYSLIB2,A$8500
BLOAD O:FDRAW,A$8A00
BLOAD O:8800 ,A$8800
BLOAD O:8E00 ,A$8E00
BSAVE SYSLIB2,A$8500,L$10C8
RUN MH

View File

@ -0,0 +1,269 @@
8800- 4C 58 FC JMP $FC58 F8ROM:HOME
8803- 4C 40 88 JMP $8840
8806- 00 BRK
8807- 00 BRK
8808- 00 BRK
8809- 00 BRK
880A- 00 BRK
880B- 80 00 BRA $880D
880D- 4C 85 88 JMP $8885
8810- 00 BRK
8811- 80 00 BRA $8813
8813- 80 00 BRA $8815
8815- 80 00 BRA $8817
8817- 80 28 BRA $8841
8819- A8 TAY
881A- 28 PLP
881B- A8 TAY
881C- 28 PLP
881D- A8 TAY
881E- 28 PLP
881F- A8 TAY
8820- 50 D0 BVC $87F2
8822- 50 D0 BVC $87F4
8824- 50 D0 BVC $87F6
8826- 50 D0 BVC $87F8
8828- 04 04 TSB $04
882A- 05 05 ORA $05
882C- 06 06 ASL $06
882E- 07 ???
882F- 07 ???
8830- 04 04 TSB $04
8832- 05 05 ORA $05
8834- 06 06 ASL $06
8836- 07 ???
8837- 07 ???
8838- 04 04 TSB $04
883A- 05 05 ORA $05
883C- 06 06 ASL $06
883E- 07 ???
883F- 07 ???
8840- A5 08 LDA $08
8842- 48 PHA
8843- A5 09 LDA $09
8845- 48 PHA
8846- 20 50 88 JSR $8850
8849- 68 PLA
884A- 85 09 STA $09
884C- 68 PLA
884D- 85 08 STA $08
884F- 60 RTS
8850- AE 07 88 LDX $8807
8853- BD 10 88 LDA $8810,X
8856- 85 08 STA $08
8858- BD 28 88 LDA $8828,X
885B- 85 09 STA $09
885D- AD 08 88 LDA $8808
8860- 8D C6 88 STA $88C6
8863- AD 09 88 LDA $8809
8866- 8D C7 88 STA $88C7
8869- AC 06 88 LDY $8806
886C- A2 00 LDX #$00
886E- 8E 0C 88 STX $880C
8871- 20 C5 88 JSR $88C5
8874- F0 0E BEQ $8884
8876- 29 3F AND #$3F
8878- 0D 0B 88 ORA $880B
887B- 91 08 STA ($08),Y
887D- E8 INX
887E- C8 INY
887F- EC 0A 88 CPX $880A
8882- D0 ED BNE $8871
8884- 60 RTS
8885- 8E 08 88 STX $8808
8888- 8C 09 88 STY $8809
888B- 8D 07 88 STA $8807
888E- A9 00 LDA #$00
8890- 8D 06 88 STA $8806
8893- A2 28 LDX #$28
8895- 8D 0A 88 STA $880A
8898- A9 01 LDA #$01
889A- 8D C4 88 STA $88C4
889D- AD C4 88 LDA $88C4
88A0- A2 80 LDX #$80
88A2- 8E 0B 88 STX $880B
88A5- 20 40 88 JSR $8840
88A8- E8 INX
88A9- 8A TXA
88AA- 18 CLC
88AB- 6D 08 88 ADC $8808
88AE- 8D 08 88 STA $8808
88B1- 90 03 BCC $88B6
88B3- EE 09 88 INC $8809
88B6- EE 07 88 INC $8807
88B9- EE C4 88 INC $88C4
88BC- 20 C5 88 JSR $88C5
88BF- C9 FF CMP #$FF
88C1- D0 DA BNE $889D
88C3- 60 RTS
88C4- 00 BRK
88C5- BD 00 80 LDA $8000,X
88C8- 60 RTS
88C9- 86 09 STX $09
88CB- 84 0A STY $0A
88CD- 20 18 E0 JSR $E018
88D0- A6 09 LDX $09
88D2- A4 0A LDY $0A
88D4- B0 08 BCS $88DE
88D6- 0A ASL
88D7- 30 05 BMI $88DE
88D9- 90 03 BCC $88DE
88DB- A9 0D LDA #$0D
88DD- 60 RTS
88DE- A9 00 LDA #$00
88E0- 60 RTS
88E1- BD 10 88 LDA $8810,X
88E4- 85 08 STA $08
88E6- BD 28 88 LDA $8828,X
88E9- 85 09 STA $09
88EB- 60 RTS
88EC- 20 E1 88 JSR $88E1
88EF- A0 27 LDY #$27
88F1- B9 80 03 LDA $0380,Y
88F4- 91 08 STA ($08),Y
88F6- 88 DEY
88F7- 10 F8 BPL $88F1
88F9- 60 RTS
88FA- 00 BRK
88FB- 00 BRK
88FC- 00 BRK
88FD- 00 BRK
88FE- 00 BRK
88FF- 00 BRK
8900- 4C C9 88 JMP $88C9
8903- EA NOP
8904- EA NOP
8905- EA NOP
8906- EA NOP
8907- EA NOP
8908- 4C 77 89 JMP $8977
890B- 4C C7 89 JMP $89C7
890E- 7D 2A 28 ADC $282A,X
8911- A8 TAY
8912- 9C 11 2B STZ $2B11
8915- 29 2C AND #$2C
8917- A2 11 LDX #$11
8919- 2B ???
891A- 2A ROL
891B- 2C A0 11 BIT $11A0
891E- EA NOP
891F- AC 2A A0 LDY $A02A
8922- 11 2A ORA ($2A),Y
8924- 6A ROR
8925- 29 A6 AND #$A6
8927- 11 2A ORA ($2A),Y
8929- 69 29 ADC #$29
892B- A2 11 LDX #$11
892D- 2A ROL
892E- 28 PLP
892F- A8 TAY
8930- 9E 73 CA STZ $CA73,X
8933- 2F ???
8934- A8 TAY
8935- 9C 4A 2B STZ $2B4A
8938- 22 ???
8939- 2C A2 4A BIT $4AA2
893C- 2B ???
893D- 22 ???
893E- 2C A0 73 BIT $73A0
8941- CA DEX
8942- A2 2A LDX #$2A
8944- A0 42 LDY #$42
8946- 8A TXA
8947- 62 ???
8948- 29 A6 AND #$A6
894A- 42 ???
894B- 4A LSR
894C- 62 ???
894D- 29 A2 AND #$A2
894F- 42 ???
8950- 2A ROL
8951- 22 ???
8952- 28 PLP
8953- 9E 78 42 STZ $4278,X
8956- 27 ???
8957- 28 PLP
8958- 9C 44 A2 STZ $A244
895B- 28 PLP
895C- AC A2 44 LDY $44A2
895F- A2 28 LDX #$28
8961- 2C A0 79 BIT $79A0
8964- 12 27 ORA ($27)
8966- 2A ROL
8967- A0 41 LDY #$41
8969- F2 20 SBC ($20)
896B- A9 A6 LDA #$A6
896D- 42 ???
896E- 0A ASL
896F- 28 PLP
8970- A9 A2 LDA #$A2
8972- 42 ???
8973- 09 C7 ORA #$C7
8975- 28 PLP
8976- 9E A9 00 STZ $00A9,X
8979- 85 E0 STA $E0
897B- 85 E3 STA $E3
897D- A5 E4 LDA $E4
897F- 85 E2 STA $E2
8981- A9 28 LDA #$28
8983- 85 E1 STA $E1
8985- A6 E2 LDX $E2
8987- BD BF 89 LDA $89BF,X
898A- A4 E0 LDY $E0
898C- 99 80 03 STA $0380,Y
898F- C8 INY
8990- C4 E1 CPY $E1
8992- D0 F8 BNE $898C
8994- A6 E3 LDX $E3
8996- 20 EC 88 JSR $88EC
8999- A9 13 LDA #$13
899B- 38 SEC
899C- E5 E3 SBC $E3
899E- AA TAX
899F- 20 EC 88 JSR $88EC
89A2- E6 E0 INC $E0
89A4- C6 E1 DEC $E1
89A6- E6 E2 INC $E2
89A8- A5 E2 LDA $E2
89AA- 29 07 AND #$07
89AC- 85 E2 STA $E2
89AE- E6 E3 INC $E3
89B0- A5 E3 LDA $E3
89B2- C9 0A CMP #$0A
89B4- D0 CF BNE $8985
89B6- E6 E4 INC $E4
89B8- A5 E4 LDA $E4
89BA- 29 07 AND #$07
89BC- 85 E4 STA $E4
89BE- 60 RTS
89BF- BB ???
89C0- 99 DD CC STA $CCDD,Y
89C3- EE 66 77 INC $7766
89C6- 33 ???
89C7- A2 13 LDX #$13
89C9- 8E 07 88 STX $8807
89CC- 20 E1 88 JSR $88E1
89CF- A0 27 LDY #$27
89D1- B1 08 LDA ($08),Y
89D3- 29 0F AND #$0F
89D5- AA TAX
89D6- BD E5 89 LDA $89E5,X
89D9- 91 08 STA ($08),Y
89DB- 88 DEY
89DC- 10 F3 BPL $89D1
89DE- AE 07 88 LDX $8807
89E1- CA DEX
89E2- 10 E5 BPL $89C9
89E4- 60 RTS
89E5- 00 BRK
89E6- 00 BRK
89E7- 00 BRK
89E8- BB ???
89E9- 00 BRK
89EA- 00 BRK
89EB- 77 ???
89EC- 33 ???
89ED- 00 BRK
89EE- DD 00 99 CMP $9900,X
89F1- EE CC 66 INC $66CC
89F4- 00 BRK

View File

@ -0,0 +1,205 @@
8E00- 4C 00 89 JMP $8900
8E03- 4C 91 8E JMP $8E91
8E06- 00 BRK
8E07- 00 BRK
8E08- 00 BRK
8E09- A9 00 LDA #$00
8E0B- 8D 08 8E STA $8E08
8E0E- A5 80 LDA $80
8E10- 48 PHA
8E11- A5 81 LDA $81
8E13- 48 PHA
8E14- A5 82 LDA $82
8E16- 48 PHA
8E17- A5 83 LDA $83
8E19- 48 PHA
8E1A- 86 80 STX $80
8E1C- 84 81 STY $81
8E1E- A0 04 LDY #$04
8E20- B1 80 LDA ($80),Y
8E22- 48 PHA
8E23- A0 09 LDY #$09
8E25- B1 80 LDA ($80),Y
8E27- 48 PHA
8E28- C8 INY
8E29- B1 80 LDA ($80),Y
8E2B- 48 PHA
8E2C- A0 0B LDY #$0B
8E2E- B1 80 LDA ($80),Y
8E30- 99 03 8A STA $8A03,Y
8E33- 88 DEY
8E34- 10 F8 BPL $8E2E
8E36- 20 00 8A JSR $8A00
8E39- AD 0C 8A LDA $8A0C
8E3C- 85 82 STA $82
8E3E- AD 0D 8A LDA $8A0D
8E41- 85 83 STA $83
8E43- A0 00 LDY #$00
8E45- B1 82 LDA ($82),Y
8E47- F0 03 BEQ $8E4C
8E49- C8 INY
8E4A- D0 F9 BNE $8E45
8E4C- 8C 99 8F STY $8F99
8E4F- C8 INY
8E50- B1 82 LDA ($82),Y
8E52- C9 FF CMP #$FF
8E54- F0 20 BEQ $8E76
8E56- AD 08 8E LDA $8E08
8E59- D0 1B BNE $8E76
8E5B- 98 TYA
8E5C- A0 09 LDY #$09
8E5E- 18 CLC
8E5F- 71 80 ADC ($80),Y
8E61- 91 80 STA ($80),Y
8E63- C8 INY
8E64- B1 80 LDA ($80),Y
8E66- 69 00 ADC #$00
8E68- 91 80 STA ($80),Y
8E6A- A0 04 LDY #$04
8E6C- B1 80 LDA ($80),Y
8E6E- 18 CLC
8E6F- 69 08 ADC #$08
8E71- 91 80 STA ($80),Y
8E73- 4C 2C 8E JMP $8E2C
8E76- A0 0A LDY #$0A
8E78- 68 PLA
8E79- 91 80 STA ($80),Y
8E7B- 88 DEY
8E7C- 68 PLA
8E7D- 91 80 STA ($80),Y
8E7F- A0 04 LDY #$04
8E81- 68 PLA
8E82- 91 80 STA ($80),Y
8E84- 68 PLA
8E85- 85 83 STA $83
8E87- 68 PLA
8E88- 85 82 STA $82
8E8A- 68 PLA
8E8B- 85 81 STA $81
8E8D- 68 PLA
8E8E- 85 80 STA $80
8E90- 60 RTS
8E91- AD 06 8E LDA $8E06
8E94- 8D 96 8F STA $8F96
8E97- AD 07 8E LDA $8E07
8E9A- 8D 97 8F STA $8F97
8E9D- A5 82 LDA $82
8E9F- 48 PHA
8EA0- A5 83 LDA $83
8EA2- 48 PHA
8EA3- A2 09 LDX #$09
8EA5- 20 95 8F JSR $8F95
8EA8- 85 82 STA $82
8EAA- E8 INX
8EAB- 20 95 8F JSR $8F95
8EAE- 85 83 STA $83
8EB0- A2 02 LDX #$02
8EB2- 20 95 8F JSR $8F95
8EB5- A8 TAY
8EB6- B9 98 93 LDA $9398,Y
8EB9- 85 3A STA $3A
8EBB- A9 27 LDA #$27
8EBD- 38 SEC
8EBE- E5 3A SBC $3A
8EC0- 85 3C STA $3C
8EC2- A2 04 LDX #$04
8EC4- 20 95 8F JSR $8F95
8EC7- 85 3B STA $3B
8EC9- A9 07 LDA #$07
8ECB- 85 3D STA $3D
8ECD- A9 A9 LDA #$A9
8ECF- A0 00 LDY #$00
8ED1- 20 78 E0 JSR $E078
8ED4- AE 06 8E LDX $8E06
8ED7- AC 07 8E LDY $8E07
8EDA- 20 0E 8E JSR $8E0E
8EDD- AD 05 8A LDA $8A05
8EE0- 8D 9B 8F STA $8F9B
8EE3- AD 06 8A LDA $8A06
8EE6- 8D 9C 8F STA $8F9C
8EE9- 20 48 E0 JSR $E048
8EEC- 20 69 8F JSR $8F69
8EEF- 20 1F E0 JSR $E01F
8EF2- 30 0A BMI $8EFE
8EF4- C6 4E DEC $4E
8EF6- D0 F7 BNE $8EEF
8EF8- C6 4F DEC $4F
8EFA- 10 F3 BPL $8EEF
8EFC- 30 EB BMI $8EE9
8EFE- 48 PHA
8EFF- 20 6C 8F JSR $8F6C
8F02- 68 PLA
8F03- C9 0D CMP #$0D
8F05- F0 58 BEQ $8F5F
8F07- C9 1B CMP #$1B
8F09- F0 56 BEQ $8F61
8F0B- C9 08 CMP #$08
8F0D- F0 3B BEQ $8F4A
8F0F- C9 7F CMP #$7F
8F11- F0 37 BEQ $8F4A
8F13- C9 05 CMP #$05
8F15- F0 3D BEQ $8F54
8F17- C9 2C CMP #$2C
8F19- F0 CE BEQ $8EE9
8F1B- C9 40 CMP #$40
8F1D- F0 CA BEQ $8EE9
8F1F- C9 20 CMP #$20
8F21- 90 C6 BCC $8EE9
8F23- C9 5B CMP #$5B
8F25- B0 C2 BCS $8EE9
8F27- AC 99 8F LDY $8F99
8F2A- C0 00 CPY #$00
8F2C- D0 0F BNE $8F3D
8F2E- C9 20 CMP #$20
8F30- F0 B7 BEQ $8EE9
8F32- AC 08 8E LDY $8E08
8F35- C0 0F CPY #$0F
8F37- D0 04 BNE $8F3D
8F39- C9 41 CMP #$41
8F3B- 90 AC BCC $8EE9
8F3D- AC 99 8F LDY $8F99
8F40- CC 08 8E CPY $8E08
8F43- B0 A4 BCS $8EE9
8F45- 91 82 STA ($82),Y
8F47- C8 INY
8F48- D0 06 BNE $8F50
8F4A- AC 99 8F LDY $8F99
8F4D- F0 9A BEQ $8EE9
8F4F- 88 DEY
8F50- A9 00 LDA #$00
8F52- F0 03 BEQ $8F57
8F54- A9 00 LDA #$00
8F56- A8 TAY
8F57- 91 82 STA ($82),Y
8F59- 8C 99 8F STY $8F99
8F5C- 4C B0 8E JMP $8EB0
8F5F- 18 CLC
8F60- 24 38 BIT $38
8F62- 68 PLA
8F63- 85 83 STA $83
8F65- 68 PLA
8F66- 85 82 STA $82
8F68- 60 RTS
8F69- A9 04 LDA #$04
8F6B- 2C A9 03 BIT $03A9
8F6E- 8D 03 8A STA $8A03
8F71- A9 00 LDA #$00
8F73- 8D 0A 8A STA $8A0A
8F76- 8D 04 8A STA $8A04
8F79- AD 9B 8F LDA $8F9B
8F7C- 8D 05 8A STA $8A05
8F7F- AD 9C 8F LDA $8F9C
8F82- 8D 06 8A STA $8A06
8F85- A9 92 LDA #$92
8F87- 8D 0C 8A STA $8A0C
8F8A- A9 8F LDA #$8F
8F8C- 8D 0D 8A STA $8A0D
8F8F- 4C 00 8A JMP $8A00
8F92- 49 49 EOR #$49
8F94- 00 BRK
8F95- BD 00 80 LDA $8000,X
8F98- 60 RTS
8F99- 00 BRK
8F9A- 00 BRK
8F9B- 00 BRK
8F9C- 00 BRK

View File

@ -0,0 +1,447 @@
8A00- 4C 18 8A JMP $8A18
8A03- 02 ???
8A04- 02 ???
8A05- 00 BRK
8A06- 00 BRK
8A07- 00 BRK
8A08- 00 BRK
8A09- 00 BRK
8A0A- 01 00 ORA ($00,X)
8A0C- 00 BRK
8A0D- 00 BRK
8A0E- 00 BRK
8A0F- 4C 3D 8D JMP $8D3D
8A12- 4C 34 8D JMP $8D34
8A15- 4C 5B 8D JMP $8D5B
8A18- 20 00 8D JSR $8D00
8A1B- AD 0C 8A LDA $8A0C
8A1E- 8D DD 8A STA $8ADD
8A21- AD 0D 8A LDA $8A0D
8A24- 8D DE 8A STA $8ADE
8A27- 2C 0E 8A BIT $8A0E
8A2A- 30 03 BMI $8A2F
8A2C- 20 28 8B JSR $8B28
8A2F- AD 04 8A LDA $8A04
8A32- F0 60 BEQ $8A94
8A34- A2 00 LDX #$00
8A36- 86 5D STX $5D
8A38- 86 5E STX $5E
8A3A- 20 DC 8A JSR $8ADC
8A3D- F0 1A BEQ $8A59
8A3F- 38 SEC
8A40- E9 20 SBC #$20
8A42- A8 TAY
8A43- B9 00 85 LDA $8500,Y
8A46- 38 SEC
8A47- FD 00 03 SBC $0300,X
8A4A- 18 CLC
8A4B- 6D 0A 8A ADC $8A0A
8A4E- 65 5D ADC $5D
8A50- 85 5D STA $5D
8A52- 90 02 BCC $8A56
8A54- E6 5E INC $5E
8A56- E8 INX
8A57- D0 E1 BNE $8A3A
8A59- E0 00 CPX #$00
8A5B- F0 18 BEQ $8A75
8A5D- A5 5D LDA $5D
8A5F- 38 SEC
8A60- ED 0A 8A SBC $8A0A
8A63- 85 5D STA $5D
8A65- B0 02 BCS $8A69
8A67- C6 5E DEC $5E
8A69- AE 0B 8A LDX $8A0B
8A6C- F0 07 BEQ $8A75
8A6E- 06 5D ASL $5D
8A70- 26 5E ROL $5E
8A72- CA DEX
8A73- D0 F9 BNE $8A6E
8A75- AE 04 8A LDX $8A04
8A78- E0 03 CPX #$03
8A7A- F0 59 BEQ $8AD5
8A7C- CA DEX
8A7D- F0 04 BEQ $8A83
8A7F- 46 5E LSR $5E
8A81- 66 5D ROR $5D
8A83- AD 05 8A LDA $8A05
8A86- 38 SEC
8A87- E5 5D SBC $5D
8A89- 8D 05 8A STA $8A05
8A8C- AD 06 8A LDA $8A06
8A8F- E5 5E SBC $5E
8A91- 8D 06 8A STA $8A06
8A94- A2 00 LDX #$00
8A96- 86 63 STX $63
8A98- 20 DC 8A JSR $8ADC
8A9B- F0 3C BEQ $8AD9
8A9D- 20 E0 8A JSR $8AE0
8AA0- A6 63 LDX $63
8AA2- 20 DC 8A JSR $8ADC
8AA5- 38 SEC
8AA6- E9 20 SBC #$20
8AA8- A8 TAY
8AA9- AD 0A 8A LDA $8A0A
8AAC- 18 CLC
8AAD- 79 00 85 ADC $8500,Y
8AB0- E8 INX
8AB1- 38 SEC
8AB2- FD 00 03 SBC $0300,X
8AB5- A0 00 LDY #$00
8AB7- 84 5F STY $5F
8AB9- AC 0B 8A LDY $8A0B
8ABC- F0 06 BEQ $8AC4
8ABE- 0A ASL
8ABF- 26 5F ROL $5F
8AC1- 88 DEY
8AC2- D0 FA BNE $8ABE
8AC4- 18 CLC
8AC5- 6D 05 8A ADC $8A05
8AC8- 8D 05 8A STA $8A05
8ACB- A5 5F LDA $5F
8ACD- 6D 06 8A ADC $8A06
8AD0- 8D 06 8A STA $8A06
8AD3- 90 C1 BCC $8A96
8AD5- A4 5D LDY $5D
8AD7- A5 5E LDA $5E
8AD9- A2 01 LDX #$01
8ADB- 60 RTS
8ADC- BD 0C 8A LDA $8A0C,X
8ADF- 60 RTS
8AE0- 38 SEC
8AE1- E9 20 SBC #$20
8AE3- F0 42 BEQ $8B27
8AE5- AA TAX
8AE6- BD 3B 85 LDA $853B,X
8AE9- 85 61 STA $61
8AEB- BD 00 85 LDA $8500,X
8AEE- 85 62 STA $62
8AF0- BD 76 85 LDA $8576,X
8AF3- 85 50 STA $50
8AF5- BD B1 85 LDA $85B1,X
8AF8- 85 51 STA $51
8AFA- AD 0B 8A LDA $8A0B
8AFD- 0A ASL
8AFE- D0 02 BNE $8B02
8B00- A9 01 LDA #$01
8B02- 85 5F STA $5F
8B04- AD 07 8A LDA $8A07
8B07- 85 60 STA $60
8B09- AD 05 8A LDA $8A05
8B0C- 85 52 STA $52
8B0E- AD 06 8A LDA $8A06
8B11- 85 53 STA $53
8B13- A5 62 LDA $62
8B15- 85 54 STA $54
8B17- A4 60 LDY $60
8B19- 20 26 8C JSR $8C26
8B1C- A5 60 LDA $60
8B1E- 18 CLC
8B1F- 65 5F ADC $5F
8B21- 85 60 STA $60
8B23- C6 61 DEC $61
8B25- D0 E2 BNE $8B09
8B27- 60 RTS
8B28- A2 00 LDX #$00
8B2A- 8E 00 03 STX $0300
8B2D- 86 63 STX $63
8B2F- 20 DC 8A JSR $8ADC
8B32- F0 2B BEQ $8B5F
8B34- AC 0E 8A LDY $8A0E
8B37- F0 1B BEQ $8B54
8B39- C9 41 CMP #$41
8B3B- 90 17 BCC $8B54
8B3D- 85 56 STA $56
8B3F- E8 INX
8B40- 20 DC 8A JSR $8ADC
8B43- F0 1A BEQ $8B5F
8B45- C9 41 CMP #$41
8B47- 90 0B BCC $8B54
8B49- 85 57 STA $57
8B4B- 20 65 8B JSR $8B65
8B4E- A5 59 LDA $59
8B50- C9 64 CMP #$64
8B52- 90 02 BCC $8B56
8B54- A9 00 LDA #$00
8B56- A6 63 LDX $63
8B58- E8 INX
8B59- 9D 00 03 STA $0300,X
8B5C- 4C 2D 8B JMP $8B2D
8B5F- A9 00 LDA #$00
8B61- 9D 00 03 STA $0300,X
8B64- 60 RTS
8B65- 38 SEC
8B66- 66 5B ROR $5B
8B68- A5 56 LDA $56
8B6A- 20 CE 8B JSR $8BCE
8B6D- 85 54 STA $54
8B6F- 84 5A STY $5A
8B71- BD 76 85 LDA $8576,X
8B74- 85 50 STA $50
8B76- BD B1 85 LDA $85B1,X
8B79- 85 51 STA $51
8B7B- BD 3B 85 LDA $853B,X
8B7E- 85 61 STA $61
8B80- A5 57 LDA $57
8B82- 20 CE 8B JSR $8BCE
8B85- 85 55 STA $55
8B87- BD 76 85 LDA $8576,X
8B8A- 85 52 STA $52
8B8C- BD B1 85 LDA $85B1,X
8B8F- 85 53 STA $53
8B91- BD 3B 85 LDA $853B,X
8B94- C5 61 CMP $61
8B96- B0 02 BCS $8B9A
8B98- 85 61 STA $61
8B9A- A5 5B LDA $5B
8B9C- 18 CLC
8B9D- 6D 0A 8A ADC $8A0A
8BA0- 85 59 STA $59
8BA2- 20 EC 8B JSR $8BEC
8BA5- 85 5F STA $5F
8BA7- 20 0A 8C JSR $8C0A
8BAA- 18 CLC
8BAB- 65 5F ADC $5F
8BAD- C5 59 CMP $59
8BAF- B0 02 BCS $8BB3
8BB1- 85 59 STA $59
8BB3- A5 50 LDA $50
8BB5- 18 CLC
8BB6- 65 54 ADC $54
8BB8- 85 50 STA $50
8BBA- 90 02 BCC $8BBE
8BBC- E6 51 INC $51
8BBE- A5 52 LDA $52
8BC0- 18 CLC
8BC1- 65 55 ADC $55
8BC3- 85 52 STA $52
8BC5- 90 02 BCC $8BC9
8BC7- E6 53 INC $53
8BC9- C6 61 DEC $61
8BCB- D0 D5 BNE $8BA2
8BCD- 60 RTS
8BCE- 38 SEC
8BCF- E9 20 SBC #$20
8BD1- AA TAX
8BD2- BD 00 85 LDA $8500,X
8BD5- C5 5B CMP $5B
8BD7- B0 02 BCS $8BDB
8BD9- 85 5B STA $5B
8BDB- 38 SEC
8BDC- E9 01 SBC #$01
8BDE- 48 PHA
8BDF- 29 07 AND #$07
8BE1- 49 07 EOR #$07
8BE3- A8 TAY
8BE4- 68 PLA
8BE5- 4A LSR
8BE6- 4A LSR
8BE7- 4A LSR
8BE8- 18 CLC
8BE9- 69 01 ADC #$01
8BEB- 60 RTS
8BEC- A2 00 LDX #$00
8BEE- A4 54 LDY $54
8BF0- 88 DEY
8BF1- B1 50 LDA ($50),Y
8BF3- D0 0B BNE $8C00
8BF5- 8A TXA
8BF6- 18 CLC
8BF7- 69 08 ADC #$08
8BF9- AA TAX
8BFA- 88 DEY
8BFB- 10 F4 BPL $8BF1
8BFD- A9 64 LDA #$64
8BFF- 60 RTS
8C00- E8 INX
8C01- 4A LSR
8C02- 90 FC BCC $8C00
8C04- CA DEX
8C05- 8A TXA
8C06- 38 SEC
8C07- E5 5A SBC $5A
8C09- 60 RTS
8C0A- A2 00 LDX #$00
8C0C- A0 00 LDY #$00
8C0E- B1 52 LDA ($52),Y
8C10- D0 0D BNE $8C1F
8C12- 8A TXA
8C13- 18 CLC
8C14- 69 08 ADC #$08
8C16- AA TAX
8C17- C8 INY
8C18- C4 55 CPY $55
8C1A- D0 F2 BNE $8C0E
8C1C- A9 64 LDA #$64
8C1E- 60 RTS
8C1F- E8 INX
8C20- 0A ASL
8C21- 90 FC BCC $8C1F
8C23- CA DEX
8C24- 8A TXA
8C25- 60 RTS
8C26- B9 C0 91 LDA $91C0,Y
8C29- 85 55 STA $55
8C2B- B9 00 91 LDA $9100,Y
8C2E- 85 56 STA $56
8C30- B9 C1 91 LDA $91C1,Y
8C33- 85 57 STA $57
8C35- B9 01 91 LDA $9101,Y
8C38- 85 58 STA $58
8C3A- A6 52 LDX $52
8C3C- A5 53 LDA $53
8C3E- F0 08 BEQ $8C48
8C40- BD B0 95 LDA $95B0,X
8C43- BC 98 94 LDY $9498,X
8C46- D0 06 BNE $8C4E
8C48- BD B0 94 LDA $94B0,X
8C4B- BC 98 93 LDY $9398,X
8C4E- 84 59 STY $59
8C50- A0 08 LDY #$08
8C52- 88 DEY
8C53- 38 SEC
8C54- 66 5C ROR $5C
8C56- 4A LSR
8C57- 90 F9 BCC $8C52
8C59- A2 00 LDX #$00
8C5B- AD 0B 8A LDA $8A0B
8C5E- D0 3E BNE $8C9E
8C60- A1 50 LDA ($50,X)
8C62- 49 FF EOR #$FF
8C64- 85 5A STA $5A
8C66- E6 50 INC $50
8C68- D0 02 BNE $8C6C
8C6A- E6 51 INC $51
8C6C- A2 08 LDX #$08
8C6E- 06 5A ASL $5A
8C70- 66 5C ROR $5C
8C72- 88 DEY
8C73- D0 0D BNE $8C82
8C75- A4 59 LDY $59
8C77- E6 59 INC $59
8C79- A5 5C LDA $5C
8C7B- 4A LSR
8C7C- 31 55 AND ($55),Y
8C7E- 91 55 STA ($55),Y
8C80- A0 07 LDY #$07
8C82- C6 54 DEC $54
8C84- F0 05 BEQ $8C8B
8C86- CA DEX
8C87- D0 E5 BNE $8C6E
8C89- F0 D5 BEQ $8C60
8C8B- C0 07 CPY #$07
8C8D- F0 0E BEQ $8C9D
8C8F- A5 5C LDA $5C
8C91- 38 SEC
8C92- 6A ROR
8C93- 88 DEY
8C94- D0 FB BNE $8C91
8C96- 4A LSR
8C97- A4 59 LDY $59
8C99- 31 55 AND ($55),Y
8C9B- 91 55 STA ($55),Y
8C9D- 60 RTS
8C9E- A1 50 LDA ($50,X)
8CA0- 49 FF EOR #$FF
8CA2- 85 5A STA $5A
8CA4- E6 50 INC $50
8CA6- D0 02 BNE $8CAA
8CA8- E6 51 INC $51
8CAA- A2 08 LDX #$08
8CAC- 86 5B STX $5B
8CAE- 06 5A ASL $5A
8CB0- A2 02 LDX #$02
8CB2- 08 PHP
8CB3- 66 5C ROR $5C
8CB5- 88 DEY
8CB6- D0 15 BNE $8CCD
8CB8- A4 59 LDY $59
8CBA- E6 59 INC $59
8CBC- A5 5C LDA $5C
8CBE- 4A LSR
8CBF- 85 5C STA $5C
8CC1- 31 55 AND ($55),Y
8CC3- 91 55 STA ($55),Y
8CC5- A5 5C LDA $5C
8CC7- 31 57 AND ($57),Y
8CC9- 91 57 STA ($57),Y
8CCB- A0 07 LDY #$07
8CCD- 28 PLP
8CCE- CA DEX
8CCF- D0 E1 BNE $8CB2
8CD1- C6 54 DEC $54
8CD3- F0 07 BEQ $8CDC
8CD5- A6 5B LDX $5B
8CD7- CA DEX
8CD8- D0 D2 BNE $8CAC
8CDA- F0 C2 BEQ $8C9E
8CDC- C0 07 CPY #$07
8CDE- F0 16 BEQ $8CF6
8CE0- A5 5C LDA $5C
8CE2- 38 SEC
8CE3- 6A ROR
8CE4- 88 DEY
8CE5- D0 FB BNE $8CE2
8CE7- 4A LSR
8CE8- 85 5C STA $5C
8CEA- A4 59 LDY $59
8CEC- 31 55 AND ($55),Y
8CEE- 91 55 STA ($55),Y
8CF0- A5 5C LDA $5C
8CF2- 31 57 AND ($57),Y
8CF4- 91 57 STA ($57),Y
8CF6- 60 RTS
8CF7- 11 31 ORA ($31),Y
8CF9- 51 18 EOR ($18),Y
8CFB- 38 SEC
8CFC- 18 CLC
8CFD- 00 BRK
8CFE- FF ???
8CFF- 00 BRK
8D00- AC 03 8A LDY $8A03
8D03- B9 F5 8C LDA $8CF5,Y
8D06- 48 PHA
8D07- BE F8 8C LDX $8CF8,Y
8D0A- B9 FB 8C LDA $8CFB,Y
8D0D- A8 TAY
8D0E- 68 PLA
8D0F- 4C 12 8D JMP $8D12
8D12- 8D 7C 8C STA $8C7C
8D15- 8D 99 8C STA $8C99
8D18- 8D C1 8C STA $8CC1
8D1B- 8D C7 8C STA $8CC7
8D1E- 8D EC 8C STA $8CEC
8D21- 8D F2 8C STA $8CF2
8D24- 8E 53 8C STX $8C53
8D27- 8E 91 8C STX $8C91
8D2A- 8E E2 8C STX $8CE2
8D2D- 8C 63 8C STY $8C63
8D30- 8C A1 8C STY $8CA1
8D33- 60 RTS
8D34- 20 3D 8D JSR $8D3D
8D37- 12 8D ORA ($8D)
8D39- 26 8C ROL $8C
8D3B- 85 60 STA $60
8D3D- 20 69 E0 JSR $E069
8D40- 20 6C E0 JSR $E06C
8D43- 8D 10 8D STA $8D10
8D46- 20 6C E0 JSR $E06C
8D49- 8D 11 8D STA $8D11
8D4C- 20 6C E0 JSR $E06C
8D4F- 8D 1A 8B STA $8B1A
8D52- 20 6C E0 JSR $E06C
8D55- 8D 1B 8B STA $8B1B
8D58- 20 6C E0 JSR $E06C
8D5B- 8D 45 8A STA $8A45
8D5E- 8D AF 8A STA $8AAF
8D61- 8D E8 8A STA $8AE8
8D64- 8D ED 8A STA $8AED
8D67- 8D F2 8A STA $8AF2
8D6A- 8D F7 8A STA $8AF7
8D6D- 8D 73 8B STA $8B73
8D70- 8D 78 8B STA $8B78
8D73- 8D 7D 8B STA $8B7D
8D76- 8D 89 8B STA $8B89
8D79- 8D 8E 8B STA $8B8E
8D7C- 8D 93 8B STA $8B93
8D7F- 8D D4 8B STA $8BD4
8D82- 60 RTS

View File

@ -0,0 +1,859 @@
0800- 4C 38 08 JMP $0838
0803- 4C 19 0D JMP $0D19
0806- 4C 51 0D JMP $0D51
0809- 4C D3 0D JMP $0DD3
080C- 54 ???
080D- 48 PHA
080E- 45 20 EOR $20
0810- 50 52 BVC $0864
0812- 49 4E EOR #$4E
0814- 54 ???
0815- 20 53 48 JSR $4853
0818- 4F ???
0819- 50 00 BVC $081B
081B- 43 ???
081C- 4F ???
081D- 4D 50 41 EOR $4150
0820- 4E 49 4F LSR $4F49
0823- 4E 00 41 LSR $4100
0826- 4E 44 20 LSR $2044
0829- 50 52 BVC $087D
082B- 45 53 EOR $53
082D- 53 ???
082E- 20 3C 52 JSR $523C
0831- 45 54 EOR $54
0833- 55 52 EOR $52,X
0835- 4E 3E 00 LSR $003E
0838- 20 26 0A JSR $0A26
083B- A9 2C LDA #$2C
083D- 8D 38 08 STA $0838
0840- A2 FF LDX #$FF
0842- 9A TXS
0843- 20 06 E0 JSR $E006
0846- 20 00 E0 JSR $E000
0849- 10 01 BPL $084C
084B- 10 26 BPL $0873
084D- 0F ???
084E- 02 ???
084F- 05 08 ORA $08
0851- 0A ASL
0852- 0F ???
0853- 06 8C ASL $8C
0855- 00 BRK
0856- 01 09 ORA ($09,X)
0858- 0C 08 0D TSB $0D08
085B- 09 1B ORA #$1B
085D- 08 PHP
085E- 0D 00 20 ORA $2000
0861- 49 0A EOR #$0A
0863- 20 00 E0 JSR $E000
0866- 06 8C ASL $8C
0868- 00 BRK
0869- 24 05 BIT $05
086B- 0D 4D 41 ORA $414D
086E- 49 4E EOR #$4E
0870- 20 4D 45 JSR $454D
0873- 4E 55 0D LSR $0D55
0876- 06 4C ASL $4C
0878- 00 BRK
0879- 42 ???
087A- 47 ???
087B- 52 41 EOR ($41)
087D- 50 48 BVC $08C7
087F- 49 43 EOR #$43
0881- 20 45 44 JSR $4445
0884- 49 54 EOR #$54
0886- 4F ???
0887- 52 2B EOR ($2B)
0889- 0D 42 4F ORA $4F42
088C- 52 44 EOR ($44)
088E- 45 52 EOR $52
0890- 20 45 44 JSR $4445
0893- 49 54 EOR #$54
0895- 4F ???
0896- 52 0D EOR ($0D)
0898- 46 4F LSR $4F
089A- 4E 54 20 LSR $2054
089D- 45 44 EOR $44
089F- 49 54 EOR #$54
08A1- 4F ???
08A2- 52 0D EOR ($0D)
08A4- 54 ???
08A5- 49 4C EOR #$4C
08A7- 45 20 EOR $20
08A9- 4D 41 47 EOR $4741
08AC- 49 43 EOR #$43
08AE- 0D 43 52 ORA $5243
08B1- 45 41 EOR $41
08B3- 54 ???
08B4- 55 52 EOR $52,X
08B6- 45 20 EOR $20
08B8- 4D 41 4B EOR $4B41
08BB- 45 52 EOR $52
08BD- 0D 43 41 ORA $4143
08C0- 4C 45 4E JMP $4E45
08C3- 44 ???
08C4- 41 52 EOR ($52,X)
08C6- 0D 53 45 ORA $4553
08C9- 54 ???
08CA- 55 50 EOR $50,X
08CC- 0D 45 58 ORA $5845
08CF- 49 54 EOR #$54
08D1- 20 50 52 JSR $5250
08D4- 4F ???
08D5- 47 ???
08D6- 52 41 EOR ($41)
08D8- 4D 0D 10 EOR $100D
08DB- 15 45 ORA $45,X
08DD- 0F ???
08DE- 02 ???
08DF- 10 15 BPL $08F6
08E1- 7C 0F 02 JMP ($020F,X)
08E4- 11 70 ORA ($70),Y
08E6- 14 45 TRB $45
08E8- 01 39 ORA ($39,X)
08EA- 11 07 ORA ($07),Y
08EC- 24 45 BIT $45
08EE- 01 39 ORA ($39,X)
08F0- 00 BRK
08F1- 20 B7 0A JSR $0AB7
08F4- A9 01 LDA #$01
08F6- C9 06 CMP #$06
08F8- F0 50 BEQ $094A
08FA- AC F5 95 LDY $95F5
08FD- 20 28 E0 JSR $E028
0900- 82 ???
0901- 12 41 ORA ($41)
0903- 08 PHP
0904- 88 DEY
0905- 0A ASL
0906- 8C F5 95 STY $95F5
0909- B0 EB BCS $08F6
090B- AA TAX
090C- 30 19 BMI $0927
090E- 20 40 09 JSR $0940
0911- AC F5 95 LDY $95F5
0914- 20 4B E0 JSR $E04B
0917- E3 ???
0918- 09 F8 ORA #$F8
091A- 09 05 ORA #$05
091C- 0A ASL
091D- E6 09 INC $09
091F- D9 09 1C CMP $1C09,Y
0922- 0A ASL
0923- 12 0A ORA ($0A)
0925- 4C 09 20 JMP $2009
0928- 00 BRK
0929- E0 05 CPX #$05
092B- 02 ???
092C- 06 8C ASL $8C
092E- 00 BRK
092F- B8 CLV
0930- 56 45 LSR $45,X
0932- 52 53 EOR ($53)
0934- 49 4F EOR #$4F
0936- 4E 20 31 LSR $3120
0939- 2E 32 0D ROL $0D32
093C- 00 BRK
093D- 4C FA 08 JMP $08FA
0940- 20 00 E0 JSR $E000
0943- 10 00 BPL $0945
0945- B8 CLV
0946- 28 PLP
0947- 07 ???
0948- 00 BRK
0949- 60 RTS
094A- F0 49 BEQ $0995
094C- 20 00 E0 JSR $E000
094F- 0F ???
0950- 01 1F ORA ($1F,X)
0952- 26 98 ROL $98
0954- 06 8C ASL $8C
0956- 00 BRK
0957- 50 05 BVC $095E
0959- 50 4C BVC $09A7
095B- 45 41 EOR $41
095D- 53 ???
095E- 45 20 EOR $20
0960- 49 4E EOR #$4E
0962- 53 ???
0963- 45 52 EOR $52
0965- 54 ???
0966- 20 41 4E JSR $4E41
0969- 4F ???
096A- 54 ???
096B- 48 PHA
096C- 45 52 EOR $52
096E- 20 44 49 JSR $4944
0971- 53 ???
0972- 4B ???
0973- 0D 0D 09 ORA $090D
0976- 25 08 AND $08
0978- 0D 00 20 ORA $2000
097B- 09 E0 ORA #$E0
097D- 20 25 E0 JSR $E025
0980- C9 0D CMP #$0D
0982- F0 03 BEQ $0987
0984- 4C 38 08 JMP $0838
0987- 20 18 E0 JSR $E018
098A- B0 03 BCS $098F
098C- 0A ASL
098D- 30 F8 BMI $0987
098F- 20 15 E0 JSR $E015
0992- 6C FC FF JMP ($FFFC)
0995- A2 00 LDX #$00
0997- A0 BF LDY #$BF
0999- BD C0 91 LDA $91C0,X
099C- 85 00 STA $00
099E- B9 C0 91 LDA $91C0,Y
09A1- 9D C0 91 STA $91C0,X
09A4- 85 02 STA $02
09A6- A5 00 LDA $00
09A8- 99 C0 91 STA $91C0,Y
09AB- BD 00 91 LDA $9100,X
09AE- 85 01 STA $01
09B0- B9 00 91 LDA $9100,Y
09B3- 9D 00 91 STA $9100,X
09B6- 85 03 STA $03
09B8- A5 01 LDA $01
09BA- 99 00 91 STA $9100,Y
09BD- 98 TYA
09BE- 48 PHA
09BF- A0 27 LDY #$27
09C1- B1 00 LDA ($00),Y
09C3- 48 PHA
09C4- B1 02 LDA ($02),Y
09C6- 91 00 STA ($00),Y
09C8- 68 PLA
09C9- 91 02 STA ($02),Y
09CB- 88 DEY
09CC- 10 F3 BPL $09C1
09CE- 68 PLA
09CF- A8 TAY
09D0- 88 DEY
09D1- E8 INX
09D2- E0 60 CPX #$60
09D4- 90 C3 BCC $0999
09D6- 4C FA 08 JMP $08FA
09D9- A0 06 LDY #$06
09DB- 20 60 0A JSR $0A60
09DE- D0 F9 BNE $09D9
09E0- A9 06 LDA #$06
09E2- 2C A9 00 BIT $00A9
09E5- 2C A9 03 BIT $03A9
09E8- 8D F6 09 STA $09F6
09EB- 20 51 0A JSR $0A51
09EE- A0 03 LDY #$03
09F0- 20 60 0A JSR $0A60
09F3- D0 F9 BNE $09EE
09F5- 4C 00 40 JMP $4000
09F8- A0 04 LDY #$04
09FA- 20 60 0A JSR $0A60
09FD- D0 F9 BNE $09F8
09FF- 20 58 0A JSR $0A58
0A02- 4C 00 40 JMP $4000
0A05- 20 51 0A JSR $0A51
0A08- A0 05 LDY #$05
0A0A- 20 60 0A JSR $0A60
0A0D- D0 F9 BNE $0A08
0A0F- 4C 00 60 JMP $6000
0A12- A0 08 LDY #$08
0A14- 20 60 0A JSR $0A60
0A17- D0 F9 BNE $0A12
0A19- 4C 00 58 JMP $5800
0A1C- A0 07 LDY #$07
0A1E- 20 60 0A JSR $0A60
0A21- D0 F9 BNE $0A1C
0A23- 4C 00 40 JMP $4000
0A26- 20 22 E0 JSR $E022
0A29- C9 1B CMP #$1B
0A2B- F0 19 BEQ $0A46
0A2D- 20 39 E0 JSR $E039
0A30- 50 52 BVC $0A84
0A32- 43 ???
0A33- 4F ???
0A34- 4D 53 00 EOR $0053
0A37- D0 F4 BNE $0A2D
0A39- 20 39 E0 JSR $E039
0A3C- 43 ???
0A3D- 4F ???
0A3E- 4E 46 49 LSR $4946
0A41- 47 ???
0A42- 00 BRK
0A43- D0 F4 BNE $0A39
0A45- 60 RTS
0A46- 4C 00 10 JMP $1000
0A49- A0 00 LDY #$00
0A4B- 20 60 0A JSR $0A60
0A4E- D0 F9 BNE $0A49
0A50- 60 RTS
0A51- A0 02 LDY #$02
0A53- 20 60 0A JSR $0A60
0A56- D0 F9 BNE $0A51
0A58- A0 01 LDY #$01
0A5A- 20 63 0A JSR $0A63
0A5D- D0 F9 BNE $0A58
0A5F- 60 RTS
0A60- A9 02 LDA #$02
0A62- 2C A9 00 BIT $00A9
0A65- 85 00 STA $00
0A67- 84 01 STY $01
0A69- B9 B1 0C LDA $0CB1,Y
0A6C- 30 0D BMI $0A7B
0A6E- 18 CLC
0A6F- A9 01 LDA #$01
0A71- 20 5D E0 JSR $E05D
0A74- B0 0F BCS $0A85
0A76- 20 00 E0 JSR $E000
0A79- 18 CLC
0A7A- 00 BRK
0A7B- A4 01 LDY $01
0A7D- A5 00 LDA $00
0A7F- 8D 0D B0 STA $B00D
0A82- 4C 8E 0B JMP $0B8E
0A85- 4C 38 08 JMP $0838
0A88- BD A7 0A LDA $0AA7,X
0A8B- 85 3E STA $3E
0A8D- BD A8 0A LDA $0AA8,X
0A90- 85 3F STA $3F
0A92- A2 03 LDX #$03
0A94- BD A3 0A LDA $0AA3,X
0A97- 95 3A STA $3A,X
0A99- CA DEX
0A9A- 10 F8 BPL $0A94
0A9C- A9 B1 LDA #$B1
0A9E- A0 3E LDY #$3E
0AA0- 4C 78 E0 JMP $E078
0AA3- 15 47 ORA $47,X
0AA5- 0F ???
0AA6- 35 00 AND $00,X
0AA8- 40 RTI
0AA9- 1B ???
0AAA- 43 ???
0AAB- 36 46 ROL $46,X
0AAD- 51 49 EOR ($49),Y
0AAF- 6C 4C 87 JMP ($874C)
0AB2- 4F ???
0AB3- A2 52 LDX #$52
0AB5- BD 55 AD LDA $AD55,X
0AB8- F5 95 SBC $95,X
0ABA- 10 36 BPL $0AF2
0ABC- A9 06 LDA #$06
0ABE- 8D F5 95 STA $95F5
0AC1- 20 00 E0 JSR $E000
0AC4- 05 0A ORA $0A
0AC6- 0A ASL
0AC7- 06 8C ASL $8C
0AC9- 00 BRK
0ACA- 96 57 STX $57,Y
0ACC- 45 4C EOR $4C
0ACE- 43 ???
0ACF- 4F ???
0AD0- 4D 45 20 EOR $2045
0AD3- 54 ???
0AD4- 4F ???
0AD5- 0D 09 0C ORA $0C09
0AD8- 08 PHP
0AD9- 20 09 1B JSR $1B09
0ADC- 08 PHP
0ADD- 21 0D AND ($0D,X)
0ADF- 09 29 ORA #$29
0AE1- 08 PHP
0AE2- 20 54 4F JSR $4F54
0AE5- 20 52 55 JSR $5552
0AE8- 4E 20 53 LSR $5320
0AEB- 45 54 EOR $54
0AED- 55 50 EOR $50,X
0AEF- 0D 00 60 ORA $6000
0AF2- 20 48 0B JSR $0B48
0AF5- 20 00 E0 JSR $E000
0AF8- 05 06 ORA $06
0AFA- 8C 00 98 STY $9800
0AFD- 55 53 EOR $53,X
0AFF- 45 20 EOR $20
0B01- 20 20 20 JSR $2020
0B04- 20 20 20 JSR $2020
0B07- 41 4E EOR ($4E,X)
0B09- 44 ???
0B0A- 09 2E ORA #$2E
0B0C- 08 PHP
0B0D- 0D 54 4F ORA $4F54
0B10- 20 4D 41 JSR $414D
0B13- 4B ???
0B14- 45 20 EOR $20
0B16- 53 ???
0B17- 45 4C EOR $4C
0B19- 45 43 EOR $43
0B1B- 54 ???
0B1C- 49 4F EOR #$4F
0B1E- 4E 2E 20 LSR $202E
0B21- 20 4F 52 JSR $524F
0B24- 2C 20 55 BIT $5520
0B27- 53 ???
0B28- 45 0D EOR $0D
0B2A- 4D 4F 55 EOR $554F
0B2D- 53 ???
0B2E- 45 2C EOR $2C
0B30- 20 4A 4F JSR $4F4A
0B33- 59 53 54 EOR $5453,Y
0B36- 49 43 EOR #$43
0B38- 4B ???
0B39- 2C 20 4F BIT $4F20
0B3C- 52 20 EOR ($20)
0B3E- 4B ???
0B3F- 4F ???
0B40- 41 4C EOR ($4C,X)
0B42- 41 50 EOR ($50,X)
0B44- 41 44 EOR ($44,X)
0B46- 0D 00 AD ORA $AD00
0B49- 68 PLA
0B4A- FA PLX
0B4B- C9 C0 CMP #$C0
0B4D- F0 22 BEQ $0B71
0B4F- AD B3 FB LDA $FBB3 F8ROM:VERSION
0B52- C9 06 CMP #$06
0B54- F0 1B BEQ $0B71
0B56- 20 0C E0 JSR $E00C
0B59- 0D 98 01 ORA $0198
0B5C- 06 81 ASL $81
0B5E- 0C 06 C1 TSB $C106
0B61- 06 0C ASL $0C
0B63- 20 0C E0 JSR $E00C
0B66- 0F ???
0B67- 98 TYA
0B68- 01 06 ORA ($06,X)
0B6A- 81 18 STA ($18,X)
0B6C- 30 C1 BMI $0B2F
0B6E- 30 18 BMI $0B88
0B70- 60 RTS
0B71- 20 0C E0 JSR $E00C
0B74- 0D 98 01 ORA $0198
0B77- 07 ???
0B78- 08 PHP
0B79- 08 PHP
0B7A- 08 PHP
0B7B- 6B ???
0B7C- 3E 1C 08 ROL $081C,X
0B7F- 20 0C E0 JSR $E00C
0B82- 0F ???
0B83- 98 TYA
0B84- 01 07 ORA ($07,X)
0B86- 08 PHP
0B87- 1C 3E 6B TRB $6B3E
0B8A- 08 PHP
0B8B- 08 PHP
0B8C- 08 PHP
0B8D- 60 RTS
0B8E- 84 04 STY $04
0B90- A9 00 LDA #$00
0B92- 85 05 STA $05
0B94- A2 FF LDX #$FF
0B96- 88 DEY
0B97- 30 12 BMI $0BAB
0B99- E8 INX
0B9A- BD 61 0C LDA $0C61,X
0B9D- D0 FA BNE $0B99
0B9F- E8 INX
0BA0- E8 INX
0BA1- BD 61 0C LDA $0C61,X
0BA4- 18 CLC
0BA5- 65 05 ADC $05
0BA7- 85 05 STA $05
0BA9- D0 EB BNE $0B96
0BAB- A0 FF LDY #$FF
0BAD- E8 INX
0BAE- C8 INY
0BAF- BD 61 0C LDA $0C61,X
0BB2- 99 A5 0E STA $0EA5,Y
0BB5- D0 F6 BNE $0BAD
0BB7- A9 60 LDA #$60
0BB9- 99 A6 0E STA $0EA6,Y
0BBC- BD 62 0C LDA $0C62,X
0BBF- 85 06 STA $06
0BC1- BD 63 0C LDA $0C63,X
0BC4- 85 07 STA $07
0BC6- A4 04 LDY $04
0BC8- A9 01 LDA #$01
0BCA- BE B1 0C LDX $0CB1,Y
0BCD- 30 18 BMI $0BE7
0BCF- 20 A2 0E JSR $0EA2
0BD2- D0 12 BNE $0BE6
0BD4- 2C 7F 02 BIT $027F
0BD7- 10 0B BPL $0BE4
0BD9- A9 00 LDA #$00
0BDB- 20 E7 0B JSR $0BE7
0BDE- A6 04 LDX $04
0BE0- 38 SEC
0BE1- 7E B1 0C ROR $0CB1,X
0BE4- A9 00 LDA #$00
0BE6- 60 RTS
0BE7- 85 08 STA $08
0BE9- 8D 09 C0 STA $C009 w:SETALTZP
0BEC- A2 20 LDX #$20
0BEE- BD 28 0C LDA $0C28,X
0BF1- 95 80 STA $80,X
0BF3- CA DEX
0BF4- 10 F8 BPL $0BEE
0BF6- 8D 08 C0 STA $C008 w:SETSTDZP
0BF9- A4 05 LDY $05
0BFB- E6 05 INC $05
0BFD- BE 49 0C LDX $0C49,Y
0C00- A4 06 LDY $06
0C02- 98 TYA
0C03- 18 CLC
0C04- 69 08 ADC #$08
0C06- 85 06 STA $06
0C08- A5 08 LDA $08
0C0A- 8D 09 C0 STA $C009 w:SETALTZP
0C0D- 86 01 STX $01
0C0F- 84 03 STY $03
0C11- D0 04 BNE $0C17
0C13- 84 01 STY $01
0C15- 86 03 STX $03
0C17- A0 00 LDY #$00
0C19- 84 00 STY $00
0C1B- 84 02 STY $02
0C1D- 20 80 00 JSR $0080
0C20- 8D 08 C0 STA $C008 w:SETSTDZP
0C23- C6 07 DEC $07
0C25- D0 D2 BNE $0BF9
0C27- 60 RTS
0C28- AA TAX
0C29- 9D 02 C0 STA $C002,X
0C2C- 49 01 EOR #$01
0C2E- AA TAX
0C2F- 9D 04 C0 STA $C004,X
0C32- A2 08 LDX #$08
0C34- B1 00 LDA ($00),Y
0C36- 91 02 STA ($02),Y
0C38- C8 INY
0C39- D0 F9 BNE $0C34
0C3B- E6 01 INC $01
0C3D- E6 03 INC $03
0C3F- CA DEX
0C40- D0 F2 BNE $0C34
0C42- 8D 04 C0 STA $C004 w:WRMAINRAM
0C45- 8D 02 C0 STA $C002 w:RDMAINRAM
0C48- 60 RTS
0C49- 40 RTI
0C4A- 48 PHA
0C4B- 50 58 BVC $0CA5
0C4D- 60 RTS
0C4E- 68 PLA
0C4F- 70 78 BVS $0CC9
0C51- 80 88 BRA $0BDB
0C53- 90 98 BCC $0BED
0C55- A0 A8 LDY #$A8
0C57- B0 B8 BCS $0C11
0C59- D0 D8 BNE $0C33
0C5B- E0 E8 CPX #$E8
0C5D- F0 F8 BEQ $0C57
0C5F- 10 18 BPL $0C79
0C61- 49 43 EOR #$43
0C63- 4F ???
0C64- 4E 53 00 LSR $0053
0C67- 40 RTI
0C68- 04 5B TSB $5B
0C6A- 43 ???
0C6B- 44 ???
0C6C- 5D 2C 41 EOR $412C,X
0C6F- 34 30 BIT $30,X
0C71- 39 36 00 AND $0036,Y
0C74- 10 01 BPL $0C77
0C76- 45 44 EOR $44
0C78- 49 54 EOR #$54
0C7A- 00 BRK
0C7B- 50 02 BVC $0C7F
0C7D- 47 ???
0C7E- 52 45 EOR ($45)
0C80- 44 ???
0C81- 49 54 EOR #$54
0C83- 00 BRK
0C84- 40 RTI
0C85- 02 ???
0C86- 42 ???
0C87- 4F ???
0C88- 45 44 EOR $44
0C8A- 49 54 EOR #$54
0C8C- 00 BRK
0C8D- 40 RTI
0C8E- 03 ???
0C8F- 46 4F LSR $4F
0C91- 45 44 EOR $44
0C93- 49 54 EOR #$54
0C95- 00 BRK
0C96- 60 RTS
0C97- 03 ???
0C98- 43 ???
0C99- 52 44 EOR ($44)
0C9B- 41 54 EOR ($54,X)
0C9D- 41 00 EOR ($00,X)
0C9F- 60 RTS
0CA0- 03 ???
0CA1- 43 ???
0CA2- 41 4C EOR ($4C,X)
0CA4- 45 4E EOR $4E
0CA6- 00 BRK
0CA7- 40 RTI
0CA8- 04 53 TSB $53
0CAA- 45 54 EOR $54
0CAC- 55 50 EOR $50,X
0CAE- 00 BRK
0CAF- 58 CLI
0CB0- 01 00 ORA ($00,X)
0CB2- 00 BRK
0CB3- 00 BRK
0CB4- 00 BRK
0CB5- 00 BRK
0CB6- 00 BRK
0CB7- 00 BRK
0CB8- 00 BRK
0CB9- 00 BRK
0CBA- 43 ???
0CBB- 48 PHA
0CBC- 4F ???
0CBD- 4F ???
0CBE- 53 ???
0CBF- 45 20 EOR $20
0CC1- 41 20 EOR ($20,X)
0CC3- 46 4F LSR $4F
0CC5- 4E 54 3A LSR $3A54
0CC8- 00 BRK
0CC9- 52 45 EOR ($45)
0CCB- 46 45 LSR $45
0CCD- 52 45 EOR ($45)
0CCF- 4E 43 45 LSR $4543
0CD2- 20 46 4F JSR $4F46
0CD5- 4E 54 00 LSR $0054
0CD8- 46 52 LSR $52
0CDA- 4F ???
0CDB- 4D 20 50 EOR $5020
0CDE- 52 49 EOR ($49)
0CE0- 4E 54 20 LSR $2054
0CE3- 53 ???
0CE4- 48 PHA
0CE5- 4F ???
0CE6- 50 20 BVC $0D08
0CE8- 44 ???
0CE9- 49 53 EOR #$53
0CEB- 4B ???
0CEC- 00 BRK
0CED- 46 52 LSR $52
0CEF- 4F ???
0CF0- 4D 20 43 EOR $4320
0CF3- 4F ???
0CF4- 4D 50 41 EOR $4150
0CF7- 4E 49 4F LSR $4F49
0CFA- 4E 20 44 LSR $4420
0CFD- 49 53 EOR #$53
0CFF- 4B ???
0D00- 00 BRK
0D01- 46 52 LSR $52
0D03- 4F ???
0D04- 4D 20 4F EOR $4F20
0D07- 54 ???
0D08- 48 PHA
0D09- 45 52 EOR $52
0D0B- 20 44 49 JSR $4944
0D0E- 53 ???
0D0F- 4B ???
0D10- 00 BRK
0D11- 4E 4F 20 LSR $204F
0D14- 46 4F LSR $4F
0D16- 4E 54 00 LSR $0054
0D19- 8C 46 0D STY $0D46
0D1C- A0 C9 LDY #$C9
0D1E- A9 0C LDA #$0C
0D20- B0 04 BCS $0D26
0D22- A0 D8 LDY #$D8
0D24- A9 0C LDA #$0C
0D26- 8C 43 0D STY $0D43
0D29- 8D 44 0D STA $0D44
0D2C- 20 72 E0 JSR $E072
0D2F- 20 00 E0 JSR $E000
0D32- 05 06 ORA $06
0D34- 8C 00 3C STY $3C00
0D37- 09 BA ORA #$BA
0D39- 0C 0D 0D TSB $0D0D
0D3C- 0D 00 20 ORA $2000
0D3F- 75 E0 ADC $E0,X
0D41- 05 04 ORA $04
0D43- FF ???
0D44- FF ???
0D45- A0 00 LDY #$00
0D47- 20 28 E0 JSR $E028
0D4A- 07 ???
0D4B- 1A INC
0D4C- 53 ???
0D4D- 04 50 TSB $50
0D4F- 0D 60 8C ORA $8C60
0D52- 9C 0D 20 STZ $200D
0D55- 72 E0 ADC ($E0)
0D57- 20 00 E0 JSR $E000
0D5A- 05 06 ORA $06
0D5C- 8C 00 2D STY $2D00
0D5F- 09 BA ORA #$BA
0D61- 0C 0D 0D TSB $0D0D
0D64- 0D 52 53 ORA $5352
0D67- 56 50 LSR $50,X
0D69- 0D 41 4C ORA $4C41
0D6C- 45 58 EOR $58
0D6E- 49 41 EOR #$41
0D70- 0D 4E 45 ORA $454E
0D73- 57 ???
0D74- 53 ???
0D75- 0D 54 45 ORA $4554
0D78- 43 ???
0D79- 48 PHA
0D7A- 0D 50 41 ORA $4150
0D7D- 52 54 EOR ($54)
0D7F- 59 0D 42 EOR $420D,Y
0D82- 4C 4F 43 JMP $434F
0D85- 4B ???
0D86- 0D 54 59 ORA $5954
0D89- 50 45 BVC $0DD0
0D8B- 57 ???
0D8C- 52 49 EOR ($49)
0D8E- 54 ???
0D8F- 45 52 EOR $52
0D91- 0D 53 54 ORA $5453
0D94- 45 4E EOR $4E
0D96- 43 ???
0D97- 49 4C EOR #$4C
0D99- 0D 00 A0 ORA $A000
0D9C- 00 BRK
0D9D- 20 28 E0 JSR $E028
0DA0- 0C 10 44 TSB $4410
0DA3- 08 PHP
0DA4- 50 0D BVC $0DB3
0DA6- 8C CB 0D STY $0DCB
0DA9- B0 1F BCS $0DCA
0DAB- C8 INY
0DAC- 98 TYA
0DAD- 09 30 ORA #$30
0DAF- 8D BF 0D STA $0DBF
0DB2- 20 72 E0 JSR $E072
0DB5- 38 SEC
0DB6- 20 5A E0 JSR $E05A
0DB9- B0 0F BCS $0DCA
0DBB- 20 39 E0 JSR $E039
0DBE- 46 31 LSR $31
0DC0- 00 BRK
0DC1- 18 CLC
0DC2- F0 06 BEQ $0DCA
0DC4- A9 08 LDA #$08
0DC6- 20 42 E0 JSR $E042
0DC9- 38 SEC
0DCA- A0 00 LDY #$00
0DCC- 60 RTS
0DCD- 46 4F LSR $4F
0DCF- 4E 54 2E LSR $2E54
0DD2- 00 BRK
0DD3- 8C F0 0D STY $0DF0
0DD6- 20 72 E0 JSR $E072
0DD9- 20 00 E0 JSR $E000
0DDC- 05 06 ORA $06
0DDE- 8C 00 1D STY $1D00
0DE1- 09 BA ORA #$BA
0DE3- 0C 0D 0D TSB $0D0D
0DE6- 0D 00 20 ORA $2000
0DE9- 75 E0 ADC $E0,X
0DEB- 05 0C ORA $0C
0DED- 47 ???
0DEE- 0E A0 00 ASL $00A0
0DF1- 20 28 E0 JSR $E028
0DF4- 0C 10 34 TSB $3410
0DF7- 0C 50 0D TSB $0D50
0DFA- 8C 45 0E STY $0E45
0DFD- B0 45 BCS $0E44
0DFF- A2 FF LDX #$FF
0E01- 88 DEY
0E02- 30 08 BMI $0E0C
0E04- E8 INX
0E05- BD 47 0E LDA $0E47,X
0E08- D0 FA BNE $0E04
0E0A- F0 F5 BEQ $0E01
0E0C- A0 00 LDY #$00
0E0E- B9 CD 0D LDA $0DCD,Y
0E11- F0 06 BEQ $0E19
0E13- 99 A5 0E STA $0EA5,Y
0E16- C8 INY
0E17- D0 F5 BNE $0E0E
0E19- E8 INX
0E1A- C8 INY
0E1B- BD 47 0E LDA $0E47,X
0E1E- 99 A4 0E STA $0EA4,Y
0E21- D0 F6 BNE $0E19
0E23- A9 60 LDA #$60
0E25- 99 A5 0E STA $0EA5,Y
0E28- 20 72 E0 JSR $E072
0E2B- 18 CLC
0E2C- A9 01 LDA #$01
0E2E- 20 5D E0 JSR $E05D
0E31- B0 11 BCS $0E44
0E33- 20 00 E0 JSR $E000
0E36- 18 CLC
0E37- 00 BRK
0E38- 20 A2 0E JSR $0EA2
0E3B- 18 CLC
0E3C- F0 06 BEQ $0E44
0E3E- A9 08 LDA #$08
0E40- 20 42 E0 JSR $E042
0E43- 38 SEC
0E44- A0 00 LDY #$00
0E46- 60 RTS
0E47- 42 ???
0E48- 41 4C EOR ($4C,X)
0E4A- 4C 4F 4F JMP $4F4F
0E4D- 4E 00 4F LSR $4F00
0E50- 48 PHA
0E51- 49 4F EOR #$4F
0E53- 00 BRK
0E54- 50 4C BVC $0EA2
0E56- 41 54 EOR ($54,X)
0E58- 46 4F LSR $4F
0E5A- 52 4D EOR ($4D)
0E5C- 00 BRK
0E5D- 44 ???
0E5E- 45 43 EOR $43
0E60- 4F ???
0E61- 00 BRK
0E62- 41 4E EOR ($4E,X)
0E64- 47 ???
0E65- 4C 45 00 JMP $0045
0E68- 4C 4F 57 JMP $574F
0E6B- 45 52 EOR $52
0E6D- 20 43 41 JSR $4143
0E70- 53 ???
0E71- 45 00 EOR $00
0E73- 4F ???
0E74- 52 49 EOR ($49)
0E76- 45 4E EOR $4E
0E78- 54 ???
0E79- 00 BRK
0E7A- 43 ???
0E7B- 41 42 EOR ($42,X)
0E7D- 41 52 EOR ($52,X)
0E7F- 45 54 EOR $54
0E81- 00 BRK
0E82- 47 ???
0E83- 41 54 EOR ($54,X)
0E85- 53 ???
0E86- 42 ???
0E87- 59 00 53 EOR $5300,Y
0E8A- 41 4C EOR ($4C,X)
0E8C- 4F ???
0E8D- 4F ???
0E8E- 4E 00 53 LSR $5300
0E91- 41 4E EOR ($4E,X)
0E93- 44 ???
0E94- 57 ???
0E95- 49 43 EOR #$43
0E97- 48 PHA
0E98- 00 BRK
0E99- 52 45 EOR ($45)
0E9B- 50 4F BVC $0EEC
0E9D- 52 54 EOR ($54)
0E9F- 45 52 EOR $52
0EA1- 00 BRK
0EA2- 20 39 E0 JSR $E039

View File

@ -0,0 +1,90 @@
;-----------
;
; 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
TESTPAPR = SP+132
GETANUMB = SP+135
ANYKEY2 = SP+138
;
WITE = $FF
GRAY = $AA
GRAY2 = $55
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
PRPIC = 19
PRRTAB = 20
PRRTAB2 = 21
PRKERN = 22
RTOSINV = 23
GOOBER = 24
;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,285 @@
NLS
TTL "S:8800"
ORG = $8800
NOG
;
; Routines for pages $8800 & $8900
;
;------------
*
* AGE ROUTINES
* AR PAGE
* NT STRING
*
TADDR EPZ $08
XSAVE EPZ $09
YSAVE EPZ $0A
*
KBCODE EQU $C000
KBSTROBE EQU $C010
*------- ----
ORG ORG
OBJ $800
*------- ----
TCLEAR JMP $FC58
JMP TPRINT
*
CURSX HEX 00
CURSY HEX 00
STRADDR HEX 0000
INMAX HEX 00
VOPTION HEX 80
RETFLAG HEX 00
*
JMP DOIT
*
TEXTLO HEX 0080008000800080
HEX 28A828A828A828A8
HEX 50D050D050D050D0
*
TEXTHI HEX 0404050506060707
HEX 0404050506060707
HEX 0404050506060707
*------- -------------
TPRINT LDA TADDR
PHA
LDA TADDR+1
PHA
JSR >0
PLA
STA TADDR+1
PLA
STA TADDR
RTS
*------- -----------
* TEXT STRING
*
^0 LDX CURSY
LDA TEXTLO,X
STA TADDR
LDA TEXTHI,X
STA TADDR+1
LDA STRADDR
STA TLDA+1
LDA STRADDR+1
STA TLDA+2
LDY CURSX
LDX #00
STX RETFLAG
^1 JSR TLDA
BEQ >2
AND #$3F
ORA VOPTION
STA (TADDR),Y
INX
INY
CPX INMAX
BNE <1
^2 RTS
*------- -----------
* DISPLAY MULTIPLE LINES
* STRADDR
* ITIAL CURSY
* SET TO ZERO
* UNTIL $FF FOUND
*
DOIT STX STRADDR
STY STRADDR+1
STA CURSY
LDA #00
STA CURSX
LDX #40
STA INMAX
LDA #01
STA LCOUNT
*
DOIT1 LDA LCOUNT
LDX #$80
STX VOPTION
JSR TPRINT
INX
TXA
CLC
ADC STRADDR
STA STRADDR
BCC DOIT3
INC STRADDR+1
DOIT3 INC CURSY
INC LCOUNT
JSR TLDA
CMP #$FF
BNE DOIT1
RTS
*
LCOUNT HEX 00
*------- ----
*
TLDA LDA $8000,X
RTS
******** *************
;-----------
;
; Check input device button
;
BUTTON STX XSAVE
STY YSAVE
JSR DEVICERD
LDX XSAVE
LDY YSAVE
BCS >0
ASL
BMI >0
BCC >0
LDA #13
RTS
;
^0 LDA #0
RTS
;-----------
;
; Calc Ybase
;
LRKYCALC LDA TEXTLO,X
STA TADDR
LDA TEXTHI,X
STA TADDR+1
RTS
;-----------
;
; PRINT TEXT STRING
;
TPRT JSR LRKYCALC
LDY #39
^0 LDA BUFFER,Y
STA (TADDR),Y
DEY
BPL <0
TPDONE RTS
;-----------
;
; Substitute code for PRCOMS file
; that has the lores routines at
; $9600. This routine is at $8900.
;
; LO-RES KALEIDOSCOPE
;
BUFFER = $380
;
DAT EPZ $E0
;
BUFPTR1 EPZ DAT
BUFPTR2 EPZ DAT+1
COLORPTR EPZ DAT+2
LINENO EPZ DAT+3
CSTART EPZ DAT+4
BYTCNT EPZ DAT+5
BYTPTR EPZ DAT+6
;---
SP = $E000
;
DEVICERD = SP+24
;
; Start at next page
;
DFS $100-*&$FF,0
;-----------
JMP BUTTON
DFS 5,$EA
JMP LRK
JMP UPLRK
;-----------
MSG HEX 7D2A28A89C
HEX 112B292CA2
HEX 112B2A2CA0
HEX 11EAAC2AA0
HEX 112A6A29A6
HEX 112A6929A2
HEX 112A28A89E
;
HEX 73CA2FA89C
HEX 4A2B222CA2
HEX 4A2B222CA0
HEX 73CAA22AA0
HEX 428A6229A6
HEX 424A6229A2
HEX 422A22289E
;
HEX 784227289C
HEX 44A228ACA2
HEX 44A2282CA0
HEX 7912272AA0
HEX 41F220A9A6
HEX 420A28A9A2
HEX 4209C7289E
;-----------
;
; Draw the initial color lines
;
LRK LDA #00
STA BUFPTR1
STA LINENO
LDA CSTART
STA COLORPTR
LDA #40
STA BUFPTR2
LRK1 LDX COLORPTR
LDA COLOR,X
LDY BUFPTR1
LRK2 STA BUFFER,Y
INY
CPY BUFPTR2
BNE LRK2
LDX LINENO
JSR TPRT
LDA #19
SEC
SBC LINENO
TAX
JSR TPRT
INC BUFPTR1
DEC BUFPTR2
INC COLORPTR
LDA COLORPTR
AND #07
STA COLORPTR
INC LINENO
LDA LINENO
CMP #10
BNE LRK1
INC CSTART
LDA CSTART
AND #07
STA CSTART
RTS
;
COLOR HEX BB99DDCC
HEX EE667733
;-----------
;
; Rotate the lores colors by one
;
UPLRK LDX #19
UPLRK2 STX CURSY
JSR LRKYCALC
LDY #39
UPLRK3 LDA (TADDR),Y
AND #$0F
TAX
LDA NEXTC,X
STA (TADDR),Y
DEY
BPL UPLRK3
LDX CURSY
DEX
BPL UPLRK2
RTS
;
NEXTC HEX 000000BB
HEX 00007733
HEX 00DD0099
HEX EECC6600
;-----------
;
;
USR "O:8800",ORG
END

View File

@ -0,0 +1,272 @@
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

View File

@ -0,0 +1,3 @@
NLS
; S:EDIT
ICL "S:EDIT1"

View File

@ -0,0 +1,592 @@
TTL "S:EDIT"
; S:EDIT1
NOG
ORG = $5000
OBJ = $800
;
; 02/27/85
; 07/31/85 last mod
; added support for FONTS
;
; Editor for use with
; The Print Shop Companion Disk
;
; For FONTS and GRAPHICS
;
; by Roland Gustafsson
;
DAT EPZ $D0
;
XCOOR EPZ DAT
YCOOR EPZ DAT+1
BUFLO EPZ DAT+2
BUFHI EPZ DAT+3
TBUFLO EPZ DAT+4
TBUFHI EPZ DAT+5
XMAX EPZ DAT+6
YMAX EPZ DAT+7
OLDXCOOR EPZ DAT+8
OLDYCOOR EPZ DAT+9
X1 EPZ DAT+10
Y1 EPZ DAT+11
X2 EPZ DAT+12
Y2 EPZ DAT+13
BUTTON EPZ DAT+14
CNSTRAIN EPZ DAT+15
;
PTMP0 EPZ DAT+16
PTMP1 EPZ DAT+17
;
; Temporary z-page for use within
; subroutines
;
PLOTX EPZ $4D
FLASHLO EPZ $4E
FLASHHI EPZ $4F
;
TMP0 EPZ $F0
TMP1 EPZ $F1
TMP2 EPZ $F2
TMP3 EPZ $F3
TMP4 EPZ $F4
TMP5 EPZ $F5
HIRES1 EPZ $F6
HIRES2 EPZ $F8
HIRES3 EPZ $FA
;
TMPLO EPZ TMP0
TMPHI EPZ TMP1
;
; Absolute references:
;
EDITBUFF = $7800
UNDOBUFF = EDITBUFF+$240
TEMPBUFF = UNDOBUFF+$240
;
XSTACK = $8300
YSTACK = $8400
;
; Subroutine package entry points
;
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
BOOP = SP+102
;
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
;
ESC = $1B
;
; SYSLIB tables
;
SYSFONT = $8500
FLIPPER = $9080
YBASELO = $91C0
YBASEHI = $9100
XBYTEOFF = $9280
;
FONTDATA = $8500
;
FONTWITH = FONTDATA
FONTHITE = FONTDATA+$3B
FONTADRL = FONTDATA+$76
FONTADRH = FONTDATA+$B1
;
WAIT = $FCA8
;
; Variables:
;
GRAFXOFF = 0
GRAFYOFF = 23
;
FONTXOFF = 1
FONTYOFF = 38
;
REFMOVER = $4003
;
FONTW = 48
FONTH = 38
;
;-----------
ORG ORG
OBJ OBJ
;-----------
JMP EDITINIT
JMP SHOWBOXS
JMP SHOWGR
JMP CHKBUFF
JMP CLRBUFF
JMP ORBUFF
JMP BUFFSAVE
JMP BASECALC
JMP SETPLOTX
JMP SETBIT
JMP CLRBIT
JMP PRINTGR
JMP DRAWTEXT
JMP DOSHAPE
JMP EDITLOOP
JMP FONTMODS
FONTRX1 HEX 80
FONTRY1 HEX 80
FONTRY2 HEX 80
REFLINES HEX 80
JMP RESETBT1
;-----------
;
; Initialize XMAX & YMAX
; Center the cursor and update screen
;
EDITINIT STX XMAX
STY YMAX
GRCENTER LDA XMAX
LSR
STA XCOOR
DEC XCOOR
LDA YMAX
LSR
STA YCOOR
DEC YCOOR
RTS
;-----------
;
; Show fill pattern and mirror status
;
SHOWBOXS LDY #FILLPLOC-1
JSR SHOWBOX
LDY #MIRRPLOC-1
JSR SHOWBOX
JSR SHOWFILL
JSR SHOWMIRR
JMP SHOWLOCK
;-----------
;
; Check EDITBUFF for all zeroes
;
CHKBUFF LDY #0
TYA
^0 ORA EDITBUFF,Y
ORA EDITBUFF+$100,Y
INY
BNE <0
^1 ORA EDITBUFF+$200,Y
INY
CPY #60
BLT <1
TAY
RTS
;-----------
;
; Clear EDITBUFF
;
CLRBUFF LDY #0
;
; Clear buffer
;
BUFFCLR LDA BUFFERS,Y
STA TMPLO
LDA BUFFERS+1,Y
STA TMPHI
LDY #0
TYA
LDX #2
^0 STA (TMPLO),Y
INY
BNE <0
INC TMPHI
DEX
BNE <0
^1 STA (TMPLO),Y
INY
CPY #60
BLT <1
RTS
;
BUFFERS ADR EDITBUFF
ADR UNDOBUFF
ADR TEMPBUFF
;-----------
;
; OR UNDOBUFF into EDITBUFF
;
ORBUFF LDY #0
^0 LDA UNDOBUFF,Y
ORA EDITBUFF,Y
STA EDITBUFF,Y
LDA UNDOBUFF+$100,Y
ORA EDITBUFF+$100,Y
STA EDITBUFF+$100,Y
INY
BNE <0
^1 LDA UNDOBUFF+$200,Y
ORA EDITBUFF+$200,Y
STA EDITBUFF+$200,Y
INY
CPY #60
BLT <1
RTS
;-----------
;
; Move EDIT buffer to UNDO buffer
;
BUFFSAVE LDY #0
LDX #2
;
; Move buffer Y->X
;
BUFFMOVE LDA BUFFERS,Y
STA TMP0
LDA BUFFERS+1,Y
STA TMP1
LDA BUFFERS,X
STA TMP2
LDA BUFFERS+1,X
STA TMP3
LDX #2
LDY #0
^0 LDA (TMP0),Y
STA (TMP2),Y
INY
BNE <0
INC TMP1
INC TMP3
DEX
BNE <0
;
^1 LDA (TMP0),Y
STA (TMP2),Y
INY
CPY #60
BLT <1
RTS
;-----------
;
; Calculate pointer into buffer
; 3 entry points:
;
; BASECLCT=point into TEMPBUFF
; BASECLCU=point into UNDOBUFF
;
; BASECALC=point only EDITBUFF
;
BASECLCU LDA #UNDOBUFF-EDITBUFF
LDX /UNDOBUFF-EDITBUFF
BNE >0
;
BASECLCT LDA #TEMPBUFF-EDITBUFF
LDX /TEMPBUFF-EDITBUFF
;
^0 LDY YCOOR
CLC
ADC EDYBASEL,Y
STA TBUFLO
TXA
ADC EDYBASEH,Y
STA TBUFHI
;
BASECALC LDY YCOOR
LDA EDYBASEL,Y
STA BUFLO
LDA EDYBASEH,Y
STA BUFHI
;
; Get mask (in A) and offset (in Y)
;
GETXMASK LDA XCOOR
LSR
LSR
LSR
TAY
LDA XCOOR
AND #7
TAX
LDA XCOORMSK,X
RTS
;
; X-coor mask
;
XCOORMSK BYT %10000000
BYT %01000000
BYT %00100000
BYT %00010000
BYT %00001000
BYT %00000100
BYT %00000010
BYT %00000001
;-----------
;
; Given XCOOR,YCOOR set
; PLOT routine to opposite
; of whatever is in this
; coordinate.
;
SETPLOTX JSR BASECALC
LDX #PLSET
AND (BUFLO),Y
BEQ *+4
LDX #PLCLR
SETPLTX2 STX PLOTX
;
; Set PLOT routine, given X
;
PLSET = 0
PLCLR = 2
PLEOR = 4
PLUNDO = 6
PLTEMP = 8
;
SETPLOT LDY SETPLOT2,X
LDA SETPLOT2+1,X
STY PLOT+1
STA PLOT+2
RTS
;
SETPLOT2 ADR SETBIT
ADR CLRBIT
ADR EORBIT
ADR UNDOBIT
ADR TEMPBIT
;
PLOT JMP SETBIT
;
; If FONT editor, then check
; for reference lines.
;
FONTREF BIT REFLINES
BPL >0
LDA XCOOR
CMP FONTRX1
BNE *+5
JSR DOFONTX
;
LDA YCOOR
CMP FONTRY1
BNE *+5
JSR DOFONTY
;
LDA YCOOR
CMP FONTRY2
BEQ DOFONTY
^0 RTS
;
DOFONTX ASL
ADC #1
STA >0+1
JSR LINES
BYT "V",FONTXOFF
^0 BYT GRAY,00,FONTYOFF,3*FONTH
BYT 1
RTS
;
DOFONTY STA TMP0
ASL
ADC TMP0
ADC #FONTYOFF+2
STA >0+2
JSR LINES
BYT "H",FONTXOFF
^0 BYT GRAY,0,00,2*FONTW
BYT 1
RTS
;-----------
;
; Set bit in section and screen
;
SETBIT JSR BASECALC
ORA (BUFLO),Y
STA (BUFLO),Y
SETBIT2 JMP PLOTON
;
; Clear bit in section and screen
;
CLRBIT JSR BASECALC
EOR #$FF
AND (BUFLO),Y
STA (BUFLO),Y
CLRBIT2 JMP PLOTOFF
;
; Invert bit at current location
;
EORBIT JSR BASECALC
STA TMP0
EOR (BUFLO),Y
STA (BUFLO),Y
LDA TMP0
BNE RESETBT2
;
; Restore current location, use
; after BRFLASH
;
RESETBIT JSR RESETBT1
JMP FONTREF
;
RESETBT1 JSR BASECALC
RESETBT2 AND (BUFLO),Y
BEQ CLRBIT2
BNE SETBIT2
;-----------
;
; Move bit TEMPBUFF-->EDITBUFF
;
TEMPBIT JSR BASECLCT
BNE >0
;
; Move bit UNDOBUFF-->EDITBUFF
;
UNDOBIT JSR BASECLCU
^0 STA TMP0
AND (TBUFLO),Y
STA TMP1
LDA TMP0
EOR #$FF
AND (BUFLO),Y
ORA TMP1
STA (BUFLO),Y
LDA TMP1
JMP RESETBT2
;-----------
;
; Do PLOT routine with mirrors
;
MRPLOT LDX XCOOR
LDY YCOOR
STX MRXSAVE
STY MRYSAVE
JSR PLOT
LDA CURRMIRR
BEQ MRDOBITR
CMP #2
BEQ >2
CMP #3
BEQ >3
;
; Mirror both axis
;
^1 JSR >3
JSR >2
LDA YMAX
SEC
SBC YCOOR
STA YCOOR
LDA XMAX
SEC
SBC XCOOR
STA XCOOR
JMP MRDOBIT
;
; Mirror vertical
;
^2 LDA YMAX
SEC
SBC YCOOR
STA YCOOR
JMP MRDOBIT
;
; Mirror horizontal
;
^3 LDA XMAX
SEC
SBC XCOOR
STA XCOOR
;
; Do one bit and restore X,Y
;
MRDOBIT LDA XCOOR
CMP XMAX
BGE >0
LDA YCOOR
CMP YMAX
BGE >0
JSR PLOT
^0 LDX #00
MRXSAVE = *-1
LDY #00
MRYSAVE = *-1
STX XCOOR
STY YCOOR
MRDOBITR RTS
;-----------
;
; Ybase for EDITBUFF
;
EDYBASEL HEX 000B16212C37424D58636E79848F9AA5
HEX B0BBC6D1DCE7F2FD08131E29343F4A55
HEX 606B76818C97A2ADB8C3CED9E4EFFA05
HEX 101B2631
;
EDYBASEH HEX 78787878787878787878787878787878
HEX 78787878787878787979797979797979
HEX 7979797979797979797979797979797A
HEX 7A7A7A7A
;-----------
;
; Font modifications
;
FONTMODS LDX #FONTXOFF
LDY #FONTYOFF
STX XOFFSET
STY YOFFSET
LDA #$20
STA PLOT
RTS
;-----------
;
;
;
ICL "S:EDIT2"

View File

@ -0,0 +1,981 @@
;
; S:EDIT2
;
; The main editor calls here to
; get a key and let the editor
; do it's job.
;
EDITLOOP LDX XCOOR
LDY YCOOR
STX OLDXCOOR
STY OLDYCOOR
JSR DEVICEST
^0 JSR SETFLASH
;
^1 LDY #2
JOYMOD = *-1
JSR DEVICERD
BCS >2
;
STA BUTTON
JSR DODEVICE
LDA #1
BIT BUTTON
BMI >3
;
^2 LDA #0
STA CNSTRAIN
JSR POLEKEY
BMI KEYPRESS
LDA #2
;
^3 STA JOYMOD
DEC FLASHLO
BNE <1
DEC FLASHHI
BPL <1
BMI <0
;
; Since didn't match one of our
; commands, then return calling
; program and let it handle this
; key.
;
NOTOURS LDA KEYGOT
JMP LOCKOFF
;
; Process keypress
;
KEYPRESS STA KEYGOT
JSR RESETBIT
LDY #$FD
^0 INY
INY
INY
LDA COMMANDS,Y
BEQ NOTOURS
AND #$7F
CMP #00
KEYGOT = *-1
BNE <0
;
; If a "LOCKstopper", then doit!
;
CPY #LOCKSTOP-COMMANDS
BLT >1
JSR LOCKOFF
;
; If move command, and lockmode
; is on, plot!
;
^1 CPY #MOVECOM?-COMMANDS
BGE >1
LDA #00
LOCKMODE = *-1
BPL >1
TYA
PHA
JSR MRPLOT
PLA
TAY
;
^1 LDA COMMANDS+1,Y
STA >4+1
LDA COMMANDS+2,Y
STA >4+2
;
LDA COMMANDS,Y
BPL >3
;
JSR BUFFSAVE
;
^3 LDX XCOOR
LDY YCOOR
;
^4 JSR $FFFF
JMP EDITLOOP
;-----------
;
; Handle input device
;
; First check to see if it moved
;
DODEVICE CPX XCOOR
BNE >0
CPY YCOOR
BEQ >3
;
; Device moved
;
^0 LDA CNSTRAIN
BPL >1
;
; Figure out which direction
; to constrain
;
LDA #1
CPX XCOOR
BEQ *+3
ASL
STA CNSTRAIN
;
^1 STX >1+1
STY >2+1
JSR RESETBIT
LDX XCOOR
LDY YCOOR
STX OLDXCOOR
STY OLDYCOOR
^1 LDX #00
^2 LDY #00
JSR DEVCONST
;
; If button down, plot new point
; else, just plot cursor.
;
BIT BUTTON
BMI DOBUTTON
BPL SETFLASH
;
; End up here if device didn't move.
; If button is not down or if button
; was down last time, then exit.
;
^3 STX OLDXCOOR
STY OLDYCOOR
BIT BUTTON
BPL DEVRTS
BVS DEVRTS
;
; Handle button press
;
DOBUTTON BVS >0
;
; Button down for first time, so
; get bit and invert.
;
LDA LOCKMODE
STA CNSTRAIN
JSR BUFFSAVE
JSR SETPLOTX
;
; Draw a line from
; (OLDXCOOR,OLDYCOOR) to
; (XCOOR,YCOOR)
;
^0 JSR LINE
;
; Invert current position and
; set countdown timer
;
SETFLASH JSR GRFLASH
JSR FLSHINIT
;
; Show coordinates
;
LDA XCOOR
LDX #4
LDY #185
JSR NUMBER
LDA YCOOR
LDX #10
LDY #185
JMP NUMBER
;
DEVRTS RTS
;
; Device input constrain
; but only when the constrain
; feature is selected.
;
DEVCONST BIT DEVRTS
LDA CNSTRAIN
BEQ DEVCLAMP
;
LSR
BCC >0
;
; Constrain X?
;
CPX XCOOR
BEQ DEVCLMP2
LDX XCOOR
CLV
BVC DEVCLMP2
;
; Constrain Y?
;
^0 CPY YCOOR
BEQ DEVCLMP2
LDY YCOOR
CLV
BVC DEVCLMP2
;
; Device input clamping
;
DEVCLAMP BIT DEVRTS
DEVCLMP2 CPX XMAX
BLT >0
CLV
LDX XMAX
DEX
^0 CPY YMAX
BLT >1
CLV
LDY YMAX
DEY
^1 STX XCOOR
STY YCOOR
BVS DEVRTS
JMP DEVICEST
;-----------
;
; Commands followed by their
; locations in memory
;
COMMANDS .DA #'I',MOVEUP
.DA #$0B,MOVEUP
.DA #'M',MOVEDOWN
.DA #$0A,MOVEDOWN
.DA #'J',MOVELEFT
.DA #$08,MOVELEFT
.DA #'K',MOVERITE
.DA #$15,MOVERITE
MOVECOM?:
.DA #'L'-$40,TOGGLOCK
.DA #"D",GRSET
.DA #"E",GRCLEAR
LOCKSTOP:
;
.DA #'W',SCRLUP
.DA #'Z',SCRLDOWN
.DA #'A',SCRLLEFT
.DA #'S',SCRLRITE
;
.DA #"1",INSEROW
.DA #"2",DELEROW
.DA #"3",INSECOLU
.DA #"4",DELECOLU
;
.DA #'H',FLIPHORI
.DA #'V',FLIPVERT
.DA #'N',GRINVERS
.DA #"F",FLODFILL
.DA #'P',NEXTPATT
.DA #'X',NEXTMIRR
;
.DA #'U',UNDO
;
BRK
;-----------
;
; Swap UNDO buffer with EDIT buffer
;
UNDO LDY #EDITBUFF
LDA /EDITBUFF
STY TMP0
STA TMP1
LDY #UNDOBUFF
LDA /UNDOBUFF
STY TMP2
STA TMP3
LDY #0
LDX #0
;
^0 LDA (TMP0),Y
PHA
LDA (TMP2),Y
STA (TMP0),Y
PLA
STA (TMP2),Y
CPX #2
BNE >1
CPY #59
BEQ >2
^1 INY
BNE <0
INC TMP1
INC TMP3
INX
BNE <0
;
^2 JMP SHOWGR
;-----------
;
; Keyboard cursor move
;
MOVEUP DEY
BPL MOVEDONE
LDY YMAX
DEY
BNE MOVEDONE
;
MOVEDOWN INY
CPY YMAX
BLT MOVEDONE
LDY #0
;
; Set new coordinates
;
MOVEDONE STX XCOOR
STY YCOOR
RTS
;
MOVELEFT DEX
BPL MOVEDONE
LDX XMAX
DEX
BNE MOVEDONE
;
MOVERITE INX
CPX XMAX
BLT MOVEDONE
LDX #0
BEQ MOVEDONE
;-----------
;
; Delete row
;
DELEROW LDA YCOOR
STA TMP5
JSR INITBOT2
LDY #11
BNE >0
;
; Insert row
;
INSEROW LDA YCOOR
STA TMP5
JSR INITBOTT
LDY #$F5
;
^0 LDA YMAX
SEC
SBC TMP5
TAX
DEX
JSR MOVEALL
;
LDY #10
LDA #0
^1 STA (BUFLO),Y
DEY
BPL <1
LDA TMP5
STA YCOOR
JMP SHOWGR
;
; Scroll down
;
SCRLDOWN LDA YCOOR
PHA
JSR INITBOTT
LDY #$F5
JSR MOVEALL
PLA
STA YCOOR
BPL SCRLDONE
;
; Scroll up
;
SCRLUP JSR INITTOP
;
LDY #11
JSR MOVEALL
;
; Restore line, redraw
;
SCRLDONE LDY #10
^0 LDA TEMPBUFF,Y
STA (BUFLO),Y
DEY
BPL <0
JMP SHOWGR
;
; Init pointer to bottom
;
INITBOTT LDY YMAX
DEY
STY YCOOR
INITBOT2 JSR BASECALC
JMP SCRLSAVE
;
; Init pointer to top
;
INITTOP LDY #EDITBUFF
LDA /EDITBUFF
STY BUFLO
STA BUFHI
STY TMPLO
STA TMPHI
;
; Bottom or Top line save for
; scroll routines
;
SCRLSAVE LDY #10
^0 LDA (BUFLO),Y
STA TEMPBUFF,Y
DEY
BPL <0
LDX YMAX
DEX
RTS
;
; Given A,Y = add, X=# of lines
;
; move from BUF->TMP
;
MOVEALL STY >1+1
TXA
BEQ >4
LDA #$FF
CPY #$F5
BEQ >0
LDA #$00
^0 STA >2+1
;
^0 LDA BUFLO
STA TMPLO
CLC
^1 ADC #00
STA BUFLO
LDA BUFHI
STA TMPHI
^2 ADC #00
STA BUFHI
LDY #10
^3 LDA (BUFLO),Y
STA (TMPLO),Y
DEY
BPL <3
DEX
BNE <0
^4 RTS
;
; Insert Column
;
INSECOLU LDY #>0
LDA />0
JMP DOLINES
;
^0 LDA TEMPBUFF,X
STA TEMPBUFF+1,X
DEX
BMI >1
CPX XCOOR
BGE <0
^1 LDA #0
INX
STA TEMPBUFF,X
RTS
;
; Delete Column
;
DELECOLU LDY #>0
LDA />0
JMP DOLINES
;
^0 LDY XCOOR
^1 LDA TEMPBUFF+1,Y
STA TEMPBUFF,Y
INY
DEX
BMI >2
CPX XCOOR
BGE <1
^2 LDA #0
STA TEMPBUFF,Y
RTS
;
; Scroll left
;
SCRLLEFT LDY #>0
LDA />0
JMP DOLINES
;
^0 LDA TEMPBUFF
PHA
^1 LDA TEMPBUFF+1,Y
STA TEMPBUFF,Y
INY
DEX
BPL <1
PLA
STA TEMPBUFF,Y
RTS
;
; Scroll right
;
SCRLRITE LDY #>0
LDA />0
JMP DOLINES
;
^0 LDA TEMPBUFF+1,X
PHA
^1 LDA TEMPBUFF,X
STA TEMPBUFF+1,X
DEX
BPL <1
PLA
STA TEMPBUFF
RTS
;-----------
;
; Flip vertical
;
FLIPVERT LDA YCOOR
PHA
JSR INITTOP
JSR INITBOTT
TXA
LSR
TAX
;
^0 LDY #10
^1 LDA (TMPLO),Y
PHA
LDA (BUFLO),Y
STA (TMPLO),Y
PLA
STA (BUFLO),Y
DEY
BPL <1
;
LDA TMPLO
CLC
ADC #11
STA TMPLO
BCC >2
INC TMPHI
^2 LDA BUFLO
SEC
SBC #11
STA BUFLO
BCS >3
DEC BUFHI
^3 DEX
BPL <0
PLA
STA YCOOR
JMP SHOWGR
;
; Flip horizontal
;
FLIPHORI LDY #>0
LDA />0
JMP DOLINES
;
^0 INX
^1 LDA TEMPBUFF,X
PHA
LDA TEMPBUFF,Y
STA TEMPBUFF,X
PLA
STA TEMPBUFF,Y
DEX
STX >2+1
INY
^2 CPY #00
BLT <1
RTS
;
; Invert buffer
;
GRINVERS LDY #>0
LDA />0
JMP DOLINES
;
^0 INX
^1 LDA TEMPBUFF,X
EOR #1
STA TEMPBUFF,X
DEX
BPL <1
RTS
;-----------
;
; General purpose line mod routine
;
DOLINES STY DOLINESB+1
STA DOLINESB+2
LDY #EDITBUFF
LDA /EDITBUFF
STY BUFLO
STA BUFHI
LDA YMAX
DOLINELP PHA
LDX #0
STX TMP0
;
^1 LDY TMP0
INC TMP0
LDA (BUFLO),Y
STA TMP1
LDY #8
;
^2 DEY
BMI <1
ASL TMP1
ROL
STA TEMPBUFF,X
INX
CPX XMAX
BLT <2
;
DEX
DEX
LDY #0
DOLINESB JSR $FFFF
;
LDX #0
STX TMP0
;
^1 LDY #8
;
^2 DEY
BPL >3
LDY TMP0
STA (BUFLO),Y
INC TMP0
BNE <1
;
^3 ROR TEMPBUFF,X
ROL
INX
CPX XMAX
BLT <2
;
^4 DEY
BMI >5
ASL
BPL <4
;
^5 LDY TMP0
STA (BUFLO),Y
;
LDA BUFLO
CLC
ADC #11
STA BUFLO
BCC >6
INC BUFHI
^6 PLA
SEC
SBC #1
BNE DOLINELP
JMP SHOWGR
;-----------
;
; Set bit when "D" is pressed
;
GRSET LDX #PLSET
LDA #$16
BNE >0
;
; Clear bit when "E" is pressed
;
GRCLEAR LDX #PLCLR
LDA #$18
;
^0 PHA
JSR SETPLOT
JSR MRPLOT
PLA
TAY
;
; Click the speaker
;
^0 LDX #7
^1 LDA $C030
TYA
JSR WAIT
DEX
BNE <1
RTS
;-----------
;
; Here is the nifty flood-fill
; routine. (Same as in Dazzle Draw)
;
FLZ EPZ $80
;
FLTMP0 EPZ FLZ
FLINVERT EPZ FLZ+1
FLXMIN EPZ FLZ+2
FLXMAX EPZ FLZ+3
FLMASK EPZ FLZ+4
FLSTACK1 EPZ FLZ+5
FLSTACK2 EPZ FLZ+6
;
FLODFILL JSR SAVECOOR
LDY #4
JSR BUFFCLR
LDA #0
STA FLSTACK1
STA FLSTACK2
STA FLINVERT
JSR FLODPUSH
JSR FLGETBIT
STA FLINVERT
;
; Main recursive routine:
;
FLODMAIN JSR FLODPULL
;
; If we've already been here,
; then don't bother checking
;
JSR FLGETBIT
LDA FLMASK
AND (TBUFLO),Y
BNE FLODRDON
;
; Fill left
;
LDA XCOOR
PHA
^0 DEC XCOOR
BMI >1
JSR FLODCHEK
BEQ <0
;
; Fill right
;
^1 LDX XCOOR
INX
STX FLXMIN
PLA
STA XCOOR
;
^2 JSR FLODCHEK
BNE >3
INC XCOOR
LDA XCOOR
CMP XMAX
BLT <2
;
; Now scan above and below
;
^3 LDA XCOOR
STA FLXMAX
;
INC YCOOR
JSR FLODSCAN
DEC YCOOR
DEC YCOOR
JSR FLODSCAN
;
; Is stack empty?
;
FLODRDON LDA FLSTACK1
CMP FLSTACK2
BNE FLODMAIN
JSR DOFONTRF
JMP RESTCOOR
;
; Scan a line for new runs
;
FLODSCAN LDA YCOOR
CMP YMAX
BGE >2
LDA FLXMAX
STA XCOOR
;
^0 JSR FLDECGET
BNE <0
LDA FLMASK
AND (TBUFLO),Y
BNE >1
JSR FLODPUSH
;
^1 JSR FLDECGET
BEQ <1
BNE <0
;
^2 RTS
;
FLODCHEK JSR FLGETBIT
BNE >9
;
; Get bit from pattern
;
LDA YCOOR
AND #7
STA FLTMP0
LDA CURRPATT
ASL
ASL
ASL
ADC FLTMP0
TAX
LDA FILLPATT,X
AND FLMASK
STA FLTMP0
;
; Set bit in temp buffer
;
LDA FLMASK
ORA (TBUFLO),Y
STA (TBUFLO),Y
;
; Set bit in edit buffer
;
LDA FLMASK
EOR #$FF
AND (BUFLO),Y
;
ORA FLTMP0
STA (BUFLO),Y
LDA FLMASK
JSR RESETBT2
LDA #0
^9 RTS
;
; Push current point on stack
;
FLODPUSH LDY FLSTACK1
LDA XCOOR
STA XSTACK,Y
LDA YCOOR
STA YSTACK,Y
INC FLSTACK1
RTS
;
; Pull next point from stack
;
FLODPULL LDY FLSTACK2
LDA XSTACK,Y
STA XCOOR
LDA YSTACK,Y
STA YCOOR
INC FLSTACK2
RTS
;
; Decrement X, check for min
;
FLDECGET LDA XCOOR
CMP FLXMIN
BNE >0
PLA
PLA
RTS
;
^0 DEC XCOOR
;
; Check bit
;
FLGETBIT JSR BASECLCT
STA FLMASK
AND (BUFLO),Y
PHP
PLA
EOR FLINVERT
AND #2
RTS
;-----------
;
SHOWXLOC = 37
FILLPLOC = 39
;
; Increment pattern pointer
;
NEXTPATT INC CURRPATT
SHOWFILL LDA #01
CURRPATT = *-1
CMP #FILLPATS/8
BNE >0
LDA #0
^0 STA CURRPATT
LDY #FILLPLOC
STY SHOWYLOC
LDY #FILLPATT
LDX /FILLPATT
JMP SHOWPATT
;
; Fill patterns:
;
FILLPATT HEX FFFFFFFFFFFFFFFF
HEX 55AA55AA55AA55AA
HEX 8822882288228822
HEX 8800220088002200
HEX 8000080080000800
HEX 0000000000000000
HEX 8010022001084004
;
HEX FF808080FF080808
HEX 8040200002040800
HEX 8244384482010101
HEX F87422478F172271
HEX FF000000FF000000
HEX 8888888888888888
HEX 081C22C180010204
HEX 40A00000040A0000
HEX 8080413E080814E3
HEX 0102040810204080
FILLPATS = *-FILLPATT
;
; Increment mirror pointer
;
MIRRPLOC = 50
;
NEXTMIRR INC CURRMIRR
SHOWMIRR LDA #00
CURRMIRR = *-1
CMP #4
BNE >0
LDA #0
^0 STA CURRMIRR
LDY #MIRRPLOC
STY SHOWYLOC
LDY #MIRRPATT
LDX /MIRRPATT
JMP SHOWPATT
;
; Mirror patterns:
;
MIRRPATT HEX FFFFFFFFFFFFFFFF
HEX E7E7E70000E7E7E7
HEX FFFFFF0000FFFFFF
HEX E7E7E7E7E7E7E7E7
;-----------
;
; Turn off lock mode
;
LOCKOFF STX >0+1
STY >1+1
STA >2+1
LDA LOCKMODE
BPL >2
;
; Toggle lock mode
;
TOGGLOCK LDA LOCKMODE
EOR #$80
STA LOCKMODE
BPL SHOWLOCK
;
; If we are turning on lock mode,
; then save graphic in UNDOBUFF
; and use opposite color of
; current X,Y.
;
JSR BUFFSAVE
JSR SETPLOTX
;
; Show lock mode
;
SHOWLOCK JSR PRINT
BYT RTOSBLAK,39,9,1,9,0
LDA LOCKMODE
BPL >0
JSR PICDRAW
BYT 39,9,1,9
HEX 1C222222C17777777F
^0 LDX #00
^1 LDY #00
^2 LDA #00
^3 RTS
;
;
;
ICL "S:EDIT3"

View File

@ -0,0 +1,332 @@
;
; S:EDIT3
;
; Low-level routines that draw to
; the screen.
;
;-----------
;
; Plot ON,OFF, FLASH
;
PLOTON JSR PLOTINIT
EOR #$7F
STA PTMP0
AND (HIRES1),Y
STA (HIRES1),Y
LDA PTMP0
AND (HIRES2),Y
STA (HIRES2),Y
LDA PTMP0
AND (HIRES3),Y
STA (HIRES3),Y
TXA
BNE >0
RTS
;
^0 INY
EOR #$7F
TAX
AND (HIRES1),Y
STA (HIRES1),Y
TXA
AND (HIRES2),Y
STA (HIRES2),Y
TXA
AND (HIRES3),Y
STA (HIRES3),Y
RTS
;
PLOTOFF JSR PLOTINIT
ORA (HIRES1),Y
STA (HIRES1),Y
LDA PTMP0
ORA (HIRES2),Y
STA (HIRES2),Y
LDA PTMP0
ORA (HIRES3),Y
STA (HIRES3),Y
TXA
BNE >0
RTS
;
^0 INY
ORA (HIRES1),Y
STA (HIRES1),Y
TXA
ORA (HIRES2),Y
STA (HIRES2),Y
TXA
ORA (HIRES3),Y
STA (HIRES3),Y
RTS
;
GRFLASH JSR PLOTINIT
EOR (HIRES2),Y
STA (HIRES2),Y
INY
TXA
EOR (HIRES2),Y
STA (HIRES2),Y
RTS
;-----------
;
; Redraw entire area, quickly
;
; To optimize this routine for speed,
; make sure that the main loop
; doesn't cross a page boundard! It
; will slow it down.
;
BYTE EPZ TMP0
WIDTH EPZ TMP1
BITS8 EPZ TMP2
MASK EPZ TMP3
;
SHOWGR JSR SAVECOOR
LDY #EDITBUFF
LDA /EDITBUFF
STY BUFLO
STA BUFHI
LDY #0
SHOWGR1 STY YCOOR
;
JSR PLOTINIT
;
LDY #1
STY BITS8
;
LDY BUFLO
LDA BUFHI
STY SHOWGRMD+1
STA SHOWGRMD+2
LDX XMAX
STX WIDTH
LDX #7
LDY XOFFSET
;
; X-loop
;
SHOWGR2 DEC BITS8
BNE >1
STA >0+1
LDA #8
STA BITS8
SHOWGRMD LDA EDITBUFF
EOR #$FF
STA BYTE
INC SHOWGRMD+1
BNE >0
INC SHOWGRMD+2
^0 LDA #00
;
^1 ASL BYTE
PHP
ROR
DEX
BNE >2
LSR
STA (HIRES1),Y
STA (HIRES2),Y
STA (HIRES3),Y
LDX #7
INY
^2 PLP
ROR
DEX
BNE >3
LSR
STA (HIRES1),Y
STA (HIRES2),Y
STA (HIRES3),Y
LDX #7
INY
^3 DEC WIDTH
BNE SHOWGR2
;
STA BYTE
LDA GRDRWMSK-1,X
STA MASK
^4 LSR BYTE
DEX
BPL <4
LDA (HIRES1),Y
AND MASK
ORA BYTE
STA (HIRES1),Y
STA (HIRES2),Y
STA (HIRES3),Y
;
LDA BUFLO
CLC
ADC #11
STA BUFLO
BCC >5
INC BUFHI
;
^5 LDY YCOOR
INY
CPY YMAX
BGE >6
JMP SHOWGR1
;
^6 JSR DOFONTRF
JMP RESTCOOR
;
GRDRWMSK HEX 406070787C7E7F
;-----------
;
; Display the Font reference lines
;
DOFONTRF LDA PLOT
CMP #$4C
BEQ >0
BIT REFLINES
BPL >0
LDA FONTRX1
BMI *+5
JSR DOFONTX
LDA FONTRY1
BMI *+5
JSR DOFONTY
LDA FONTRY2
BMI *+5
JSR DOFONTY
^0 RTS
;-----------
;
; Init plot routine
;
; Multiply Y by 3
;
PLOTINIT LDA YCOOR
ASL
ADC YCOOR
ADC #GRAFYOFF
YOFFSET = *-1
TAX
LDA YBASELO,X
STA HIRES1
LDA YBASEHI,X
STA HIRES1+1
LDA YBASELO+1,X
STA HIRES2
LDA YBASEHI+1,X
STA HIRES2+1
LDA YBASELO+2,X
STA HIRES3
LDA YBASEHI+2,X
STA HIRES3+1
;
; Get bit pattern
;
LDX XCOOR
LDY XLOOK,X
LDA XDATA,Y
STA PTMP0
LDA XDATA+1,Y
STA PTMP1
;
; Get X byte offset
;
LDA XBYTEOFF,X
ADC #GRAFXOFF
XOFFSET = *-1
TAY
;
LDA PTMP0
LDX PTMP1
RTS
;
; X lookup table
;
XLOOK HEX 00020406080A0C00
HEX 020406080A0C0002
HEX 0406080A0C000204
HEX 06080A0C00020406
HEX 080A0C0002040608
HEX 0A0C00020406080A
HEX 0C00020406080A0C
HEX 00020406080A0C00
HEX 020406080A0C0002
HEX 0406080A0C000204
HEX 06080A0C00020406
;
XDATA HEX 0300
HEX 0C00
HEX 3000
HEX 4001
HEX 0600
HEX 1800
HEX 6000
;
; Display current pattern on screen
;
SHOWPATT ASL
ASL
ASL
STY TMP0
ADC TMP0
STA PATTADR+1
BCC *+3
INX
STX PATTADR+2
;
LDA #0
STA TMP0
LDA #8
STA TMP1
LDX #00
SHOWYLOC = *-1
;
^0 LDA YBASELO,X
STA HIRES1
LDA YBASEHI,X
STA HIRES1+1
;
LDY TMP0
INC TMP0
PATTADR LDA FILLPATT,Y
EOR #$FF
PHA
ASL
PHP
LDY #SHOWXLOC
LDA (HIRES1),Y
ASL
ASL
PLP
ROR
LSR
STA (HIRES1),Y
PLA
AND #$7F
TAY
LDA FLIPPER,Y
LDY #SHOWXLOC+1
STA (HIRES1),Y
INX
DEC TMP1
BNE <0
RTS
;
; Box routine for border around
; the current pattern and mirror
;
SHOWBOX STY >0+1
JSR PICDRAW
^0 BYT SHOWXLOC,0,3,10
HEX 707F03
HEX 307F03
HEX 307F03
HEX 307F03
HEX 307F03
HEX 307F03
HEX 307F03
HEX 307F03
HEX 307F03
HEX 707F03
RTS
;
;
;
ICL "S:EDIT4"

View File

@ -0,0 +1,998 @@
;
; S:EDIT4
;
; Miscellaneous junk
;
; Save coordinates
;
SAVECOOR LDX XCOOR
LDY YCOOR
STX RESTCOOR+1
STY RESTCOOR+3
RTS
;
; Restore coordinates
;
RESTCOOR LDX #00
LDY #00
STX XCOOR
STY YCOOR
RTS
;-----------
;
; Special shape routine
;
; X=0:draw line
; 2:draw box (rectangle)
; 4:draw oval (elipse)
; 6:move reference lines
;
; The initial corner of the shape
; is XCOOR,YCOOR which is stored
; in X1,Y1. Then XCOOR,YCOOR is
; "rubber-banded" around to form
; a rectangle in which the shape
; is drawn. This second coordinate
; is X2,Y2. (XCOOR,YCOOR)
;
^9 ADR DRAWLINE
ADR DRAWBOX
ADR DRAWOVAL
ADR REFMOVER
;
DOSHAPE LDA <9+0,X
STA SHAPEMOD+1
LDA <9+1,X
STA SHAPEMOD+2
;
BCS >0
LDX XCOOR
LDY YCOOR
STX X1
STY Y1
;
; Save graphic in TEMPBUFF
; for later reference
;
^0 LDY #0
LDX #4
JSR BUFFMOVE
;
; Main frame loop
;
SHAPLOOP LDX XCOOR
LDY YCOOR
JSR DEVICEST
;
SHAPLOP2 JSR SETFLASH
;
^0 LDY #2
JSR DEVICERD
BCS >2
ASL
BMI >1
BCS SHAPCR
^1 JSR SHAPEDEV
;
^2 JSR POLEKEY
BMI >3
;
DEC FLASHLO
BNE <0
DEC FLASHHI
BPL <0
BMI SHAPLOP2
;
^3 PHA
JSR RESETBIT
PLA
LDX XCOOR
LDY YCOOR
JSR PARSE
.DA #'I',SHAPUP
.DA #$0B,SHAPUP
.DA #'M',SHAPDOWN
.DA #$0A,SHAPDOWN
.DA #'J',SHAPLEFT
.DA #$08,SHAPLEFT
.DA #'K',SHAPRITE
.DA #$15,SHAPRITE
.DA #'N',SHAPNEG
.DA #'O',SHAPOVMD
.DA #CR,SHAPCR
.DA #ESC,SHAPESC
BRK
JMP SHAPLOP2
;-----------
SHAPESC JSR SHAPEREM
SEC
HEX 90
SHAPCR CLC
RTS
;-----------
SHAPUP DEY
BPL SHAPDONE
;
SHAPDOWN INY
CPY YMAX
BLT SHAPDONE
BGE SHAPUP
;
SHAPDONE JSR SHAPENEW
JMP SHAPLOOP
;
SHAPLEFT DEX
BPL SHAPDONE
;
SHAPRITE INX
CPX XMAX
BLT SHAPDONE
BGE SHAPLEFT
;-----------
;
; See if device moved
;
SHAPEDEV CPX XCOOR
BNE >0
CPY YCOOR
BNE >0
RTS
;
^0 PLA
PLA
JSR SHAPENEW
JMP SHAPLOP2
;
SHAPENEW STX >1+1
STY >2+1
JSR RESETBIT
JSR SHAPEREM
^1 LDX #00
^2 LDY #00
JSR DEVCLAMP
;
; Fall into put new shape
;
; Put or Remove shape from graphic
;
SHAPEPUT LDX PLOTX
HEX 2C
SHAPEREM LDX #PLTEMP
JSR SETPLOT
LDA PLOT
PHA
LDA #$4C
STA PLOT
LDX X1
LDY Y1
STX OLDXCOOR
STY OLDYCOOR
LDX XCOOR
LDY YCOOR
STX X2
STY Y2
SHAPEMOD JSR $FFFF
LDX X2
LDY Y2
STX XCOOR
STY YCOOR
PLA
STA PLOT
JMP DOFONTRF
;-----------
;
; Line handler
;
DRAWLINE JSR LINENORM
JSR >0
JSR LINE
;
LINEMIRR LDY #MRPLOT
LDA /MRPLOT
BNE >0
;
LINENORM LDY #PLOT
LDA /PLOT
;
^0 STY LINETYPE+1
STA LINETYPE+2
RTS
;-----------
;
; Box handler (rectangle)
;
DRAWBOX JSR LINENORM
LDX X2
LDY Y1
JSR >0
LDY Y2
JSR >0
LDX X1
JSR >0
LDY Y1
JSR >0
JMP LINEMIRR
;
^0 STX XCOOR
STY YCOOR
JSR LINE
LDX XCOOR
LDY YCOOR
STX OLDXCOOR
STY OLDYCOOR
RTS
;-----------
;
; Toggle black/white
;
SHAPNEG JSR SHAPEREM
LDA PLOTX
EOR #PLSET^PLCLR
TAX
JSR SETPLTX2
JMP >0
;-----------
;
; Toggle oval mode
;
SHAPOVMD JSR SHAPEREM
LDA OVALMOD
EOR #$80
STA OVALMOD
^0 JSR SHAPEPUT
JMP SHAPLOP2
;
; Oval handler (elipse)
;
DRAWOVAL LDA X1
LDX X2
JSR DRAWOVL2
STA OVXC
STX OVXR
LDA Y1
LDX Y2
JSR DRAWOVL2
STA OVYC
STX OVYR
JMP OVAL
;
; Given A,X
; return A=center, X=radius
;
DRAWOVL2 LDY #$80
OVALMOD = *-1
BMI >1
STA TMP0
STX TMP1
CMP TMP1
BLT >0
STX TMP0
STA TMP1
;
^0 LDA TMP1
SEC
SBC TMP0
TAY
LSR
TAX
CLC
ADC TMP0
RTS
;
; Center oriented oval
;
^1 PHA
STX TMP0
SEC
SBC TMP0
BCS >2
EOR #$FF
ADC #1
^2 TAX
PLA
RTS
;-----------
;
; Print Shop Companion
; Graphic Editor+ "print" routine
;
CRLF = $1803
SENDGC = $1806
GCOUT = $1809
;
PRZ EPZ $80
;
PRTYCOOR EPZ PRZ
PRTBUILD EPZ PRZ+1
PRTCOUNT EPZ PRZ+2
;
PRINTGR JSR SAVECOOR
;
LDA #0
;
; Output a single line of the graphic
;
PRTLOOP1 STA PRTYCOOR
;
; Tell printer how many bytes are
; coming, then send out 32 zeros
;
LDX #32+88
LDY /32+88
JSR SENDGC
;
LDY #32
^0 LDA #$00
JSR GCOUT
DEY
BNE <0
;
LDX #0
;
; Output a byte of the line
;
PRTLOOP2 STX XCOOR
LDY PRTYCOOR
LDX #0
STX PRTBUILD
;
^0 STX PRTCOUNT
STY YCOOR
;
JSR BASECALC
AND (BUFLO),Y
BEQ >1
LDY PRTCOUNT
LDA BITS7,Y
ORA PRTBUILD
STA PRTBUILD
^1 LDY YCOOR
INY
LDX PRTCOUNT
INX
CPY #52
BEQ >2
CPX #7
BLT <0
;
^2 STX PRTSPACE
LDA PRTBUILD
JSR GCOUT
;
LDX XCOOR
INX
CPX #88
BLT PRTLOOP2
;
LDX #00
PRTSPACE = *-1
LDY #1
JSR CRLF
LDA PRTYCOOR
CLC
ADC #7
CMP #52
BLT PRTLOOP1
;
; Be a nice guy and set the spacing
; back to 6 chars per inch.
;
LDX #12
LDY #0
JSR CRLF
;
JMP RESTCOOR
;
BITS7 HEX 40201008040201
;-----------
;
; Draw text on graphic
; --------------------
;
; Spacing between characters
;
TXCSPACE = 2
TXYSPACE = 8
TXXMAX = 86
TXYMAX = 45
;
TXZ EPZ $80
;
TXFONTLO EPZ TXZ
TXFONTHI EPZ TXZ+1
TXCWIDTH EPZ TXZ+2
TXCHITE EPZ TXZ+3
TXBYTE EPZ TXZ+4
TXBITS EPZ TXZ+5
TXXSTART EPZ TXZ+6
TXPOINT EPZ TXZ+7
TXGKFLAG EPZ TXZ+8
TXCHAR EPZ TXZ+9
;
; Borrow buffers from fill routine
;
TXCHRBUF = TEMPBUFF
TXXBUF = XSTACK
TXYBUF = YSTACK
;
DRAWTEXT JSR SAVECOOR
;
; Make sure X,Y are good values
;
LDA XCOOR
CMP #TXXMAX+1
BLT *+4
LDA #TXXMAX
STA XCOOR
STA TXXSTART
;
LDA YCOOR
CMP #TXYMAX+1
BLT *+4
LDA #TXYMAX
STA YCOOR
;
LDX #0
STX TXPOINT
;
TEXTLOOP JSR GKTEXT
;
STA TXCHAR
LDX TXPOINT
INC TXPOINT
STA TXCHRBUF,X
LDA XCOOR
STA TXXBUF,X
LDA YCOOR
STA TXYBUF,X
LDA TXCHAR
;
CMP #CR
BEQ TEXTCR
CMP #ESC
BEQ TEXTESC
CMP #8
BEQ TEXTBS
CMP #127
BEQ TEXTBS
;
CMP #' '
BLT TEXTERR
CMP #'@'
BEQ TEXTERR
CMP #'Z'+1
BGE TEXTERR
;
; Attempt to draw character
;
JSR TEXTSET
BCC TEXTADDX
;
; Didn't fit, so do a CR
;
JSR TEXTCR2
BCS TEXTERR
;
; Try again
;
LDA TXCHAR
JSR TEXTSET
BCC TEXTADDX
;
TEXTERR DEC TXPOINT
JSR BOOP
JMP TEXTLOOP
;
; Add width to XCOOR.
;
TEXTADDX ADC XCOOR
ADC #TXCSPACE
CMP #TXXMAX+1
STA XCOOR
BLT TEXTLOOP
JSR TEXTCR2
JMP TEXTLOOP
;
; Process backspace
;
TEXTBS TXA
BEQ TEXTERR
DEX
STX TXPOINT
JSR TEXTBS2
BEQ >0
JSR TEXTUNDO
BCC >0
JSR TEXTCR2
LDA TXCHAR
JSR TEXTUNDO
JSR TEXTBS2
^0 JMP TEXTLOOP
;
TEXTBS2 LDX TXPOINT
LDA TXXBUF,X
STA XCOOR
LDA TXYBUF,X
STA YCOOR
LDA TXCHRBUF,X
STA TXCHAR
CMP #CR
RTS
;
; Quit the text routine
;
TEXTESC JMP RESTCOOR
;
; Do CR when pressed.
;
TEXTCR JSR TEXTCR2
BCS TEXTERR
JMP TEXTLOOP
;
; Do a CR, if too far then exit
; with SEC, else, update XCOOR,YCOOR.
;
TEXTCR2 LDA YCOOR
CLC
ADC #TXYSPACE
CMP #TXYMAX+1
BCS >0
STA YCOOR
LDA TXXSTART
STA XCOOR
^0 RTS
;
; GETKEY with flashing "I"
;
GKTEXT ASL TXGKFLAG
^0 INC TXGKFLAG
JSR TEXTCURS
JSR FLSHINIT
;
; Flash cursor half-fast
;
ASL FLASHLO
ROL FLASHHI
;
^1 JSR POLEBTN
BMI >2
DEC FLASHLO
BNE <1
DEC FLASHHI
BPL <1
BMI <0
;
^2 PHA
LSR TXGKFLAG
BCC >3
JSR TEXTCURS
^3 PLA
RTS
;
; Draw cursor (letter I)
;
TEXTCURS INC XCOOR
INC XCOOR
JSR >0
DEC XCOOR
DEC XCOOR
^0 LDA #'I'
;
LDX #PLEOR
HEX 2C
;
; Given char in A, eor it into
; the graphic.
;
; Return with SEC=too wide
; CLC=ok, A=width of this char
;
TEXTSET LDX PLOTX
HEX 2C
TEXTUNDO LDX #PLUNDO
PHA
JSR SETPLOT
PLA
;
SEC
SBC #$20
TAX
LDA FONTADRL,X
STA TXFONTLO
LDA FONTADRH,X
STA TXFONTHI
;
; If this character goes over too
; far to right, exit with SEC.
;
LDA FONTWITH,X
STA TXCWIDTH
CLC
ADC XCOOR
CMP #TXXMAX+2
BGE TEXTEOR9
;
; If SPACE, then exit now!
;
TXA
BEQ TEXTEOR8
;
LDA FONTHITE,X
STA TXCHITE
;
LDA YCOOR
PHA
;
; Do one line of the char
;
^0 LDA XCOOR
PHA
LDA TXCWIDTH
PHA
;
; Get a byte from the FONT data
;
^1 LDY #0
LDA (TXFONTLO),Y
STA TXBYTE
INC TXFONTLO
BNE *+4
INC TXFONTHI
LDA #8
STA TXBITS
;
^2 ASL TXBYTE
BCC >3
;
JSR PLOT
;
^3 INC XCOOR
DEC TXCWIDTH
BEQ >4
DEC TXBITS
BNE <2
BEQ <1
;
^4 PLA
STA TXCWIDTH
PLA
STA XCOOR
INC YCOOR
DEC TXCHITE
BNE <0
;
PLA
STA YCOOR
TEXTEOR8 LDA TXCWIDTH
CLC
TEXTEOR9 RTS
;-----------
;
LZ EPZ $80
;
LINEDIR EPZ LZ
LINECONT EPZ LZ+1
;
; Draw a line between
; (OLDXCOOR,OLDYCOOR) - (XCOOR,YCOOR)
;
; Find delta X and delta Y
;
LINE LDX #$7F
LDA XCOOR
SEC
SBC OLDXCOOR
BCS >0
EOR #$FF
ADC #1
INX
^0 STX LINEDIR
STA DELTAX
;
LDA YCOOR
CLC
SBC OLDYCOOR
BCC >1
EOR #$FF
ADC #$FE
^1 STA DELTAY
ROR LINEDIR
SEC
SBC DELTAX
STA LINECONT
EOR #$FF
LSR
;
LDX OLDXCOOR
LDY OLDYCOOR
STX XCOOR
STY YCOOR
;
SEC
BCS >1
;
LINEMOVX BVC >0
DEC XCOOR
DEC XCOOR
^0 INC XCOOR
^1 ADC #00
DELTAY = *-1
;
^2 PHA
PHP
LINETYPE JSR MRPLOT
PLP
PLA
;
INC LINECONT
BEQ >4
;
BIT LINEDIR
BCS LINEMOVX
BMI >3
DEC YCOOR
DEC YCOOR
^3 INC YCOOR
ADC #00
DELTAX = *-1
BVC <2
;
^4 RTS
;-----------
;
; Modified Bresenham circle
; draw routine.
;
; Modified to do ellipses.
;
; 06/18/85 Roland Gustafsson
;
OZ EPZ $80
;
OVXC EPZ OZ
OVYC EPZ OZ+1
OVXR EPZ OZ+2
OVYR EPZ OZ+3
OVYADDLO EPZ OZ+4
OVYADDHI EPZ OZ+5
OVDLO EPZ OZ+6
OVDHI EPZ OZ+7
OVX EPZ OZ+8
OVY EPZ OZ+9
OVY1 EPZ OZ+10
OVY1F EPZ OZ+11
OVY2 EPZ OZ+12
OVY2F EPZ OZ+13
OVA1 EPZ OZ+14
OVA2 EPZ OZ+15
;
; Divide routine
;
ACC1LO EPZ OZ+16
ACC1HI EPZ OZ+17
ACC2LO EPZ OZ+18
ACC2HI EPZ OZ+19
REMLO EPZ OZ+20
REMHI EPZ OZ+21
;
; Draw an oval on the screen
;
; given: OVXR=X radius
; OVYR=Y radius
; OVXC=X center
; OVYC=Y center
;
OVAL LDX OVXR
CPX OVYR
BCS >0
LDY OVYR
STY OVXR
STX OVYR
^0 ROR OVSWAP
;
; Compute (YD*256)/XD
;
LDY #0
LDA OVYR
LDX OVXR
;
STY OVX
STY OVY2
STY OVY2F
STX OVY
STX OVDLO
STA OVY1
STY OVY1F
;
STX ACC2LO
STY ACC2HI
JSR DIVIDE
STY OVYADDLO
STA OVYADDHI
;
; D = 3-2*Y
;
ASL OVDLO
LDA #3
SEC
SBC OVDLO
STA OVDLO
LDA #0
SBC #0
STA OVDHI
;
; Main oval loop
;
OVLOOP LDA OVX
CMP OVY
BGE OVDONE
JSR OVPLOT
LDA OVX
BIT OVDHI
BPL >0
;
; D=D+4*X+6
;
ASL
ASL
ADC #6
BNE OVADDD
;
; D=D+4*(X-Y)+10
;
^0 SEC
SBC OVY
TAX
LDA #0
SBC #0
TAY
TXA
ASL
ASL
CLC
ADC OVDLO
STA OVDLO
TYA
ADC OVDHI
STA OVDHI
;
DEC OVY
;
LDA OVY1F
SEC
SBC OVYADDLO
STA OVY1F
LDA OVY1
SBC OVYADDHI
STA OVY1
JSR OVPLOT
;
LDA #10
;
OVADDD CLC
ADC OVDLO
STA OVDLO
BCC *+4
INC OVDHI
;
INC OVX
;
LDA OVY2F
CLC
ADC OVYADDLO
STA OVY2F
LDA OVY2
ADC OVYADDHI
STA OVY2
JMP OVLOOP
;
; If X=Y then plot points
;
OVDONE BNE OVPLRTS
;
; Plot 8 points around oval
;
OVPLOT LDX OVX
LDY OVY1
JSR OVPLOT1
LDX OVY
LDY OVY2
;
; If special flag set, then swap
; coordinate offsets.
;
OVPLOT1 STX OVA1
STY OVA2
LDA #00
OVSWAP = *-1
BMI >0
STY OVA1
STX OVA2
;
; (X,Y)
;
^0 CLC
LDA OVXC
ADC OVA1
PHA
TAX
LDA OVYC
ADC OVA2
TAY
JSR PLOTXY
;
; (-X,Y)
;
LDA OVXC
SBC OVA1
TAX
JSR PLOTXY
;
; (-X,-Y)
;
LDA OVYC
SBC OVA2
TAY
JSR PLOTXY
;
; (X,-Y)
;
PLA
TAX
;
; Plot a point, ignoring values
; that are too big.
;
PLOTXY STX XCOOR
STY YCOOR
CPX XMAX
BGE >0
CPY YMAX
BGE >0
JSR PLOT
^0 LDX XCOOR
LDY YCOOR
SEC
OVPLRTS RTS
;-----------
;
; 16 bit divide routine
;
; ACC1=ACC1/ACC2, remainder in REM
;
; Enter with A=hi, Y=lo
; ACC2LO,HI set
;
; Return with result in A=hi, Y=lo
;
DIVIDE STY ACC1LO
STA ACC1HI
LDA #0
STA REMLO
STA REMHI
LDY #16
^0 ASL ACC1LO
ROL ACC1HI
ROL REMLO
ROL REMHI
SEC
LDA REMLO
SBC ACC2LO
TAX
LDA REMHI
SBC ACC2HI
BCC >1
STX REMLO
STA REMHI
INC ACC1LO
^1 DEY
BNE <0
LDY ACC1LO
LDA ACC1HI
RTS
;-----------
;
;
;
USR "EDIT,S4",ORG
END

View File

@ -0,0 +1,622 @@
NLS
TTL "S:FDRAW"
ORG = $8A00
;
; Routine to draw string
; of chars using pixel data table
;
; New fast version
; by Roland Gustafsson
;
SP = $E000
;
GETINIT = SP+105
GETBYTE = SP+108
;
FONTADDR = $8500
WTABLE = FONTADDR
HTABLE = FONTADDR+$3B
PIXADLO = FONTADDR+$76
PIXADHI = FONTADDR+$B1
;
KTABLE = $0300
;
TABHI = $9100
TABLO = $91C0
XBYTE2 = $9398
XBIT2 = $94B0
;-----------
;
; CSIZE, PIXAD & XCUR are to be used
; by external LINEDRAW routines.
;
DAT EPZ $50
;
PIXAD EPZ DAT
XCUR EPZ DAT+2
WCOUNT EPZ DAT+4
BUFFER1 EPZ DAT+5
BUFFER2 EPZ DAT+7
XBYTE EPZ DAT+9
DATABYTE EPZ DAT+10
BCOUNT EPZ DAT+11
BLDBYTE EPZ DAT+12
;
SLENGTH EPZ DAT+13
TEMP EPZ DAT+15
YCUR EPZ DAT+16
HCOUNT EPZ DAT+17
WIDTH EPZ DAT+18
STRPTR EPZ DAT+19
;-----------
ORG ORG
OBJ $0800
;-----------
START JMP STRING0
;-----------
OPTION HEX 02
XOPTION HEX 02
XPOS HEX 0000
YPOS HEX 0000
PIECE HEX 00
CSPACE HEX 01
CSIZE HEX 00
STRADDR HEX 0000
KERN? HEX 00
;-----------
; Kern mode $00:no kern
; $01:kern
; $80:use same kern table
;-----------
JMP INSTALL
JMP SCREEN
JMP FINSTALL
;-----------
;
STRING0 JSR OPTIONMD
;
LDA STRADDR
STA GETSTRX+1
LDA STRADDR+1
STA GETSTRX+2
;
BIT KERN?
BMI >0
JSR KERN
;
; If left justify, then skip
; length-computation routine
;
^0 LDA XOPTION
BEQ STRING1
;
; Compute length of string
;
LDX #0
STX SLENGTH
STX SLENGTH+1
;
^0 JSR GETSTRX
BEQ >2
SEC
SBC #$20
TAY
LDA WTABLE,Y
FONTMOD0 = *-1
SEC
SBC KTABLE,X
CLC
ADC CSPACE
ADC SLENGTH
STA SLENGTH
BCC >1
INC SLENGTH+1
^1 INX
BNE <0
;
^2 CPX #0
BEQ >4
LDA SLENGTH
SEC
SBC CSPACE
STA SLENGTH
BCS *+4
DEC SLENGTH+1
LDX CSIZE
BEQ >4
^3 ASL SLENGTH
ROL SLENGTH+1
DEX
BNE <3
;
^4 LDX XOPTION
CPX #3
BEQ STRLENGT
DEX
BEQ >5
LSR SLENGTH+1
ROR SLENGTH
^5 LDA XPOS
SEC
SBC SLENGTH
STA XPOS
LDA XPOS+1
SBC SLENGTH+1
STA XPOS+1
;
; Draw the string to buffer
;
STRING1 LDX #0
^0 STX STRPTR
JSR GETSTRX
BEQ STRING8
JSR CHAR
LDX STRPTR
JSR GETSTRX
SEC
SBC #$20
TAY
LDA CSPACE
CLC
ADC WTABLE,Y
FONTMOD1 = *-1
INX
SEC
SBC KTABLE,X
LDY #0
STY TEMP
LDY CSIZE
BEQ >2
^1 ASL
ROL TEMP
DEY
BNE <1
^2 CLC
ADC XPOS
STA XPOS
LDA TEMP
ADC XPOS+1
STA XPOS+1
BCC <0
;
STRLENGT LDY SLENGTH
LDA SLENGTH+1
STRING8 LDX #1
RTS
;-----------
; Routine for LDA STRING,X
;
GETSTRX LDA STRADDR,X
RTS
;-----------
;
; Draw character on screen
; Upper left corner in XPOS,YPOS
;
CHAR SEC
SBC #$20
BEQ CDONE
TAX
LDA HTABLE,X
FONTMOD2 = *-1
STA HCOUNT
LDA WTABLE,X
FONTMOD3 = *-1
STA WIDTH
LDA PIXADLO,X
FONTMOD4 = *-1
STA PIXAD
LDA PIXADHI,X
FONTMOD5 = *-1
STA PIXAD+1
LDA CSIZE
ASL
BNE CHAR1
LDA #1
CHAR1 STA TEMP
LDA YPOS
STA YCUR
CHAR2 LDA XPOS
STA XCUR
LDA XPOS+1
STA XCUR+1
LDA WIDTH
STA WCOUNT
LDY YCUR
LINEMOD JSR LINEDRAW
;
LDA YCUR
CLC
ADC TEMP
STA YCUR
DEC HCOUNT
BNE CHAR2
CDONE RTS
;-----------
; KERN SECTION
;
LADDR EPZ DAT
RADDR EPZ DAT+2
LBWIDTH EPZ DAT+4
RBWIDTH EPZ DAT+5
LCHAR EPZ DAT+6
RCHAR EPZ DAT+7
KCOUNT EPZ DAT+9
LREM EPZ DAT+10
MINWIDTH EPZ DAT+11
;
KERN LDX #0
STX KTABLE
KERN0 STX STRPTR
JSR GETSTRX
BEQ KDONE
;
LDY KERN?
BEQ KERN2
;
CMP #'A'
BCC KERN2
STA LCHAR
INX
JSR GETSTRX
BEQ KDONE
CMP #'A'
BCC KERN2
STA RCHAR
JSR KSETUP
LDA KCOUNT
CMP #100
BCC KERN1
KERN2 LDA #0
KERN1 LDX STRPTR
INX
STA KTABLE,X
JMP KERN0
KDONE LDA #0
STA KTABLE,X
RTS
;
KSETUP SEC
ROR MINWIDTH
LDA LCHAR
JSR BWCOMP
STA LBWIDTH
STY LREM
LDA PIXADLO,X
FONTMOD6 = *-1
STA LADDR
LDA PIXADHI,X
FONTMOD7 = *-1
STA LADDR+1
LDA HTABLE,X
FONTMOD8 = *-1
STA HCOUNT
LDA RCHAR
JSR BWCOMP
STA RBWIDTH
LDA PIXADLO,X
FONTMOD9 = *-1
STA RADDR
LDA PIXADHI,X
FONTMODA = *-1
STA RADDR+1
LDA HTABLE,X
FONTMODB = *-1
CMP HCOUNT
BGE KERN4
STA HCOUNT
KERN4 LDA MINWIDTH
CLC
ADC CSPACE
STA KCOUNT
KERN5 JSR LCOMP
STA TEMP
JSR RCOMP
CLC
ADC TEMP
CMP KCOUNT
BGE KERN6
STA KCOUNT
KERN6 LDA LADDR
CLC
ADC LBWIDTH
STA LADDR
BCC KERN7
INC LADDR+1
KERN7 LDA RADDR
CLC
ADC RBWIDTH
STA RADDR
BCC KERN8
INC RADDR+1
KERN8 DEC HCOUNT
BNE KERN5
RTS
;
BWCOMP SEC
SBC #$20
TAX
LDA WTABLE,X
FONTMODC = *-1
CMP MINWIDTH
BGE >0
STA MINWIDTH
^0 SEC
SBC #1
PHA
AND #$07
EOR #$07
TAY
PLA
LSR
LSR
LSR
CLC
ADC #1
RTS
;
LCOMP LDX #0
LDY LBWIDTH
DEY
LCOMP2 LDA (LADDR),Y
BNE LCOMP3
TXA
CLC
ADC #8
TAX
DEY
BPL LCOMP2
LDA #100
RTS
LCOMP3 INX
LSR
BCC LCOMP3
DEX
TXA
SEC
SBC LREM
RTS
;
RCOMP LDX #0
LDY #0
RCOMP2 LDA (RADDR),Y
BNE RCOMP3
TXA
CLC
ADC #$08
TAX
INY
CPY RBWIDTH
BNE RCOMP2
LDA #100
RTS
RCOMP3 INX
ASL
BCC RCOMP3
DEX
TXA
RTS
;-----------
;
; Draw line of font data
;
; given Y=ycoor
;
LINEDRAW LDA TABLO,Y
STA BUFFER1
LDA TABHI,Y
STA BUFFER1+1
LDA TABLO+1,Y
STA BUFFER2
LDA TABHI+1,Y
STA BUFFER2+1
;
LDX XCUR
LDA XCUR+1
BEQ >0
LDA XBIT2+256,X
LDY XBYTE2+256,X
BNE >1
^0 LDA XBIT2,X
LDY XBYTE2,X
^1 STY XBYTE
;
; Compensate for bits not to be
; affected to the left.
;
LDY #8
^2 DEY
SD1MOD0 SEC
ROR BLDBYTE
LSR
BCC <2
;
LDX #0
LDA CSIZE
BNE LINEDUBL
;
; Do a line of normal size
;
LINENORM LDA (PIXAD,X)
EOR #$FF
SD2MOD0 = *-1
STA DATABYTE
INC PIXAD
BNE *+4
INC PIXAD+1
LDX #8
^0 ASL DATABYTE
ROR BLDBYTE
DEY
BNE >1
;
LDY XBYTE
INC XBYTE
LDA BLDBYTE
LSR
SD0MOD0 AND (BUFFER1),Y
STA (BUFFER1),Y
LDY #7
;
^1 DEC WCOUNT
BEQ >2
DEX
BNE <0
BEQ LINENORM
;
^2 CPY #7
BEQ >3
LDA BLDBYTE
SD1MOD1 SEC
ROR
DEY
BNE SD1MOD1
LSR
LDY XBYTE
SD0MOD1 AND (BUFFER1),Y
STA (BUFFER1),Y
^3 RTS
;
; Do a line of double size
;
LINEDUBL LDA (PIXAD,X)
EOR #$FF
SD2MOD1 = *-1
STA DATABYTE
INC PIXAD
BNE *+4
INC PIXAD+1
LDX #8
^0 STX BCOUNT
ASL DATABYTE
LDX #2
^1 PHP
ROR BLDBYTE
DEY
BNE >2
;
LDY XBYTE
INC XBYTE
LDA BLDBYTE
LSR
STA BLDBYTE
SD0MOD2 AND (BUFFER1),Y
STA (BUFFER1),Y
LDA BLDBYTE
SD0MOD3 AND (BUFFER2),Y
STA (BUFFER2),Y
LDY #7
;
^2 PLP
DEX
BNE <1
;
DEC WCOUNT
BEQ >3
LDX BCOUNT
DEX
BNE <0
BEQ LINEDUBL
;
^3 CPY #7
BEQ >4
LDA BLDBYTE
SD1MOD2 SEC
ROR
DEY
BNE SD1MOD2
LSR
STA BLDBYTE
LDY XBYTE
SD0MOD4 AND (BUFFER1),Y
STA (BUFFER1),Y
LDA BLDBYTE
SD0MOD5 AND (BUFFER2),Y
STA (BUFFER2),Y
^4 RTS
;-----------
; #2 #3 #4
; ORA/AND/EOR how to put on screen
; CLC/SEC/CLC what to fill excess with
; $00/$FF/$00 eor after getting data
;
MODS0 HEX 113151
MODS1 HEX 183818
MODS2 HEX 00FF00
;
; Option mod routine.
;
OPTIONMD LDY OPTION
LDA MODS0-2,Y
PHA
LDX MODS1-2,Y
LDA MODS2-2,Y
TAY
PLA
OPTNMOD JMP SCRNOPTN
;
; OPTION mods for internal screen
; routines
;
SCRNOPTN STA SD0MOD0
STA SD0MOD1
STA SD0MOD2
STA SD0MOD3
STA SD0MOD4
STA SD0MOD5
;
STX SD1MOD0
STX SD1MOD1
STX SD1MOD2
;
STY SD2MOD0
STY SD2MOD1
RTS
;-----------
;
; Reset STROUT for screen draw
;
SCREEN JSR INSTALL
ADR SCRNOPTN
ADR LINEDRAW
HBY FONTADDR
RTS
;-----------
;
; JSR INSTALL
; ADR OPTIONMD ; option mods
; ADR LINEDRAW ; line draw routine
; HBY FONTADDR ; hi byte of font data
;
INSTALL JSR GETINIT
;
JSR GETBYTE
STA OPTNMOD+1
JSR GETBYTE
STA OPTNMOD+2
;
JSR GETBYTE
STA LINEMOD+1
JSR GETBYTE
STA LINEMOD+2
;
JSR GETBYTE
FINSTALL STA FONTMOD0
STA FONTMOD1
STA FONTMOD2
STA FONTMOD3
STA FONTMOD4
STA FONTMOD5
STA FONTMOD6
STA FONTMOD7
STA FONTMOD8
STA FONTMOD9
STA FONTMODA
STA FONTMODB
STA FONTMODC
RTS
;
;
;
USR "O:FDRAW",ORG
END

View File

@ -0,0 +1,864 @@
NLS
TTL "S:HELLO"
NOG
;
ORG = $800
;
; 05/27/85
; 09/10/85 last mod (Font stuff)
;
; Hello Program for
;
; The Print Shop Companion Disk
;
; by Roland Gustafsson
;
HAS128K = $27F
;
DAT EPZ $00
;
TMP0 EPZ DAT
TMP1 EPZ DAT+1
TMP2 EPZ DAT+2
TMP3 EPZ DAT+3
LDPROG EPZ DAT+4
LDPOINT EPZ DAT+5
LDPADR EPZ DAT+6
LDLENGTH EPZ DAT+7
LDDIRECT EPZ DAT+8
;
ICONS = $4000
;
YHI = $9100
YLO = $91C0
SELCTION = $95F5
;
; SUBPAK entry points:
;
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
RTOSPARM EPZ $3A
;
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
PRPIC = 19
PRRTAB = 20
PRRTAB2 = 21
PRKERN = 22
RTOSINV = 23
GOOBER = 24
;
ESC = 27
;
;-----------
ORG ORG
OBJ $800
;-----------
;
START JMP MAINMENU
JMP FGETMAIN
JMP FGETPSD
JMP FGETCD
;-----------
TXTTPS BYT 'THE PRINT SHOP',0
TXTC BYT 'COMPANION',0
;
TXTAPRET BYT 'AND '
TXTPRET BYT 'PRESS'
TXTSRET BYT ' '
TXTRET BYT '<RETURN>',0
;-----------
MAINMENU JSR LOADINIT
LDA #$2C
STA MAINMENU
;
LDX #$FF
TXS
JSR WITEBORD
JSR PRINT
BYT RTOSWITE,1,16,38,15
BYT PRINVR,PRCNTR,PRBIG
BYT PRSPC,15
.DA #PRLOC,140,#1
.DA #PRSTR,TXTTPS,#CR
.DA #PRSTR,TXTC,#CR,#0
;
JSR LOADICON
;
JSR PRINT
.DA #PRLOC,140,#36
BYT PRCNTR
BYT CR,'MAIN MENU',CR
;
.DA #PRLOC,76,#66
BYT 'GRAPHIC EDITOR+',CR
BYT 'BORDER EDITOR',CR
BYT 'FONT EDITOR',CR
BYT 'TILE MAGIC',CR
BYT 'CREATURE MAKER',CR
BYT 'CALENDAR',CR
BYT 'SETUP',CR
BYT 'EXIT PROGRAM',CR
;
; ICON border
;
ICONY = 71
BYT RTOSWITE,21,ICONY-2,15,2
BYT RTOSWITE,21,ICONY+53,15,2
BYT RTOSANY,$70,20,ICONY-2,1,57
BYT RTOSANY,$07,36,ICONY-2,1,57
;
BRK
JSR SHOWBOTM
;
LDA #1
SELPROG CMP #6
BEQ DOWEIRD
WEIRDONE LDY SELCTION
JSR SELECT
BYT 2+128,18,65,8
ADR DRAWICON
STY SELCTION
BCS SELPROG
;
; Version requested?
;
TAX
BMI >0
;
JSR CLRBOTM
LDY SELCTION
JSR JMPVECTS
ADR RUNGE
ADR RUNBE
ADR RUNFE
ADR RUNTM
ADR RUNCM
ADR RUNCA
ADR RUNSE
ADR EXIT
;
;-----------
;
^0 JSR PRINT
BYT PRCNTR,PRINVR
.DA #PRLOC,140,#184
BYT 'VERSION 1.2',CR
BRK
JMP WEIRDONE
;
CLRBOTM JSR PRINT
BYT RTOSWITE,0,184,40,7,0
RTS
;-----------
DOWEIRD BEQ DOWEIRD2
;-----------
;
; Exit!
;
EXIT JSR PRINT
BYT RTOSBLAK,1,31,38,152
.DA #PRLOC,140,#80
BYT PRCNTR
BYT 'PLEASE INSERT ANOTHER DISK',CR
BYT CR
.DA #PRSTR,TXTAPRET
BYT CR,0
JSR ESCBACK
JSR GETKEY
CMP #CR
BEQ >0
JMP MAINMENU
;
^0 JSR DEVICERD
BCS >1
ASL
BMI <0
^1 JSR DEVICEOF
JMP ($FFFC)
;-----------
;
; Useless code for fun
;
DOWEIRD2 LDX #$00
LDY #$BF
^0 LDA YLO,X
STA TMP0
LDA YLO,Y
STA YLO,X
STA TMP2
LDA TMP0
STA YLO,Y
;
LDA YHI,X
STA TMP1
LDA YHI,Y
STA YHI,X
STA TMP3
LDA TMP1
STA YHI,Y
;
TYA
PHA
LDY #39
^1 LDA (TMP0),Y
PHA
LDA (TMP2),Y
STA (TMP0),Y
PLA
STA (TMP2),Y
DEY
BPL <1
PLA
TAY
;
DEY
INX
CPX #$60
BLT <0
JMP WEIRDONE
;-----------
;
; Run the Creature Maker.
;
RUNCM LDY #6
JSR BLOAD2
BNE RUNCM
LDA #6
HEX 2C
;
; Run the Graphic editor.
;
RUNGE LDA #0
HEX 2C
;
; Run Tile magic.
;
RUNTM LDA #3
STA >9+1
JSR LOADEDIT
^0 LDY #3
JSR BLOAD2
BNE <0
^9 JMP $4000
;-----------
;
; Run the Border editor.
;
RUNBE LDY #4
JSR BLOAD2
BNE RUNBE
JSR LOADSUPP
JMP $4000
;-----------
;
; Run the Font editor.
;
RUNFE JSR LOADEDIT
^0 LDY #5
JSR BLOAD2
BNE <0
JMP $6000
;-----------
;
; Run the setup program.
;
RUNSE LDY #8
JSR BLOAD2
BNE RUNSE
JMP $5800
;-----------
;
; Run the calendar program
;
RUNCA LDY #7
JSR BLOAD2
BNE RUNCA
JMP $4000
;-----------
;
; Load stuff from disk:
;
LOADINIT JSR POLEKEY
CMP #ESC
BEQ >2
;
^0 JSR BLOAD
BYT 'PRCOMS',0
BNE <0
;
^1 JSR BLOAD
BYT 'CONFIG',0
BNE <1
RTS
;
^2 JMP $1000
;-----------
;
; Load MAINMENU icons
;
LOADICON LDY #0
JSR BLOAD2
BNE LOADICON
RTS
;-----------
;
; Load EDIT routines
;
LOADEDIT LDY #2
JSR BLOAD2
BNE LOADEDIT
;---
;
; Load the SUPP file, which is saved
; onto data disks automatically by
; the SAVEFILE routine.
;
LOADSUPP LDY #1
JSR BLOAD3
BNE LOADSUPP
RTS
;-----------
;
; BLOAD a file from the COMPANION
; disk. If error and ESC is pressed,
; then re-run the MAINMENU program.
;
BLOAD2 LDA #2
HEX 2C
BLOAD3 LDA #0
STA TMP0
STY TMP1
LDA LPFLAGS,Y
BMI >0
CLC
LDA #1
JSR WAITCD
BCS >1
JSR PRINT
BYT GOOBER,0
^0 LDY TMP1
LDA TMP0
STA $B00D
JMP LOADPROG
^1 JMP MAINMENU
;-----------
;
; Draw ICON on screen
;
DRAWICON LDA ICONADR,X
STA RTOSPARM+4
LDA ICONADR+1,X
STA RTOSPARM+5
LDX #3
^0 LDA ICONLOC,X
STA RTOSPARM,X
DEX
BPL <0
LDA #$B1
LDY #RTOSPARM+4
JMP RTOS
;
ICONLOC BYT 21,ICONY,15,53
;
L = 15*53
;
ICONADR ADR ICONS
ADR ICONS+L
ADR ICONS+L*2
ADR ICONS+L*3
ADR ICONS+L*4
ADR ICONS+L*5
ADR ICONS+L*6
ADR ICONS+L*7
;-----------
;
; Show message at bottom of screen
;
SHOWBOTM LDA SELCTION
BPL >0
;
; First time booting, so display
; message
;
; Force SETUP
;
LDA #6
STA SELCTION
JSR PRINT
BYT PRCNTR
BYT PRSPC,10
.DA #PRLOC,140,#150
BYT 'WELCOME TO',CR
.DA #PRSTR,TXTTPS
BYT ' '
.DA #PRSTR,TXTC
BYT '!',CR
.DA #PRSTR,TXTPRET
BYT ' TO RUN SETUP',CR
BRK
RTS
;---
;
; Regular message
;
^0 JSR ARROWS
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#152
BYT 'USE AND'
.DA #PRSTR,TXTSRET,#CR
BYT 'TO MAKE SELECTION. OR, USE',CR
BYT 'MOUSE, JOYSTICK, OR KOALAPAD',CR
BRK
;---
;
; Draw either left/right arrows
; or up/down arrows, depending on
; machine type.
;
AROWX = 13
AROWY = 152
;
ARROWS LDA $FA68
CMP #$C0
BEQ ARROW2E
LDA $FBB3
CMP #$06
BEQ ARROW2E
;---
; LEFT
JSR PICDRAW
BYT AROWX,AROWY,1,6
HEX 810C06C1060C
; RIGHT
JSR PICDRAW
BYT AROWX+2,AROWY,1,6
HEX 811830C13018
RTS
;---
; DOWN
ARROW2E JSR PICDRAW
BYT AROWX,AROWY,1,7
HEX 0808086B3E1C08
; UP
JSR PICDRAW
BYT AROWX+2,AROWY,1,7
HEX 081C3E6B080808
RTS
;-----------
;
; Enter with Y=0-8 load file.
; If 128k, then load from AUX memory,
; if program isn't there yet, then
; load from disk and transfer it.
;
LOADPROG STY LDPROG
LDA #0
STA LDPOINT
LDX #$FF
^0 DEY
BMI >2
^1 INX
LDA FILEINFO,X
BNE <1
INX
INX
LDA FILEINFO,X
CLC
ADC LDPOINT
STA LDPOINT
BNE <0
;
; Modify BLOAD filename parameter
;
^2 LDY #$FF
^3 INX
INY
LDA FILEINFO,X
STA BLOADMOD,Y
BNE <3
LDA #$60
STA BLOADMOD+1,Y
;
; Get starting/length info
;
LDA FILEINFO+1,X
STA LDPADR
LDA FILEINFO+2,X
STA LDLENGTH
;
; Is this module already loaded?
;
LDY LDPROG
LDA #1
LDX LPFLAGS,Y
BMI LPMOVE
;
; Since program isn't loaded, load it!
;
JSR BLOADPRO
BNE >1
BIT HAS128K
BPL >0
;
; Move program into AUX memory
;
LDA #0
JSR LPMOVE
LDX LDPROG
SEC
ROR LPFLAGS,X
;
^0 LDA #0
^1 RTS
;---
;
; Move routine.
;
; Given A=0, MAIN->AUX
; A=1, AUX->MAIN
;
; LDPROG = program address
; LDPOINT = pointer into AUX table
; LDLENGTH = length in 2k chunks
;
; Set ALTZP, init zpage, and move
; routine down to $80
;
LPMOVE STA LDDIRECT
;
STA $C009
LDX #LP80LEN-1
^0 LDA LP80,X
STA $80,X
DEX
BPL <0
STA $C008
;
; Move the program
;
^1 LDY LDPOINT
INC LDPOINT
LDX LPADDR,Y
LDY LDPADR
TYA
CLC
ADC #8
STA LDPADR
;
; X=AUX address, Y=program address
;
LDA LDDIRECT
STA $C009
STX TMP1
STY TMP3
BNE >2
STY TMP1
STX TMP3
^2 LDY #0
STY TMP0
STY TMP2
JSR $80
STA $C008
DEC LDLENGTH
BNE <1
RTS
;-----------
;
; Routine that sits at $0080
;
LP80 TAX
STA $C002,X
EOR #1
TAX
STA $C004,X
LDX #8
^0 LDA (TMP0),Y
STA (TMP2),Y
INY
BNE <0
INC TMP1
INC TMP3
DEX
BNE <0
STA $C004
STA $C002
RTS
LP80LEN = *-LP80
;-----------
;
; 24x8k available
;
LPADDR HEX 4048505860687078
HEX 80889098A0A8B0B8
HEX D0D8E0E8F0F81018
;-----------
;
; <filename>,0,<loadadr>,<2k pages>
;
FILEINFO BYT 'ICONS',0,$40,4
BYT '[CD],A4096',0,$10,1
BYT 'EDIT',0,$50,2
BYT 'GREDIT',0,$40,2
BYT 'BOEDIT',0,$40,3
BYT 'FOEDIT',0,$60,3
BYT 'CRDATA',0,$60,3
BYT 'CALEN',0,$40,4
BYT 'SETUP',0,$58,1
;---
;
; If minus, then that program has
; already been loaded.
;
LPFLAGS DFS 9,0
;
;---------------
;
; Font selection menus
;
FGY1 = 60
FGY2 = 45
FGY3 = FGY2-16
;
TXTCAF BYT 'CHOOSE A FONT:',0
;-----------
FGET0 BYT 'REFERENCE FONT',0
FGET1 BYT 'FROM PRINT SHOP DISK',0
BYT 'FROM COMPANION DISK',0
BYT 'FROM OTHER DISK',0
BYT 'NO FONT',0
;
; Get Menu selection Y=default
;
FGETMAIN STY >2+1
LDY #FGET0
LDA /FGET0
BCS >0
LDY #FGET1
LDA /FGET1
^0 STY >1+0
STA >1+1
;
JSR CLS1
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#FGY1
.DA #PRSTR,TXTCAF,#CR
BYT CR,CR,0
;
JSR PRINTGRP
BYT PRCNTR,4
^1 ADR $FFFF
;
^2 LDY #00
JSR SELECT
BYT 7,26,FGY1+23,4
ADR RTS
RTS RTS
;-----------
;
; Get FONT from Print Shop disk
;
FGETPSD STY >0+1
JSR CLS1
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#FGY2
.DA #PRSTR,TXTCAF,#CR
BYT CR,CR
BYT 'RSVP',CR
BYT 'ALEXIA',CR
BYT 'NEWS',CR
BYT 'TECH',CR
BYT 'PARTY',CR
BYT 'BLOCK',CR
BYT 'TYPEWRITER',CR
BYT 'STENCIL',CR,0
;
^0 LDY #00
JSR SELECT
BYT 12,16,FGY2+23,8
ADR RTS
STY >9+1
BCS >9
;
INY
TYA
ORA #'0'
STA >1+1
JSR CLS1
SEC
JSR WAITPSD
BCS >9
JSR BLOAD
^1 BYT 'F1',0
CLC
BEQ >9
LDA #8
JSR ERROR
SEC
;
^9 LDY #00
RTS
;-----------
;
; Get FONT from Companion disk
;
FTEXT BYT 'FONT.',0
;
FGETCD STY >0+1
JSR CLS1
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#FGY3
.DA #PRSTR,TXTCAF,#CR
BYT CR,CR,0
JSR PRINTGRP
BYT PRCNTR,12
ADR CDFONTS
;
^0 LDY #00
JSR SELECT
BYT 12,16,FGY3+23,12
ADR RTS
STY >9+1
BCS >9
LDX #$FF
;
; Find filename
;
^1 DEY
BMI >3
^2 INX
LDA CDFONTS,X
BNE <2
BEQ <1
;
; Move filename to BLOAD name buffer
;
^3 LDY #0
^4 LDA FTEXT,Y
BEQ >5
STA BLOADMOD,Y
INY
BNE <4
;
^5 INX
INY
LDA CDFONTS,X
STA BLOADMOD-1,Y
BNE <5
LDA #$60
STA BLOADMOD,Y
;
; Load the file
;
JSR CLS1
^6 CLC
LDA #1
JSR WAITCD
BCS >9
JSR PRINT
BYT GOOBER,0
JSR BLOADPRO
CLC
BEQ >9
LDA #8
JSR ERROR
SEC
;
^9 LDY #00
RTS
;
;---
;
; Names of Companion Disk fonts
;
CDFONTS BYT 'BALLOON',0
BYT 'OHIO',0
BYT 'PLATFORM',0
BYT 'DECO',0
BYT 'ANGLE',0
BYT 'LOWER CASE',0
BYT 'ORIENT',0
BYT 'CABARET',0
BYT 'GATSBY',0
BYT 'SALOON',0
BYT 'SANDWICH',0
BYT 'REPORTER',0
;-----------
;
; BLOAD mod routine
;
BLOADPRO JSR BLOAD
BLOADMOD:
;-----------
;
;
;
USR "O:HELLO",ORG
END

View File

@ -0,0 +1,145 @@
NLS
TTL "S:IPL"
ORG = $4000
;
; The Print Shop Companion
; Initial program loader
;
; Sets up: SUBPAK,SYSLIB2,HELLO
;
; also moves hires page to RAMcard
;
TEXT = $FB2F
HOME = $FC58
NORMAL = $FE84
COUT = $FDED
VTAB = $FB5B
PR0 = $FE93
IN0 = $FE89
;
SRCLO EPZ $3A
SRCHI EPZ $3B
DSTLO EPZ $3C
DSTHI EPZ $3D
LENLO EPZ $3E
LENHI EPZ $3F
;
SP = $E000
DEVICENW = SP+15
;
ORG ORG
OBJ $800
;
JSR CHECK64K
JSR MOVEROM
JSR MOVEPROG
JSR DEVICENW
JMP $0800
;-----------
;
; Move programs to their homes
;
MOVEPROG BIT $C083
BIT $C083
LDY #PROGRAMS
LDA /PROGRAMS
STY SRCLO
STA SRCHI
LDY #0
;
^0 JSR MOVEGET
STA DSTLO
JSR MOVEGET
STA DSTHI
ORA DSTLO
BEQ MOVERTS
JSR MOVEGET
TAX
JSR MOVEGET
STA LENHI
;
^1 JSR MOVEGET
STA (DSTLO),Y
INC DSTLO
BNE >2
INC DSTHI
^2 TXA
BNE >3
DEC LENHI
^3 DEX
BNE <1
TXA
ORA LENHI
BNE <1
BEQ <0
;
; Get a byte from program data
;
MOVEGET LDA (SRCLO),Y
INC SRCLO
BNE MOVERTS
INC SRCHI
MOVERTS RTS
;-----------
;
; Check for 64k
;
CHECK64K BIT $C083
BIT $C083
LDX #0
^0 STX $E000
CPX $E000
BNE >1
INX
BNE <0
RTS
;
^1 BIT $C081
JSR TEXT
JSR HOME
JSR NORMAL
JSR PR0
JSR IN0
LDA #8
JSR VTAB
LDY #0
^2 LDA TEXT64K,Y
BEQ *
JSR COUT
CMP #$8D
BNE >3
LDA #7
STA $24
^3 INY
BNE <2
;
; Need 64k message
;
TEXT64K BYT $8D
BYT "THE PRINT SHOP COMPANION",$8D,$8D
BYT " REQUIRES 64K OF MEMORY",0
;-----------
;
; Move monitor ROM into RAMcard
;
MOVEROM LDY #$00
LDA #$F8
STY SRCLO
STA SRCHI
BIT $C081
BIT $C081
^0 LDA (SRCLO),Y
STA (SRCLO),Y
INY
BNE <0
INC SRCHI
BNE <0
RTS
;-----------
;
; Append programs here:
;
PROGRAMS:
;
USR "IPL",ORG
END

View File

@ -0,0 +1,907 @@
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
;
; <ESC> 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 <ESC> 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 <ESC>
;
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

View File

@ -0,0 +1,3 @@
NLS
; S:SUBPAK
ICL "S:SUBPAK1"

View File

@ -0,0 +1,212 @@
TTL "S:SUBPAK"
; S:SUBPAK1
NOG
ORG = $E000
OBJ = $800
;
; 03/11/85
; 08/23/85 last mod
;
; The Print Shop Companion Disk
; Subroutine Package
;
; by Roland Gustafsson
;
;------------
;
; Temp z-page
;
FLASHLO EPZ $4E
FLASHHI EPZ $4F
;
TMP EPZ $F0
TMP0 EPZ TMP
TMP1 EPZ TMP+1
TMP2 EPZ TMP+2
TMP3 EPZ TMP+3
TMP4 EPZ TMP+4
TMP5 EPZ TMP+5
;
TMPLO EPZ TMP+6
TMPHI EPZ TMP+7
HIRES EPZ TMP+8
;
; For input device only!
;
DTMP0 EPZ TMP+10
DTMP1 EPZ TMP+11
DTMPLO EPZ TMP+12
DTMPHI EPZ TMP+13
;-----------
;
; Absolute references:
;
; Printer routines
;
PT = $1800
;
PTCOUT = PT
PTCRLF = PT+3
PTSENDGC = PT+6
PTGCOUT = PT+9
;
PRINBUFF = $BB00
SECTBUFF = $8400
;
MAINMENU = $0800
;
DATADRIV = $95F4
MENULAST = $95F5
CALENDAR = 5
CHEKPROT = $BCE0
;
; SYSLIB routines
;
STROUT = $8A00
SPARM = STROUT+3
STRGET = $8E03
;
; SYSLIB tables
;
YBASELO = $91C0
YBASEHI = $9100
XBYTEOFF = $9398
XBITS = $94B0
SYSFONT = $8500
FLIPPER = $9080
;
; Monitor routines
;
WAIT = $FCA8
CROUT = $FD8E
RTS = $FF58
SAVEREGS = $FF4A
RESTREGS = $FF3F
;
; Variables
;
MAXFLEN = 15
ESC = $1B
;-----------
ORG ORG
OBJ OBJ
;-----------
; Screen output routines:
;
JMP PRINT
JMP CLSCREEN
JMP WITEBORD
JMP ESCBACK
JMP PICDRAW
;
; Device input routines:
;
JMP DEVICENW
DEVMODS:
DEVICEON JMP DEVICEON
DEVICEOF JMP DEVICEOF
DEVICERD JMP DEVICERD
DEVICEST JMP DEVICEST
SCALING HEX 00
;
; Keyboard routines:
;
JMP POLEBTN
JMP POLEKEY
JMP GETKEY
JMP SELECT
;
; Load/Save routines:
;
JMP SETTYPE
JMP GETFILE
JMP SAVEFILE
TYPELEN HEX 00
FLSTART ADR 0
FLLENGTH ADR 0
;
JMP BLOAD
JMP BSAVE
JMP DOSCR
JMP ERROR
;
; Miscellaneous routines:
;
JMP MUSIC
JMP FLSHINIT
JMP JMPVECTS
JMP LINES
JMP PARSE
JMP SHOWAROW
JMP NUMBER
JMP WAITPSD
JMP WAITCD
JMP ANYKEY
JMP CHKPRINT
JMP BOOP
JMP GETINIT
JMP GETBYTE
JMP INPUT
JMP CLS1
JMP PRINTGRP
JMP RTOS
JMP SPACEBAR
JMP GETPDISK
JMP ESCMAIN
JMP TESTPAPR
JMP GETANUMB
JMP ANYKEY2
JMP DEVICECH
;-----------
;
; Make sure that the following
; routines don't cross page
; boundaries.
;
;-----------
;
; Single tone error bell
;
BOOP PHP
SEI
LDY #$20
^0 BIT $C030
LDA #$18
JSR WAIT
DEY
BNE <0
PLP
RTS
;
; Error Music
;
MUSIC PHP
SEI
LDY #4
^0 STY TMP0
LDA MUSICFRQ,Y
STA >1+1
LDA MUSICDUR,Y
^1 LDX #00
^2 INY
BNE >3
SBC #1
BMI >4
^3 DEX
BNE <2
LDX $C030
JMP <1
^4 LDY TMP0
DEY
BPL <0
PLP
RTS
;
MUSICDUR HEX 6030301818
MUSICFRQ HEX 5E4C807280
;
;-----------
;
;
;
ICL "S:SUBPAK2"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,898 @@
;
; S:SUBPAK3
;
; PRINT routine
;
PRDONE = 0
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
PRPIC = 19
PRRTAB = 20
PRRTAB2 = 21
PRKERN = 22
RTOSINV = 23
GOOBER = 24
;
PRINT JSR GETINIT
JSR PRZZNORM
JSR PRZZLEFT
JSR PRZZSMAL
LDA #8
STA PRNTYINC
LDA #2
STA SPARM+7
;
PRINT1 LDX #0
PRINT2 JSR GETBYTE
CMP #' '
BLT PRINT3
STA PRINBUFF,X
INX
BNE PRINT2
;
PRINT3 ASL
TAY
LDA PRINT5,Y
STA PRINT4+1
LDA PRINT5+1,Y
STA PRINT4+2
CLC
PRINT4 JSR $FFFF
BCC PRINT2
BCS PRINT1
;
; Addresses of print options
;
PRINT5 ADR PRZZDONE
ADR PRZZNORM
ADR PRZZINVR
ADR PRZZLEFT
ADR PRZZRITE
ADR PRZZCNTR
ADR PRZZLOC
ADR PRZZSMAL
ADR PRZZBIG
ADR PRZZSTR
ADR PRZZSPC
ADR PRZZHTAB
ADR PRZZVTAB
ADR PRZZCR
ADR PRZZNOCR
ADR PRZZBLAK
ADR PRZZWITE
ADR PRZZANY
ADR PRZZCSPC
ADR PICDRAW2
ADR PRZZRTAB
ADR PRZZRTB2
ADR PRZZKERN
ADR PRZZRINV
ADR GOOBER1
;
PRZZDONE PLA
PLA
RTS
;
PRZZNORM LDA #2
HEX 2C
PRZZINVR LDA #3
STA SPARM+0
RTS
;
PRZZLEFT LDA #0
HEX 2C
PRZZRITE LDA #1
HEX 2C
PRZZCNTR LDA #2
STA SPARM+1
RTS
;
PRZZHTAB JSR GETBYTE
STA SPARM+2
STA PRNTXLO
JSR GETBYTE
STA SPARM+3
STA PRNTXHI
RTS
;
PRZZLOC JSR PRZZHTAB
PRZZVTAB JSR GETBYTE
STA SPARM+4
RTS
;
PRZZCSPC JSR GETBYTE
STA SPARM+7
RTS
;
PRZZSMAL LDA #0
HEX 2C
PRZZBIG LDA #1
STA SPARM+8
RTS
;
PRZZKERN JSR GETBYTE
STA SPARM+11
RTS
;
PRZZSTR JSR GETBYTE
STA >0+1
JSR GETBYTE
STA >0+2
LDY #0
^0 LDA $FFFF,Y
BEQ >2
CMP #$20
BLT >1
STA PRINBUFF,X
INX
^1 INY
BNE <0
;
PRZZSPC JSR GETBYTE
STA PRNTYINC
^2 CLC
RTS
;
PRZZRTAB JSR PRZZNOCR
JSR GETBYTE
CLC
ADC PRNTXLO
STA SPARM+2
LDA PRNTXHI
ADC #0
STA SPARM+3
SEC
RTS
;
PRZZRTB2 JSR PRZZRTAB
STA PRNTXHI
LDA SPARM+2
STA PRNTXLO
RTS
;
PRZZCR JSR PRZZNOCR
LDY #00
PRNTXLO = *-1
LDA #00
PRNTXHI = *-1
STY SPARM+2
STA SPARM+3
LDA SPARM+4
CLC
ADC #00
PRNTYINC = *-1
STA SPARM+4
SEC
RTS
;
PRZZNOCR LDA #0
STA PRINBUFF,X
LDY #PRINBUFF
LDA /PRINBUFF
STY SPARM+9
STA SPARM+10
JSR STROUT
SEC
RTS
;
PRZZANY JSR GETBYTE
HEX 2C
PRZZBLAK LDA #$00
HEX 2C
PRZZWITE LDA #$7F
HEX 2C
PRZZRINV LDA #$FF
ASL
PHP
LSR
TAY
PLP
LDA #$A0
BCC *+3
ASL
ORA #$09
;
PHA
LDX #0
^1 JSR GETBYTE
CMP #$FF
BEQ >2
STA RTOSPARM,X
^2 INX
CPX #4
BLT <1
PLA
JSR RTOS
SEC
RTS
;-----------
;
; JSR PRINTGRP
; BYT <Xoption>
; BYT <# items>
; ADR <buffer>
;
PRINTGRP JSR GETINIT
JSR GETWORD
STX PRINTGM0
STA TMP2
JSR GETWORD
STX TMP0
STA TMP1
JSR SAVEGOT
;
^0 JSR PRINTGR2
LDY #0
^1 LDA (TMP0),Y
INC TMP0
BNE *+4
INC TMP1
TAX
BNE <1
DEC TMP2
BNE <0
JMP RESTGOT
;
; Print string pointed to
; by TMP0.TMP1
;
PRINTGR2 LDX TMP0
LDA TMP1
STX PRINTGM1+1
STA PRINTGM1+2
JSR PRINT
PRINTGM0 BYT PRCNTR
PRINTGM1 .DA #PRSTR,$FFFF,#CR,#0
RTS
;-----------
GOOBER0 ADR GOOBER2
GOOBER1 LDA READPROT
JMP (GOOBER0)
;-----------
;
; JSR INPUT
; ADR <buffer>
; BYT <maxlen>
; .DA <xcoor>
; BYT <ycoor>
;
INPUT JSR GETINIT
JSR GETWORD
STX INPUTP3
STA INPUTP3+1
JSR GETBYTE
STA STRGET+5
JSR GETWORD
STX INPUTP1
STA INPUTP1+1
JSR GETBYTE
STA INPUTP2
LDX #INPUTP
LDY /INPUTP
STX STRGET+3
STY STRGET+4
JMP STRGET
;
INPUTP HEX 0200
INPUTP1 ADR 0
INPUTP2 ADR 0
HEX 000200
INPUTP3 ADR 0
HEX 00
;-----------
READPROT HEX 00
;-----------
;
; Clear screen routines
;
CLSCREEN JSR PRINT
BYT RTOSBLAK,0,0,40,192,0
BIT $C057
BIT $C052
BIT $C050
RTS
;
CLS1 JSR PRINT
BYT RTOSBLAK,1,17,38,165,0
RTS
;
CLS2 JSR PRINT
BYT RTOSBLAK,1,28,38,154,0
RTS
;-----------
GOOBER2 INC READPROT
JMP GOOBER3
;-----------
;
CLS3 JSR PRINT
BYT RTOSBLAK,1,31,38,151,0
RTS
;
; GET routines
;
GETINIT TSX
LDA $103,X
STA GOTBYTE+1
LDA $104,X
STA GOTBYTE+2
LDA #>0-1
STA $103,X
LDA />0-1
STA $104,X
RTS
;
^0 PHA
JSR GETBYTE
PLA
JMP (GOTBYTE+1)
;
; Get a word
; X=lo, A=hi
;
GETWORD JSR GETBYTE
TAX
;
; Get a byte
;
GETBYTE INC GOTBYTE+1
BNE GOTBYTE
INC GOTBYTE+2
GOTBYTE LDA $FFFF
RTS
;
; Save GOTBYTE info
;
SAVEGOT LDY GOTBYTE+1
LDA GOTBYTE+2
STY RESTGOT+1
STA RESTGOT+3
RTS
;
; Restore GOTBYTE info
;
RESTGOT LDY #00
LDA #00
STY GOTBYTE+1
STA GOTBYTE+2
RTS
;-----------
;
; JSR SELECT
; BYT <xstart>,<xwidth>,<ystart>,<max entries>
; ADR <routine>
;
SELECT STY SELCUR
LDA SCALING
STA SCALSAVE
LSR SCALING
JSR GETINIT
;
LDX #0
STX SELWERDP
^0 JSR GETBYTE
STA SELECTXS,X
INX
CPX #6
BLT <0
;
ASL SELECTXS
LDY #'V'-$40
BCS *+4
LDY #$FF
STY SELVRMOD
LSR SELECTXS
;
; Set input device to default
;
LDA SELCUR
JSR SELSET
;
SELLOOP JSR SELECTIV
JSR SAVEGOT
JSR SELSUB
JSR RESTGOT
;
^0 LDY #0
JSR DEVICERD
BCS >1
;
; If button was down at last
; reading, then ignore.
;
ASL
BMI >1
;
; If button is down now, then
; selection made
;
BCS SELDONE
TYA
LSR
LSR
CMP #00
SELDEVY = *-1
STA SELDEVY
BEQ >1
CMP SELECTMX
BLT SELNEW
;
; Too big, so set device to
; maximum.
;
LDX SELECTMX
DEX
BPL >9
;
^1 JSR POLEKEY
BPL <0
;
LDX SELCUR
CMP #8
BEQ SELUP
CMP #$0B
BEQ SELUP
CMP #$15
BEQ SELDOWN
CMP #$0A
BEQ SELDOWN
CMP #ESC
BEQ >2
CMP #CR
BEQ SELDONE
CMP #00
SELVRMOD = *-1
BEQ SELVERS
JSR SELDOWRD
BNE <0
;
SELVERS ROR SELWERDP
;
SELDONE CLC
^2 PHP
JSR SELECTIV
PLP
LDA #00
SCALSAVE = *-1
STA SCALING
LDA SELWERDP
LDY SELCUR
RTS
;---
;
; Since keyboard was used,
; update device also.
;
^9 TXA
JSR SELSET
SELNEW PHA
JSR SELECTIV
PLA
STA SELCUR
BPL SELLOOP
;
SELUP DEX
BPL <9
LDX SELECTMX
DEX
BPL <9
;
SELDOWN INX
CPX SELECTMX
BLT <9
LDX #0
BEQ <9
;
SELECTIV LDA SELCUR
ASL
ASL
ASL
ADC SELECTYS
STA RTOSPARM+1
LDA #9
STA RTOSPARM+3
LDY SELECTXS
LDA SELECTXW
STY RTOSPARM
STA RTOSPARM+2
LDA #$49
LDY #$7F
JMP RTOS
;
SELDOWRD LDY SELWERDP
CMP SELWEIRD,Y
BEQ >0
LDY #$FF
HEX 24
^0 INY
STY SELWERDP
LDA #1
RTS
;
; Set input device
;
SELSET PHA
STA SELDEVY
ASL
ASL
ADC #2
TAY
LDX #0
JSR DEVICEST
PLA
RTS
;
SELWEIRD BYT 'STEVEN',0
SELWERDP BRK
;-----------
GOOBER30 ADR GOOBER4
GOOBER3 AND #7
BEQ >0
CLC
RTS
HEX 6D
^0 JMP (GOOBER30)
;-----------
SELSUB LDA SELCUR
ASL
TAX
JMP (SELADR)
;
SELCUR BRK
;
SELECTXS BRK
SELECTXW BRK
SELECTYS BRK
SELECTMX BRK
SELADR ADR 0
;-----------
HEX 20
GOOBER4 JSR CHEKPROT
CLC
RTS
;-----------
;
; JMP to routine given in Y
;
; JSR JMPVECTS
; ADR ROUTINE0
; ADR ROUTINE1
;
JMPVECTS JSR GETINIT
^0 JSR GETWORD
STX TMP0
STA TMP1
DEY
BPL <0
PLA
PLA
JMP (TMP0)
;-----------
;
; JSR LINES
; BYT 'V' (or 'H') for vertical/horiz
; BYT <color>,<xstart>,<ystart>,<len>
; BYT 1 (terminate)
;
; TMP0=length
;
LINES LDA #0
STA LINEXOFF
JSR GETINIT
JSR GETBYTE
STA LINETYPE
BPL >0
JSR GETBYTE
STA LINEXOFF
;
^0 JSR GETBYTE
CMP #1
BEQ LINERTS
STA LINECOLR
JSR GETBYTE
TAX
JSR GETBYTE
STA LINEY
JSR GETBYTE
STA TMP0
LDA #00
LINETYPE = *-1
AND #$7F
CMP #'V'
BEQ LINEV
;
LINEH JSR LINEDOT
INX
DEC TMP0
BNE LINEH
JMP <0
;
LINEV JSR LINEDOT
INC LINEY
DEC TMP0
BNE LINEV
JMP <0
;
LINEDOT LDY #00
LINEY = *-1
LDA YBASELO,Y
CLC
ADC #00
LINEXOFF = *-1
STA HIRES
LDA YBASEHI,Y
STA HIRES+1
STY TMP2
LDY XBYTEOFF,X
TYA
EOR TMP2
LSR
LDA #00
LINECOLR = *-1
BCC >0
LSR
^0 AND XBITS,X
STA TMP2
LDA XBITS,X
EOR #$FF
AND (HIRES),Y
ORA TMP2
STA (HIRES),Y
LINERTS RTS
;-----------
;
; JSR PARSE
; .DA #'A',JMPA
; .DA #'B',JMPB
; BRK
;
; If no match, then routine simply
; continues to execute code after
; the BRK instruction.
;
; all registers preserved
;
PARSE STA TMP0
JSR SAVEREGS
JSR GETINIT
^0 JSR GETBYTE
BEQ >1
EOR TMP0
PHA
JSR GETWORD
STX TMP1
STA TMP2
PLA
BNE <0
PLA
PLA
JSR RESTREGS
JMP (TMP1)
^1 JMP RESTREGS
;-----------
;
; Draw arrow at X,Y
; A=0 for IJMK, 1 for WASZ
;
SHOWAROW STX ARROWX
STY ARROWY
ASL
ASL
STA AROWTYPE
;
; Compute bit location by
; multiplying X by 7.
;
TXA
ASL
ASL
ASL
SEC
SBC ARROWX
STA ARROWX2
;
JSR PICDRAW
ARROWX BYT 26
ARROWY BYT 1
BYT 6,37
HEX 82400184600384300684180C840C1884
HEX 06308403608340014001826001400382
HEX 40014001824001400182460140318247
HEX 01407181407D01405F01608403308406
HEX 18840C0C84180684300C841818840C30
HEX 8406608403407D01405F018147014071
HEX 82460140318240014001824001400182
HEX 60014003824001400183036084063084
HEX 0C1884180C84300684600384400182
;
LDA #0
STA TMP5
^1 LDY #00
AROWTYPE = *-1
INC AROWTYPE
LDA SHOWARTB,Y
STA >3+0
LDY TMP5
LDA ARROWOFX,Y
CLC
ADC #00
ARROWX2 = *-1
STA >2+1
LDA ARROWOFY,Y
ADC ARROWY
STA >2+3
JSR PRINT
BYT PRCNTR
^2 .DA #PRLOC,00,#00
^3 BYT ' ',NOCR,0
;
INC TMP5
LDA TMP5
CMP #4
BLT <1
RTS
;
SHOWARTB BYT 'IJKMWASZ'
;
ARROWOFX BYT 21,12,30,21
ARROWOFY BYT 7,15,15,23
;-----------
;
; Convert number to text
; given in A, return
; Y=tens digit, A=ones digit
;
MAKENUMB LDY #$FF
SEC
^0 INY
SBC #10
BCS <0
ADC #10
RTS
;-----------
;
; Print a number
;
; Given X,Y and A=number
;
NUMBER STX DIGITX
STY DIGITY
JSR MAKENUMB
PHA
JSR DIGITPRN
PLA
INC DIGITX
;
TAY
DIGITPRN LDA SYSFONT+$86,Y
STA TMPLO
LDA SYSFONT+$C1,Y
STA TMPHI
LDA #7
STA TMP2
LDX #00
DIGITY = *-1
^0 LDA YBASELO,X
STA HIRES
LDA YBASEHI,X
STA HIRES+1
LDY #0
LDA (TMPLO),Y
INC TMPLO
BNE *+4
INC TMPHI
LSR
TAY
LDA FLIPPER,Y
LDY #00
DIGITX = *-1
STA (HIRES),Y
INX
DEC TMP2
BNE <0
RTS
;-----------
;
; Ram TO Screen routine
; A is opcode
; Y is operand
;
RTOSPARM EPZ $3A
;
RTX EPZ RTOSPARM
RTY EPZ RTOSPARM+1
RTXL EPZ RTOSPARM+2
RTYL EPZ RTOSPARM+3
RTADRL EPZ RTOSPARM+4
RTADRH EPZ RTOSPARM+5
;
RTSCRL EPZ RTOSPARM+6
RTSCRH EPZ RTOSPARM+7
;
RTOS STA RTOSMD0
STY RTOSMD0+1
;
LDX RTY
^0 LDA YBASEHI,X
STA RTSCRH
LDA YBASELO,X
CLC
ADC RTX
STA RTSCRL
LDY RTXL
DEY
^1 LDA (RTSCRL),Y
RTOSMD0 EOR #$7F
STA (RTSCRL),Y
DEY
BPL <1
LDA RTADRL
CLC
ADC RTXL
STA RTADRL
BCC >2
INC RTADRH
^2 INX
DEC RTYL
BNE <0
RTS
;-----------
;
; PRESS SPACE BAR
; FOR MORE
;
SPACEBAR STA >0+0
JSR PICDRAW
^0 BYT 26,181,14,11
HEX 787979793C707971717D70637303181B
HEX 1B0C0618181B1B0C3036360678797978
HEX 3C7079791B3C70737703185819406181
HEX 1B181B0C3036360318187B793C701918
HEX 737D703336069178797C701C4F4F0F86
HEX 184C4D715F59590186784C7D305B594F
HEX 0786184C6D3058594D018618784C3118
HEX 4F590F83
RTS
;-----------
;
; <ESC> TO GO TO MAIN MENU
;
ESCMAIN JSR PRINT
BYT RTOSWITE,0,183,40,9
BRK
;
JSR MUSIC
;
JSR PRINT
.DA #PRLOC,140,#174
BYT PRCNTR
BYT '<ESC> TO GO TO MAIN MENU',CR
BRK
JSR GETKEY
CMP #ESC
BNE >0
JMP MAINMENU
;
^0 JSR PRINT
BYT RTOSBLAK,1,174,38,7,0
JMP ESCBACK
;-----------
;
;
;
ICL "S:SUBPAK4"

View File

@ -0,0 +1,519 @@
;
; S:SUBPAK4
;
; Miscellaneous routines
;
INY1 = 64
;
INIT? LDA #00
INITFLAG = *-1
ASL
BCC >0
INIT1 JSR CLS1
JSR PRINT
.DA #PRLOC,140,#INY1
BYT PRCNTR
BYT 'BEFORE SAVING YOUR '
.DA #PRSTR,TYPETEXT
BYT ',',CR
BYT 'DO YOU NEED TO '
.DA #PRSTR,TXTINIT,#CR
BYT 'A NEW '
.DA #PRSTR,TXTDD
BYT '?',CR
BYT CR,CR
BYT 'NO',CR,'YES',CR
BRK
LDY #0
STY INITFLAG
JSR SELECT
BYT 17,6,INY1+7+4*8,2
ADR RTS
BCS >0
CPY #1
BEQ INIT2
^0 RTS
;---
;
; Go ahead with the initializing
;
INIT2 JSR CLS1
JSR PRINT
.DA #PRLOC,140,#40,#0
;
LDA DATADRIV
CMP #2
BEQ >2
;
; For 1 drive systems
;
JSR PRINT
BYT PRCNTR
BYT 'REMOVE '
.DA #PRSTR,CTEXT
.DA #PRSTR,TXTSD
BYT ' AND',CR
BRK
JMP >3
;
; For 2 drive systems
;
^2 JSR PRINT
BYT CR
BRK
;
^3 JSR PRINT
BYT PRCNTR
BYT 'INSERT BLANK'
.DA #PRSTR,TXTSD
BYT ' '
.DA #PRSTR,TXTINDRV,#CR
BYT CR
.DA #PRSTR,TXTPRET
BYT ' TO '
.DA #PRSTR,TXTINIT
.DA #PRSTR,TXTSD
BYT '.',CR
BYT CR,CR,CR
BYT '**** W A R N I N G ****',CR
BYT CR
BYT 'ALL DATA ON THIS'
.DA #PRSTR,TXTSD,#CR
BYT 'WILL BE ERASED!',CR
BRK
^0 JSR GETKEY
CMP #CR
BEQ INIT3
CMP #ESC
BNE <0
^1 JMP INIT1
;---
INIT3 JSR CLS1
JSR REMOMAST
BCS >3
JSR INITDI
JSR PRINT
BYT PRCNTR
BYT 'IN PROGRESS',CR,0
;
JSR NOPROT
LDY #0
^0 LDA INITTEXT,Y
BEQ >1
JSR COUT
INY
BNE <0
;
^1 JSR DOSCR
BNE >2
JSR SAVESUPP
BNE >2
;
; Successful initialization
;
JSR CLS1
JSR INITDI
JSR PRINT
BYT PRCNTR
BYT 'COMPLETE',CR,0
JSR ANYKEY
CLC
RTS
;
^2 JSR ERROR
^3 JMP INIT2
;---
INITTEXT BYT 13,4,'SEEE',0
;---
;
; "DISK INITIALIZATION" message
;
INITDI JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#64
.DA #PRSTR,TXTD
BYT ' INITIALIZATION',CR
BYT CR,0
RTS
;-----------
;
; Check for master disk in data drive
; If it is there, print appropriate
; message.
;
REMOMAST LDA DATADRIV
JSR READVTOC
BCC >1
^0 CLC
RTS
;
; If data disk (0) or non-master (>4)
; then just exit with CLC.
;
^1 TAX
BEQ <0
CPX #5
BGE <0
;
; Display message
;
LDY REMOMSTL-1,X
LDA REMOMSTH-1,X
STY >2+1
STA >2+2
;
JSR CLS1
JSR MUSIC
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#64
BYT 'THE "'
^2 .DA #PRSTR,$FFFF
BYT '"'
.DA #PRSTR,TXTSD
BYT ' CANNOT',CR
BYT 'BE USED AS A '
.DA #PRSTR,TXTDD
BYT CR,0
JSR ANYKEY
JSR CLS1
SEC
RTS
;
REMOMSTL BYT PSTEXT
BYT PSTEXT
BYT CTEXT
BYT CTEXT
REMOMSTH HBY PSTEXT
HBY PSTEXT
HBY CTEXT
HBY CTEXT
;-----------
;
; Make sure that routine to check
; for copy protection is still there.
;
PROTBYTE = $8DD6
;
PCHEKSUM LDA /PROTBYTE
STA TMP1
LDY #PROTBYTE
STY TMP0
;
LDX #0
LDA #$55
STA (TMP0,X)
;
LDA #$3C
LDX #$E0
LDY #$0F
JSR >0
;
LDA #$36
LDX #$19
LDY #$3F
JSR >0
;
LDA #$36
LDX #$B5
LDY #$35
;
^0 STX TMP2
ASL
LDX #0
SEC
ROR
STA TMP3
^1 TYA
CLC
EOR (TMP2),Y
ADC (TMP0,X)
DEY
STA (TMP0,X)
BPL <1
ASL TMP3
ASL TMP2
RTS
;-----------
;
; Test paper position
;
TESTPAPR LDA #CR
JSR PTCOUT
LDX #$7F
LDY #$03
JSR PTSENDGC
LDX #$7F
LDY #$03
^0 TXA
AND #$1F
BEQ >1
LDA #0
HEX 2C
^1 LDA #1
JSR PTGCOUT
DEX
BNE <0
DEY
BPL <0
LDX #1
LDY #1
JMP PTCRLF
;-----------
;
; Get a graphic by number
; from the original Print Shop
;
; Enter with A=number 00-60
; X,Y= pointer to dest buffer
;
; return with A=new number and
; dest buffer containing graphic
; if SEC then ESC pressed.
;
IBUFFER = $6000
;
GETPDISK STX GPBUFLO
STY GPBUFHI
PHA
JSR PRINT
.DA #PRLOC,50,#132
BYT 'ENTER NO. OF GRAPHIC>',NOCR,0
;
LDX #60
STX TMP0
LDX #220
LDY #132
PLA
JSR GETANUMB
BCS GETPDONE
STA GPNUMB
TXA
;
; Figure out the filename, and load
; the graphic
;
JSR MAKENUMB
STA GPONES
STY GPTENS
INY
TYA
ORA #'0'
STA >0+1
;
SEC
JSR WAITPSD
BCS GETPDONE
JSR BLOAD
^0 BYT 'IX',0
BNE >9
;
; Move the graphic to the buffer
;
LDX #00
GPTENS = *-1
JSR UNPACK
LDX #00
GPONES = *-1
LDY #00
GPBUFLO = *-1
LDA #00
GPBUFHI = *-1
STX IBUFFER+3
STY IBUFFER+28
STA IBUFFER+32
JSR IBUFFER
CLC
BCC GETPDONE
;
; Display error message and quit
;
^9 JSR ERROR
SEC
;---
;
; Return to calling program
;
GETPDONE PHP
JSR PRINT
BYT RTOSBLAK,1,132,38,7,0
LDA #00
GPNUMB = *-1
PLP
RTS
;-----------
;
; Graphics from Print Shop disk
; Unpack routine.
;
UPTBL EPZ TMP0
UPGBAS EPZ TMP2
UPRCODE EPZ TMP4
UPREPT EPZ TMP5
;
; Lengths of the 6 "I" files
;
UPFLENL HEX 77563E1F0279
UPFLENH HEX 0F0F10111114
;
; Icon unpack routine
;
UNPACK LDY UPFLENL,X
LDA UPFLENH,X
STY UPTBL
CLC
ADC /IBUFFER
STA UPTBL+1
LDY #IBUFFER+$17FF
LDA /IBUFFER+$17FF
STY UPGBAS
STA UPGBAS+1
JSR UPTBLGET
STA UPRCODE
;
^0 JSR UPTBLGET
CMP UPRCODE
BNE >1
;
JSR UPTBLGET
TAX
JSR UPTBLGET
HEX 2C
;
^1 LDX #1
STX UPREPT
LDY #0
^2 STA (UPGBAS),Y
LDX UPGBAS
BNE *+4
DEC UPGBAS+1
DEC UPGBAS
LDX UPGBAS+1
CPX /IBUFFER
BLT >3
DEC UPREPT
BNE <2
BEQ <0
;
; Get a byte from the packed data.
;
UPTBLGET LDY UPTBL
BNE *+4
DEC UPTBL+1
DEC UPTBL
LDY #0
LDA (UPTBL),Y
^3 RTS
;-----------
;
; Input a number given:
;
; X,Y : position of cursor
; A : default number 0=no default
; TMP0: maximum value for A
;
; Returns A:new number CLC
; X:A-1
;
; SEC:<ESC> was pressed
;
GETBUFF = PRINBUFF+10
;
GETANUMB STX GANX
STY GANY
LDX TMP0
STX GANMAX
;
; Fill GETBUFF with the text of the
; default number given in A
;
TAX
BEQ >1
;
LDX #0
CMP #10
BLT >0
JSR MAKENUMB
PHA
TYA
ORA #'0'
STA GETBUFF,X
INX
PLA
^0 ORA #'0'
STA GETBUFF,X
INX
^1 LDA #0
STA GETBUFF,X
;---
;
; Get the number from keyboard
;
GANAGAIN JSR INPUT
ADR GETBUFF
BYT 2
GANX .DA 220
GANY BYT 132
;
BCS GANDONE
;---
;
; Now compute number typed in A
;
LDY #0
TYA
^0 LDX GETBUFF,Y
BEQ >1
;
CPX #'0'
BLT GANERROR
CPX #'9'+1
BGE GANERROR
STA TMP0
ASL
ASL
ADC TMP0
ASL
STX TMP0
ADC TMP0
SEC
SBC #'0'
INY
BNE <0
;
; Is the number within limits?
; ie: 1-GANMAX
;
^1 TAX
DEX
CPX #00
GANMAX = *-1
BCC GANDONE
;
; Error
;
GANERROR JSR BOOP
JMP GANAGAIN
;
GANDONE RTS
;-----------
;
; Change input device
;
DEVICECH JSR PRINT
BYT RTOSBLAK,0,181,40,11
BYT PRCNTR
.DA #PRLOC,140,#185
BYT PRCSPACE,1
BYT 'PLUG IN INPUT DEVICE, '
.DA #PRSTR,TXTPAK,#CR
BRK
^0 JSR POLEKEY
BPL <0
JSR DEVICEOF
JMP DEVICENW
;-----------
;
;
;
ICL "S:SUBPAK5"

View File

@ -0,0 +1,842 @@
;
; S:SUBPAK5
;
; Input device support routines
; -----------------------------
; The Print Shop Companion Disk
;
;
; DEVICENW: Find current input device
; and intialize it, and set
; up the following vectors:
;
; DEVICEON: Turn on current input
; device and return flashing
; cursor delay in A,Y.
;
; DEVICEOF: Turn off current input
; device.
;
; DEVICERD: Read current input device.
; SEC=error, ignore values
; CLC=good values in X,Y
; A=button status
; bit 7:button is down
; bit 6:button was down at
; last reading
;
; DEVICEST: Set X,Y coordinates, given
; X,Y. This is used for
; clamping.
;
; SCALING: hi bit 0:graphic 88x52
; hi bit 1:full screen 192x140
;
; Read both paddles
;
READPDL JSR FASTPDL
BCS PDLERROR
;
; First compute X-coor (paddle 0)
;
^1 LDX #3
^2 LDA P0D0,X
BNE >3
DEX
BPL <2
BMI PDLERROR
;
^3 CMP #$40
BLT >4
LDA #$40
^4 SEC
SBC #1
ASL
ASL
CLC
ADC PDLADD,X
TAX
;
; Last, compute Y-coor (paddle 1)
;
LDY #3
^0 LDA P1D0,Y
BNE >1
DEY
BPL <0
BMI PDLERROR
;
^1 CMP #$40
BLT >2
LDA #$40
^2 SEC
SBC #1
ASL
ASL
CLC
ADC PDLADD,Y
TAY
CLC
RTS
;
; Return error code
;
PDLERROR SEC
RTS
;
PDLADD BYT 0,1,2,3
;
P0D0 BRK
P0D1 BRK
P0D2 BRK
P0D3 BRK
P1D0 BRK
P1D1 BRK
P1D2 BRK
P1D3 BRK
;
; Check for paddles
;
CHECKPDL LDA $C070
LDX #0
LDY #16
^0 LDA $C064
ORA $C065
BPL >1
DEX
BNE <0
DEY
BNE <0
;
; If no paddle, then return to main
;
PLA
PLA
^1 RTS
;---------------------------
;
; Select input device to use
;
DEVICENW LDA $FBC0
BEQ >0
;
; If //c, check for paddles first
;
JSR FINDMOUS
^0 JSR FINDKOLA
JSR FINDJOYS
JSR FINDMOUS
JSR NODEVICE
;
; NODEVICE always installs
;
; Install vectors
;
; JSR INSTALL
;
; JMP DEVICEON
; JMP DEVICEOF
; JMP DEVICERD
; JMP DEVICEST
;
; Installs the 4 jump vectors
; following the JSR INSTALL.
;
INSTALL PLA
STA DTMPLO
PLA
STA DTMPHI
LDY #12
^0 LDA (DTMPLO),Y
STA DEVMODS-1,Y
DEY
BNE <0
PLA
PLA
;---
;
; Since the routine that scans
; for a mouse turns on the $C800
; rom behind either $C3 or another
; card, turn it off!!!
;
BIT $CFFF
JMP DEVICEON
;-----------------
;
; Search for mouse
;
FINDMOUS LDY #$00
LDA #$C7
STY DTMPLO
^0 STA DTMPHI
LDY #$0C
LDA (DTMPLO),Y
CMP #$20
BNE >1
LDY #$FB
LDA (DTMPLO),Y
CMP #$D6
BNE >1
LDA DTMPHI
STA MOUSECN
AND #$0F
STA MOUSEN
ASL
ASL
ASL
ASL
STA MOUSEN0
JSR MSINIT
;
JSR INSTALL
JMP MSTURNON
JMP MSTURNOF
JMP MSREAD
JMP MSSET
;
^1 DEC DTMPHI
LDA DTMPHI
CMP #$C1
BGE <0
RTS
;
; Initialize the mouse
;
MSINIT LDY #$19
MSINIT2 JSR DOMOUSE
;
; On the ][ and ][+, this routine
; will clear hires page 1, so only
; execute it once.
;
LDA #$2C
STA MSINIT2
;
; fall into...
;
; Turn on the mouse
;
MSTURNON LDY #$12
LDA #1
JSR DOMOUSE
LDY #100
LDA /100
LDX $FBC0
BNE SETFLASH
;
; The //c mouse routines are faster!
;
LDY #600
LDA /600
;
SETFLASH STY FLSHINIT+1
STA >1+1
RTS
;-----------
FLSHINIT LDY #00
^1 LDA #00
STY FLASHLO
STA FLASHHI
RTS
;
; Turn off the mouse
;
MSTURNOF SEI
LDY #$12
LDA #0
;
; Do mouse routine given in Y
; with parameter in A
;
DOMOUSE PHA
LDA $C400,Y
MOUSECN = *-1
LDX MOUSECN
LDY #00
MOUSEN0 = *-1
STA >0+1
STX >0+2
PLA
^0 JMP $C400
;
; Read the mouse
;
MSREAD PHP
SEI
LDY #$14
JSR DOMOUSE
LDY #00
MOUSEN = *-1
;
; Get button status
;
LDA $778,Y
PHA
;
; X-coor
;
LDA $478,Y
STA DTMPLO
LDA $578,Y
STA DTMPHI
BIT SCALING
BMI >0
LSR DTMPHI
ROR DTMPLO
^0 LDX $FBC0
BEQ >1
LSR DTMPHI
ROR DTMPLO
^1 LDX DTMPLO
;
; Y-coor
;
LDA $4F8,Y
STA DTMPLO
LDA $5F8,Y
STA DTMPHI
LSR DTMPHI
ROR DTMPLO
BIT SCALING
BMI >2
LSR DTMPHI
ROR DTMPLO
^2 LDA $FBC0
BEQ >3
LSR DTMPHI
ROR DTMPLO
^3 LDY DTMPLO
;
PLA
PLP
AND #$FF
CLC
RTS
;
; Compute actual mouse address given
; A=either X or Y
;
MSDOX CLC
HEX 24
MSDOY SEC
LDY #0
STY DTMPHI
BCC >0
ASL
ROL DTMPHI
^0 BIT SCALING
BMI >1
ASL
ROL DTMPHI
^1 LDX $FBC0
BEQ >2
ASL
ROL DTMPHI
^2 LDY MOUSEN
LDX DTMPHI
RTS
;
; Set mouse to given coordinates
;
MSSET PHP
SEI
STY >0+1
TXA
JSR MSDOX
STA $478,Y
TXA
STA $578,Y
^0 LDA #00
JSR MSDOY
STA $4F8,Y
TXA
STA $5F8,Y
LDY #$16
JSR DOMOUSE
PLP
RTS
;-------------------
;
; Check for KoalaPad
;
FINDKOLA JSR CHECKPDL
;
; If X,Y is less than KPMIN
; then assume KoalaPad.
;
JSR KPONPAD
BCC >0
RTS
;
^0 JSR INSTALL
JMP KPTURNON
JMP KPTURNOF
JMP KPREAD
JMP KPSET
;
KPMIN = 16
;
; Tables to keep track of last
; 8 coordinates
;
KPPOINT HEX 00
;
KPXLAST DFS 8,0
KPYLAST DFS 8,0
;
; Get coordinates from KoalaPad
; If CLC then pen is off pad
; SEC then X,Y are adjusted values
;
KPONPAD JSR READPDL
CPX #KPMIN
BGE >0
CPY #KPMIN
BLT KPONPADR
;
; Don't believe paddle readings unless
; you get the same values twice.
; (ignoring bit 0)
;
; compute X
;
^0 TXA
AND #$FE
CMP LASTX
STA LASTX
BNE KPONPAD
;
TXA
SEC
SBC #KPMIN
BCS *+4
LDA #0
BIT SCALING
BMI >1
LSR
^1 TAX
;
; compute Y
;
TYA
AND #$FE
CMP LASTY
STA LASTY
BNE KPONPAD
;
TYA
SEC
SBC #KPMIN
BCS *+4
LDA #0
BIT SCALING
BMI >2
;
; Y*.3125 (1/4+1/16)
;
STA DTMPHI
LDA #0
LSR DTMPHI
ROR
LSR DTMPHI
ROR
LDY DTMPHI
STA DTMP0
STY DTMP1
LSR DTMPHI
ROR
LSR DTMPHI
ROR
ADC DTMP0
LDA DTMPHI
ADC DTMP1
;
^2 TAY
SEC
KPONPADR RTS
;
KPTURNON LDY #40
LDA /40
JMP SETFLASH
;
KPTURNOF = RTS
;
; Read KoalaPad by averaging
; the current reading with the
; last 7 readings
;
KPREAD JSR KPONPAD
BCC KPDONE
TXA
LDX KPPOINT
STA KPXLAST,X
TYA
STA KPYLAST,X
INX
TXA
AND #7
STA KPPOINT
;
LDX #0
JSR KPAVG
STA XCOOR
LDX #8
JSR KPAVG
STA YCOOR
KPDONE LDX XCOOR
LDY YCOOR
;
; Read KoalaPad/Joystick buttons
;
READBTN LDA $C061
ORA $C062
AND #$80
LASTBTN ORA #00
PHA
LSR
AND #$40
STA LASTBTN+1
PLA
CLC
RTS
;
; Set KoalaPad averaging tables
;
KPSET JSR JYSET
TXA
LDX #7
^0 STA KPXLAST,X
DEX
BPL <0
;
TYA
LDY #7
^1 STA KPYLAST,Y
DEY
BPL <1
RTS
;
; Compute average of last 8
; readings and return result in A
;
KPAVG LDY #0
TYA
STY DTMPHI
CLC
^0 ADC KPXLAST,X
BCC >1
INC DTMPHI
^1 INX
INY
CPY #8
BCC <0
;
LSR DTMPHI
ROR
LSR DTMPHI
ROR
LSR DTMPHI
ROR
RTS
;-------------------
;
; Check for Joystick
;
FINDJOYS JSR CHECKPDL
;
; If joystick is centered,
; then assume joystick
;
JSR JYREAD2
BEQ >0
RTS
;
^0 JSR INSTALL
JMP JYTURNON
JMP JYTURNOF
JMP JYREAD
JMP JYSET
;
JYTIMER BYT 20
JYSPEEDU BYT 5
;
; "How fast to return values"
; constants
;
JYSLOW = 45
JYFAST = 10
;
JYTURNON = KPTURNON
;
JYTURNOF = RTS
;
JYTBL0 BYT JYFAST,JYSLOW,JYSLOW
JYTBL1 BYT JYFAST,JYSLOW,JYFAST
;
JYREAD LDA JYTBL0,Y
STA JYMOD0
LDA JYTBL1,Y
STA JYMOD1
JSR JYREAD2
BNE >0
;
; Joystick is centered, so reset all
; the JY values
;
LDX #8
STX JYSPEEDU
LDX #1
STX JYTIMER
LDX #JYSLOW
JYMOD0 = *-1
STX JYSPEED
BNE >3
;
^0 DEC JYTIMER
BNE >3
;
DEC JYSPEEDU
BNE >1
LDX #JYFAST
JYMOD1 = *-1
STX JYSPEED
;
^1 LDX #00
JYSPEED = *-1
STX JYTIMER
CLC
ADC XCOOR
CMP #$FF
BEQ >2
STA XCOOR
^2 TYA
CLC
ADC YCOOR
CMP #$FF
BEQ >3
STA YCOOR
;
^3 LDX XCOOR
LDY YCOOR
JMP READBTN
;
; Compute direction add value
; in A for X, and Y for Y
;
JYREAD2 JSR READPDL
TXA
JSR JYCALC
STA DTMP0
TYA
JSR JYCALC
TAY
ORA DTMP0
PHP
LDA DTMP0
PLP
CLC
RTS
;
; Calculate add value FF,00,01
; based on position of joystick
;
JYCALC TAX
LDA #$FF
CPX #$30
ADC #0
CPX #$A0
ADC #0
RTS
;
JYSET STX XCOOR
STY YCOOR
RTS
;
; No input device connected handler
;
NODEVICE JSR INSTALL
JMP >0
JMP >0
JMP >0
JMP >0
;
; Satisfy DEVICEON
;
^0 LDY #3000
LDA /3000
;
; Satisfy DEVICERD
;
SEC
JMP SETFLASH
;
; Scratch pad area:
;
XCOOR BRK
YCOOR BRK
LASTX BRK
LASTY BRK
;
;
; David Snider's
; Fast paddle read routine
;
; Make sure on page boundary
;
DFS $100-*&$FF,$EA
;
FASTPDL LDA #0
LDY #7
^0 STA P0D0,Y
DEY
BPL <0
TAX
CLC
LDA $C070
;
; Both paddles loop
;
^1 INX
BMI PDLERR2
BIT $C064
BPL P0X0
BIT $C065
BPL P1X0
BIT $C064
BPL P0X1
BIT $C065
BPL P1X1
BIT $C064
BPL P0X2
BIT $C065
BPL P1X2
BIT $C064
BPL P0X3
BIT $C065
BMI <1
;
; Paddle 1 exits
;
P1X3 BIT $C064
STX P1D3
BCC P0W3
P1X0 BIT $C064
STX P1D0
BCC P0W0
P1X1 BIT $C064
STX P1D1
BCC P0W1
P1X2 BIT $C064
STX P1D2
BCC P0W2
;
; Paddle 0 exits
;
P0X0 BIT $C065
STX P0D0
BCC P1W0
P0X1 BIT $C065
STX P0D1
BCC P1W1
P0X2 BIT $C065
STX P0D2
BCC P1W2
P0X3 BIT $C065
STX P0D3
BCC P1W3
;
PDLERR2 SEC
RTS
;
;
; Wait for paddle 1 to time out
;
^0 BIT $C065
P1W0 BPL P1F0
NOP
NOP
NOP
BIT $C065
P1W1 BPL P1F1
NOP
NOP
NOP
BIT $C065
P1W2 BPL P1F2
NOP
NOP
NOP
BIT $C065
P1W3 BPL P1F3
NOP
NOP
INX
BPL <0
BMI PDLERR2
;
; Wait for paddle 0 to time out
;
^0 BIT $C064
P0W0 BPL P0F0
NOP
NOP
NOP
BIT $C064
P0W1 BPL P0F1
NOP
NOP
NOP
BIT $C064
P0W2 BPL P0F2
NOP
NOP
NOP
BIT $C064
P0W3 BPL P0F3
NOP
NOP
INX
BPL <0
BMI PDLERR2
;
; Final stuff
;
P1F0 STX P1D0
BCC >0
P1F1 STX P1D1
BCC >0
P1F2 STX P1D2
BCC >0
P1F3 STX P1D3
BCC >0
P0F0 STX P0D0
BCC >0
P0F1 STX P0D1
BCC >0
P0F2 STX P0D2
BCC >0
P0F3 STX P0D3
;
; Make sure this routine always takes
; the same amount of time.
;
; 51 microsecond loop until X=$40
;
^0 CPX #$40
BGE >1
JSR RTS
JSR RTS
JSR RTS
NOP
NOP
NOP
INX
BNE <0
^1 CLC
RTS
;
;
;
USR "SUBPAK",ORG
END

View File

@ -0,0 +1,24 @@
0 REM 0
1 M = 4: IF PEEK (2054) = 48 THEN PRINT "BLOADCAPTURE.OBJ": POKE 2054,49
2 OP = 1
3 POKE 10,OP * 128
5 Y0 = 4096:Y1 = Y0 + 256:FL = Y1 + 192:HX = Y1 + 224:CP = Y0 + 512: GOTO 1000
10 POKE - 16302,0: POKE - 16301,0: POKE - 16297,0: POKE - 16304,0
20 VTAB 14: IN# M: INPUT X,Y,B: IN# 0:X = INT (X / 20):Y = INT (Y / 6): IF X > 39 THEN X = 39
30 IF Y > 159 THEN Y = 159
40 POKE 0,X: POKE 1,Y: CALL FL: GOSUB 50: CALL FL: GOSUB 50: ON B < > 2 GOTO 20: PRINT CHR$ (7);: VTAB 24: RETURN
50 FOR A = 1 TO 25: NEXT : RETURN
1000 TEXT : NORMAL : POKE - 16302,0: POKE - 16301,0: POKE - 16297,0: POKE - 16304,0: PR# M: PRINT CHR$ (1);: PR# 0
1010 HOME : VTAB 23: PRINT "SELECT UPPER LEFT CORNER": GOSUB 10:OX = X:OY = Y: PRINT "X="X",Y="Y" NOW LOWER RIGHT": GOSUB 10: PRINT "X="X",Y="Y
1020 POKE 0,OX: POKE 1,OY: POKE 2,X + 1: POKE 3,Y + 1: CALL CP: VTAB 24: PRINT "PRESS <RETURN> TO ACCEPT...";: POKE 49168,0
1030 K = PEEK (49152): ON K < 128 GOTO 1030: POKE 49168,0: CALL CP: ON K < > 141 GOTO 1010
1035 CALL CP:EN = PEEK (6) + 256 * PEEK (7)
1040 CALL 1002: TEXT : HOME : PRINT "LENGTH="EN - 16384: INPUT "FILE NAME ?";F$: IF NOT OP THEN 2000
1042 : IF LEN (F$) THEN PRINT "OPEN"F$: PRINT "WRITE"F$
1045 PRINT "I "F$": BYT "OX","OY","X - OX + 1","Y - OY + 1;:H = 0
1050 FOR A = 16384 TO EN - 1: IF H / 16 = INT (H / 16) THEN PRINT : PRINT " HEX ";
1060 POKE 0, PEEK (A): CALL HX:H = H + 1: NEXT
1070 PRINT " ; ;": PRINT "CLOSE"
1080 END
2000 PRINT "BSAVE"F$",A16384,L"EN - 16384: STOP
63999 POKE 2054,48: PRINT "SAVE CAPTURE"

View File

@ -0,0 +1,36 @@
5 F$ = "COMPRESSED BORDERS"
10 SP = 4096: PRINT "BLOAD O:BORDDATA,A"SP
15 GOSUB 60000
20 DP = 8192:OP = DP
30 FOR BR = 1 TO 9: PRINT "BORDER #"BR
31 CO = 48 * (1 + 2 * (BR < 3)):BR(BR) = DP: GOSUB 1000:EB(BR) = DP - 1
32 CO = 28 * (1 + 2 * (BR < 3)):SC(BR) = DP: GOSUB 1000:ES(BR) = DP - 1
50 NEXT
60 PRINT "OPEN "F$: PRINT "WRITE "F$
70 PRINT "INS"
100 FOR BR = 1 TO 9
110 PRINT "PSBRD"BR;:A1 = BR(BR):A2 = EB(BR): GOSUB 200
115 PRINT ";"
120 PRINT "PSSCR"BR;:A1 = SC(BR):A2 = ES(BR): GOSUB 200
130 PRINT ";-------"
140 NEXT
142 Q$ = CHR$ (34)
145 FOR A = 1 TO 3: PRINT ";": NEXT : PRINT " USR "Q$"BOEDIT,V12"Q$",ORG": PRINT " END"
150 PRINT "CLOSE": STOP
200 C = 0: FOR A = A1 TO A2: IF NOT C THEN PRINT " HEX ";
210 CALL 768, PEEK (A):C = C + 1: IF C = 8 THEN C = 0: PRINT
220 NEXT : IF C THEN PRINT
230 RETURN
1000 AA = DP:BB = SP
1010 A = PEEK (SP): ON A = PEEK (SP + 1) GOTO 2000
1020 SP = SP + 1: POKE DP,A:DP = DP + 1:CO = CO - 1
1040 IF CO THEN 1010
1050 PRINT DP - AA,SP - BB: RETURN
2000 C = 1:RB = A: IF CO = 1 THEN 1020
2010 IF PEEK (SP) < > PEEK (SP + 1) THEN 3000
2020 SP = SP + 1:C = C + 1:CO = CO - 1: IF CO THEN 2010
3000 POKE DP,C + 128: POKE DP + 1,RB:DP = DP + 2
3005 SP = SP + (CO > 0):CO = CO - (CO > 0)
3010 GOTO 1040
60000 FOR A = 768 TO 774: READ B: POKE A,B: NEXT : RETURN : DATA 32,76,231,138,76,218,253
63999 PRINT "SAVE COMP BORDS"

View File

@ -0,0 +1,29 @@
5 F$ = "NUMB BORDER"
10 SP = 4096: PRINT "BLOAD O:NUMBBORD,A"SP
15 GOSUB 60000
20 DP = 8192:OP = DP
32 CO = 28 * 3:SC(BR) = DP: GOSUB 1000:ES(BR) = DP - 1
60 PRINT "OPEN "F$: PRINT "WRITE "F$
70 PRINT "INS"
120 PRINT "PAGE3DAT";:A1 = SC(BR):A2 = ES(BR): GOSUB 200
130 PRINT ";-------"
142 Q$ = CHR$ (34)
145 FOR A = 1 TO 3: PRINT ";": NEXT
150 PRINT "CLOSE": STOP
200 C = 0: FOR A = A1 TO A2: IF NOT C THEN PRINT " HEX ";
210 CALL 768, PEEK (A):C = C + 1: IF C = 8 THEN C = 0: PRINT
220 NEXT : IF C THEN PRINT
230 RETURN
1000 AA = DP:BB = SP
1010 A = PEEK (SP): ON A = PEEK (SP + 1) GOTO 2000
1020 SP = SP + 1: POKE DP,A:DP = DP + 1:CO = CO - 1
1040 IF CO THEN 1010
1050 PRINT DP - AA,SP - BB: RETURN
2000 C = 1:RB = A: IF CO = 1 THEN 1020
2010 IF PEEK (SP) < > PEEK (SP + 1) THEN 3000
2020 SP = SP + 1:C = C + 1:CO = CO - 1: IF CO THEN 2010
3000 POKE DP,C + 128: POKE DP + 1,RB:DP = DP + 2
3005 SP = SP + (CO > 0):CO = CO - (CO > 0)
3010 GOTO 1040
60000 FOR A = 768 TO 774: READ B: POKE A,B: NEXT : RETURN : DATA 32,76,231,138,76,218,253
63999 PRINT "SAVE COMP NUMB BORD"

View File

@ -0,0 +1,9 @@
5 A = 25344:E = A: PRINT "MONC"
10 DEF FN A(A) = PEEK ( - 21920) + PEEK ( - 21919) * 256
20 READ A$: IF A$ < > "" THEN PRINT "BLOAD"A$",A"E:E = E + FN A(0): GOTO 20
30 READ V: IF V THEN GOSUB 100: GOTO 30
40 END
100 F$ = "[CD],V" + STR$ (V): PRINT "UNLOCK "F$: PRINT "BSAVE "F$",A"A",L"E - A: PRINT "LOCK "F$: RETURN
1000 DATA "O:SUPPHEADER","O:D000","O:SUPPGET",
60000 DATA 11,14,15,
63999 PRINT "SAVE MAKE SUPP"

View File

@ -0,0 +1,523 @@
1000- 00 BRK
1001- 00 BRK
1002- 00 BRK
1003- 00 BRK
1004- 00 BRK
1005- 00 BRK
1006- 00 BRK
1007- 00 BRK
1008- 80 80 BRA $0F8A
100A- 80 80 BRA $0F8C
100C- 80 80 BRA $0F8E
100E- 80 80 BRA $0F90
1010- 00 BRK
1011- 00 BRK
1012- 00 BRK
1013- 00 BRK
1014- 00 BRK
1015- 00 BRK
1016- 00 BRK
1017- 00 BRK
1018- 80 80 BRA $0F9A
101A- 80 80 BRA $0F9C
101C- 80 80 BRA $0F9E
101E- 80 80 BRA $0FA0
1020- 00 BRK
1021- 00 BRK
1022- 00 BRK
1023- 00 BRK
1024- 00 BRK
1025- 00 BRK
1026- 00 BRK
1027- 00 BRK
1028- 80 80 BRA $0FAA
102A- 80 80 BRA $0FAC
102C- 80 80 BRA $0FAE
102E- 80 80 BRA $0FB0
1030- 00 BRK
1031- 00 BRK
1032- 00 BRK
1033- 00 BRK
1034- 00 BRK
1035- 00 BRK
1036- 00 BRK
1037- 00 BRK
1038- 80 80 BRA $0FBA
103A- 80 80 BRA $0FBC
103C- 80 80 BRA $0FBE
103E- 80 80 BRA $0FC0
1040- 28 PLP
1041- 28 PLP
1042- 28 PLP
1043- 28 PLP
1044- 28 PLP
1045- 28 PLP
1046- 28 PLP
1047- 28 PLP
1048- A8 TAY
1049- A8 TAY
104A- A8 TAY
104B- A8 TAY
104C- A8 TAY
104D- A8 TAY
104E- A8 TAY
104F- A8 TAY
1050- 28 PLP
1051- 28 PLP
1052- 28 PLP
1053- 28 PLP
1054- 28 PLP
1055- 28 PLP
1056- 28 PLP
1057- 28 PLP
1058- A8 TAY
1059- A8 TAY
105A- A8 TAY
105B- A8 TAY
105C- A8 TAY
105D- A8 TAY
105E- A8 TAY
105F- A8 TAY
1060- 28 PLP
1061- 28 PLP
1062- 28 PLP
1063- 28 PLP
1064- 28 PLP
1065- 28 PLP
1066- 28 PLP
1067- 28 PLP
1068- A8 TAY
1069- A8 TAY
106A- A8 TAY
106B- A8 TAY
106C- A8 TAY
106D- A8 TAY
106E- A8 TAY
106F- A8 TAY
1070- 28 PLP
1071- 28 PLP
1072- 28 PLP
1073- 28 PLP
1074- 28 PLP
1075- 28 PLP
1076- 28 PLP
1077- 28 PLP
1078- A8 TAY
1079- A8 TAY
107A- A8 TAY
107B- A8 TAY
107C- A8 TAY
107D- A8 TAY
107E- A8 TAY
107F- A8 TAY
1080- 50 50 BVC $10D2
1082- 50 50 BVC $10D4
1084- 50 50 BVC $10D6
1086- 50 50 BVC $10D8
1088- D0 D0 BNE $105A
108A- D0 D0 BNE $105C
108C- D0 D0 BNE $105E
108E- D0 D0 BNE $1060
1090- 50 50 BVC $10E2
1092- 50 50 BVC $10E4
1094- 50 50 BVC $10E6
1096- 50 50 BVC $10E8
1098- D0 D0 BNE $106A
109A- D0 D0 BNE $106C
109C- D0 D0 BNE $106E
109E- D0 D0 BNE $1070
10A0- 50 50 BVC $10F2
10A2- 50 50 BVC $10F4
10A4- 50 50 BVC $10F6
10A6- 50 50 BVC $10F8
10A8- D0 D0 BNE $107A
10AA- D0 D0 BNE $107C
10AC- D0 D0 BNE $107E
10AE- D0 D0 BNE $1080
10B0- 50 50 BVC $1102
10B2- 50 50 BVC $1104
10B4- 50 50 BVC $1106
10B6- 50 50 BVC $1108
10B8- D0 D0 BNE $108A
10BA- D0 D0 BNE $108C
10BC- D0 D0 BNE $108E
10BE- D0 D0 BNE $1090
10C0- 00 BRK
10C1- 00 BRK
10C2- 00 BRK
10C3- 00 BRK
10C4- 00 BRK
10C5- 00 BRK
10C6- 00 BRK
10C7- 00 BRK
10C8- 00 BRK
10C9- 00 BRK
10CA- 00 BRK
10CB- 00 BRK
10CC- 00 BRK
10CD- 00 BRK
10CE- 00 BRK
10CF- 00 BRK
10D0- 00 BRK
10D1- 00 BRK
10D2- 00 BRK
10D3- 00 BRK
10D4- 00 BRK
10D5- 00 BRK
10D6- 00 BRK
10D7- 00 BRK
10D8- 00 BRK
10D9- 00 BRK
10DA- 00 BRK
10DB- 00 BRK
10DC- 00 BRK
10DD- 00 BRK
10DE- 00 BRK
10DF- 00 BRK
10E0- 00 BRK
10E1- 00 BRK
10E2- 00 BRK
10E3- 00 BRK
10E4- 00 BRK
10E5- 00 BRK
10E6- 00 BRK
10E7- 00 BRK
10E8- 00 BRK
10E9- 00 BRK
10EA- 00 BRK
10EB- 00 BRK
10EC- 00 BRK
10ED- 00 BRK
10EE- 00 BRK
10EF- 00 BRK
10F0- 00 BRK
10F1- 00 BRK
10F2- 00 BRK
10F3- 00 BRK
10F4- 00 BRK
10F5- 00 BRK
10F6- 00 BRK
10F7- 00 BRK
10F8- 00 BRK
10F9- 00 BRK
10FA- 00 BRK
10FB- 00 BRK
10FC- 00 BRK
10FD- 00 BRK
10FE- 00 BRK
10FF- 00 BRK
1100- 20 24 28 JSR $2824
1103- 2C 30 34 BIT $3430
1106- 38 SEC
1107- 3C 20 24 BIT $2420,X
110A- 28 PLP
110B- 2C 30 34 BIT $3430
110E- 38 SEC
110F- 3C 21 25 BIT $2521,X
1112- 29 2D AND #$2D
1114- 31 35 AND ($35),Y
1116- 39 3D 21 AND $213D,Y
1119- 25 29 AND $29
111B- 2D 31 35 AND $3531
111E- 39 3D 22 AND $223D,Y
1121- 26 2A ROL $2A
1123- 2E 32 36 ROL $3632
1126- 3A DEC
1127- 3E 22 26 ROL $2622,X
112A- 2A ROL
112B- 2E 32 36 ROL $3632
112E- 3A DEC
112F- 3E 23 27 ROL $2723,X
1132- 2B ???
1133- 2F ???
1134- 33 ???
1135- 37 ???
1136- 3B ???
1137- 3F ???
1138- 23 ???
1139- 27 ???
113A- 2B ???
113B- 2F ???
113C- 33 ???
113D- 37 ???
113E- 3B ???
113F- 3F ???
1140- 20 24 28 JSR $2824
1143- 2C 30 34 BIT $3430
1146- 38 SEC
1147- 3C 20 24 BIT $2420,X
114A- 28 PLP
114B- 2C 30 34 BIT $3430
114E- 38 SEC
114F- 3C 21 25 BIT $2521,X
1152- 29 2D AND #$2D
1154- 31 35 AND ($35),Y
1156- 39 3D 21 AND $213D,Y
1159- 25 29 AND $29
115B- 2D 31 35 AND $3531
115E- 39 3D 22 AND $223D,Y
1161- 26 2A ROL $2A
1163- 2E 32 36 ROL $3632
1166- 3A DEC
1167- 3E 22 26 ROL $2622,X
116A- 2A ROL
116B- 2E 32 36 ROL $3632
116E- 3A DEC
116F- 3E 23 27 ROL $2723,X
1172- 2B ???
1173- 2F ???
1174- 33 ???
1175- 37 ???
1176- 3B ???
1177- 3F ???
1178- 23 ???
1179- 27 ???
117A- 2B ???
117B- 2F ???
117C- 33 ???
117D- 37 ???
117E- 3B ???
117F- 3F ???
1180- 20 24 28 JSR $2824
1183- 2C 30 34 BIT $3430
1186- 38 SEC
1187- 3C 20 24 BIT $2420,X
118A- 28 PLP
118B- 2C 30 34 BIT $3430
118E- 38 SEC
118F- 3C 21 25 BIT $2521,X
1192- 29 2D AND #$2D
1194- 31 35 AND ($35),Y
1196- 39 3D 21 AND $213D,Y
1199- 25 29 AND $29
119B- 2D 31 35 AND $3531
119E- 39 3D 22 AND $223D,Y
11A1- 26 2A ROL $2A
11A3- 2E 32 36 ROL $3632
11A6- 3A DEC
11A7- 3E 22 26 ROL $2622,X
11AA- 2A ROL
11AB- 2E 32 36 ROL $3632
11AE- 3A DEC
11AF- 3E 23 27 ROL $2723,X
11B2- 2B ???
11B3- 2F ???
11B4- 33 ???
11B5- 37 ???
11B6- 3B ???
11B7- 3F ???
11B8- 23 ???
11B9- 27 ???
11BA- 2B ???
11BB- 2F ???
11BC- 33 ???
11BD- 37 ???
11BE- 3B ???
11BF- 3F ???
11C0- A4 01 LDY $01
11C2- B9 00 10 LDA $1000,Y
11C5- 85 3A STA $3A
11C7- B9 00 11 LDA $1100,Y
11CA- 85 3B STA $3B
11CC- A4 00 LDY $00
11CE- B1 3A LDA ($3A),Y
11D0- 49 7F EOR #$7F
11D2- 91 3A STA ($3A),Y
11D4- 60 RTS
11D5- 44 ???
11D6- 20 E3 03 JSR $03E3
11D9- 20 20 F4 JSR $F420
11DC- 11 F0 ORA ($F0),Y
11DE- 14 20 TRB $20
11E0- A5 00 LDA $00
11E2- 4C DA FD JMP $FDDA F8ROM:PRBYTE
11E5- 20 61 20 JSR $2061
11E8- 66 6C ROR $6C
11EA- 6F ???
11EB- 70 70 BVS $125D
11ED- 79 0A 0D ADC $0D0A,Y
11F0- 00 BRK
11F1- A9 FF LDA #$FF
11F3- 60 RTS
11F4- 8D 71 12 STA $1271
11F7- CA DEX
11F8- 8E 70 12 STX $1270
11FB- CE 71 12 DEC $1271
11FE- A2 62 LDX #$62
1200- A0 00 LDY #$00
1202- A9 40 LDA #$40
1204- 84 06 STY $06
1206- 85 07 STA $07
1208- A6 01 LDX $01
120A- 20 7D 12 JSR $127D
120D- 20 63 12 JSR $1263
1210- 85 09 STA $09
1212- 24 08 BIT $08
1214- 30 3B BMI $1251
1216- 24 0A BIT $0A
1218- 10 08 BPL $1222
121A- C9 00 CMP #$00
121C- F0 0A BEQ $1228
121E- C9 7F CMP #$7F
1220- F0 06 BEQ $1228
1222- 20 53 12 JSR $1253
1225- 4C 0D 12 JMP $120D
1228- 8D 35 12 STA $1235
122B- 29 40 AND #$40
122D- 09 81 ORA #$81
122F- 85 09 STA $09
1231- 20 63 12 JSR $1263
1234- C9 00 CMP #$00
1236- D0 11 BNE $1249
1238- E6 09 INC $09
123A- 24 08 BIT $08
123C- 30 13 BMI $1251
123E- A5 09 LDA $09
1240- 29 3F AND #$3F
1242- D0 ED BNE $1231
1244- C6 09 DEC $09
1246- AD 35 12 LDA $1235
1249- 48 PHA
124A- 20 51 12 JSR $1251
124D- 68 PLA
124E- 4C 10 12 JMP $1210
1251- A5 09 LDA $09
1253- 8C 61 12 STY $1261
1256- A0 00 LDY #$00
1258- 91 06 STA ($06),Y
125A- E6 06 INC $06
125C- D0 02 BNE $1260
125E- E6 07 INC $07
1260- A0 00 LDY #$00
1262- 60 RTS
1263- B1 04 LDA ($04),Y
1265- 49 7F EOR #$7F
1267- 91 04 STA ($04),Y
1269- 49 7F EOR #$7F
126B- C8 INY
126C- C4 02 CPY $02
126E- 90 08 BCC $1278
1270- 48 PHA
1271- E8 INX
1272- 20 7D 12 JSR $127D
1275- 68 PLA
1276- E4 03 CPX $03
1278- 66 08 ROR $08
127A- 29 7F AND #$7F
127C- 60 RTS
127D- BD 00 10 LDA $1000,X
1280- 85 04 STA $04
1282- BD 00 11 LDA $1100,X
1285- 85 05 STA $05
1287- A4 00 LDY $00
1289- 60 RTS
128A- 00 BRK
128B- 00 BRK
128C- 00 BRK
128D- 00 BRK
128E- 00 BRK
128F- 00 BRK
1290- 00 BRK
1291- 00 BRK
1292- 00 BRK
1293- 00 BRK
1294- 00 BRK
1295- 00 BRK
1296- 00 BRK
1297- 00 BRK
1298- 00 BRK
1299- 00 BRK
129A- 00 BRK
129B- 00 BRK
129C- 00 BRK
129D- 00 BRK
129E- 00 BRK
129F- 00 BRK
12A0- 00 BRK
12A1- 00 BRK
12A2- 00 BRK
12A3- 00 BRK
12A4- 00 BRK
12A5- 00 BRK
12A6- 00 BRK
12A7- 00 BRK
12A8- 00 BRK
12A9- 00 BRK
12AA- 00 BRK
12AB- 00 BRK
12AC- 00 BRK
12AD- 00 BRK
12AE- 00 BRK
12AF- 00 BRK
12B0- 00 BRK
12B1- 00 BRK
12B2- 00 BRK
12B3- 00 BRK
12B4- 00 BRK
12B5- 00 BRK
12B6- 00 BRK
12B7- 00 BRK
12B8- 00 BRK
12B9- 00 BRK
12BA- 00 BRK
12BB- 00 BRK
12BC- 00 BRK
12BD- 00 BRK
12BE- 00 BRK
12BF- 00 BRK
12C0- 00 BRK
12C1- 00 BRK
12C2- 00 BRK
12C3- 00 BRK
12C4- 00 BRK
12C5- 00 BRK
12C6- 00 BRK
12C7- 00 BRK
12C8- 00 BRK
12C9- 00 BRK
12CA- 00 BRK
12CB- 00 BRK
12CC- 00 BRK
12CD- 00 BRK
12CE- 00 BRK
12CF- 00 BRK
12D0- 00 BRK
12D1- 00 BRK
12D2- 00 BRK
12D3- 00 BRK
12D4- 00 BRK
12D5- 00 BRK
12D6- 00 BRK
12D7- 00 BRK
12D8- 00 BRK
12D9- 00 BRK
12DA- 00 BRK
12DB- 00 BRK
12DC- 00 BRK
12DD- 00 BRK
12DE- 00 BRK
12DF- 00 BRK
12E0- 00 BRK
12E1- 00 BRK
12E2- 00 BRK
12E3- 00 BRK
12E4- 00 BRK
12E5- 00 BRK
12E6- 00 BRK
12E7- 00 BRK
12E8- 00 BRK
12E9- 00 BRK
12EA- 00 BRK
12EB- 00 BRK
12EC- 00 BRK
12ED- 00 BRK
12EE- 00 BRK
12EF- 00 BRK
12F0- 00 BRK
12F1- 00 BRK
12F2- 00 BRK
12F3- 00 BRK
12F4- 00 BRK
12F5- 00 BRK
12F6- 00 BRK
12F7- 00 BRK

View File

@ -0,0 +1,104 @@
INS
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
;-------
;
;
;
USR "BOEDIT,V12",ORG
END

View File

@ -0,0 +1,12 @@
INS
PAGE3DAT HEX 877F7E3F7E1F7E3F
HEX 7E3F7E3F7E1F7C8E
HEX 7F0F7E677C7F7C3F
HEX 7E1F7F4F7F077C8E
HEX 7F1F7C4F797F793F
HEX 7C7F794F791F7C88
HEX 7F
;-------
;
;
;

View File

@ -0,0 +1,779 @@
1000- 7F ???
1001- 7F ???
1002- 00 BRK
1003- 00 BRK
1004- 00 BRK
1005- 00 BRK
1006- 00 BRK
1007- 00 BRK
1008- 00 BRK
1009- 00 BRK
100A- 00 BRK
100B- 00 BRK
100C- 00 BRK
100D- 00 BRK
100E- 00 BRK
100F- 00 BRK
1010- 00 BRK
1011- 00 BRK
1012- 00 BRK
1013- 00 BRK
1014- 00 BRK
1015- 00 BRK
1016- 00 BRK
1017- 00 BRK
1018- 7F ???
1019- 7F ???
101A- 01 01 ORA ($01,X)
101C- 01 01 ORA ($01,X)
101E- 01 01 ORA ($01,X)
1020- 01 01 ORA ($01,X)
1022- 01 01 ORA ($01,X)
1024- 01 01 ORA ($01,X)
1026- 01 01 ORA ($01,X)
1028- 01 01 ORA ($01,X)
102A- 01 01 ORA ($01,X)
102C- 01 01 ORA ($01,X)
102E- 01 00 ORA ($00,X)
1030- 00 BRK
1031- 00 BRK
1032- 00 BRK
1033- 00 BRK
1034- 00 BRK
1035- 00 BRK
1036- 00 BRK
1037- 00 BRK
1038- 00 BRK
1039- 00 BRK
103A- 00 BRK
103B- 00 BRK
103C- 00 BRK
103D- 00 BRK
103E- 00 BRK
103F- 00 BRK
1040- 00 BRK
1041- 00 BRK
1042- 00 BRK
1043- 00 BRK
1044- 00 BRK
1045- 00 BRK
1046- 00 BRK
1047- 00 BRK
1048- 01 01 ORA ($01,X)
104A- 01 01 ORA ($01,X)
104C- 01 01 ORA ($01,X)
104E- 01 01 ORA ($01,X)
1050- 01 01 ORA ($01,X)
1052- 01 01 ORA ($01,X)
1054- 01 01 ORA ($01,X)
1056- 01 01 ORA ($01,X)
1058- 01 01 ORA ($01,X)
105A- 01 01 ORA ($01,X)
105C- 01 01 ORA ($01,X)
105E- 01 00 ORA ($00,X)
1060- 7F ???
1061- 7F ???
1062- 00 BRK
1063- 00 BRK
1064- 00 BRK
1065- 00 BRK
1066- 00 BRK
1067- 00 BRK
1068- 00 BRK
1069- 00 BRK
106A- 00 BRK
106B- 00 BRK
106C- 00 BRK
106D- 00 BRK
106E- 00 BRK
106F- 00 BRK
1070- 00 BRK
1071- 00 BRK
1072- 00 BRK
1073- 00 BRK
1074- 00 BRK
1075- 00 BRK
1076- 00 BRK
1077- 00 BRK
1078- 7F ???
1079- 7F ???
107A- 00 BRK
107B- 00 BRK
107C- 00 BRK
107D- 00 BRK
107E- 00 BRK
107F- 00 BRK
1080- 00 BRK
1081- 00 BRK
1082- 00 BRK
1083- 00 BRK
1084- 00 BRK
1085- 00 BRK
1086- 00 BRK
1087- 00 BRK
1088- 00 BRK
1089- 00 BRK
108A- 00 BRK
108B- 00 BRK
108C- 00 BRK
108D- 00 BRK
108E- 00 BRK
108F- 00 BRK
1090- 7F ???
1091- 7F ???
1092- 03 ???
1093- 00 BRK
1094- 03 ???
1095- 00 BRK
1096- 03 ???
1097- 00 BRK
1098- 03 ???
1099- 00 BRK
109A- 03 ???
109B- 00 BRK
109C- 03 ???
109D- 00 BRK
109E- 03 ???
109F- 00 BRK
10A0- 03 ???
10A1- 00 BRK
10A2- 03 ???
10A3- 00 BRK
10A4- 03 ???
10A5- 00 BRK
10A6- 03 ???
10A7- 00 BRK
10A8- 03 ???
10A9- 00 BRK
10AA- 03 ???
10AB- 00 BRK
10AC- 7F ???
10AD- 7F ???
10AE- 00 BRK
10AF- 00 BRK
10B0- 00 BRK
10B1- 00 BRK
10B2- 00 BRK
10B3- 00 BRK
10B4- 00 BRK
10B5- 00 BRK
10B6- 00 BRK
10B7- 00 BRK
10B8- 00 BRK
10B9- 00 BRK
10BA- 00 BRK
10BB- 00 BRK
10BC- 00 BRK
10BD- 00 BRK
10BE- 00 BRK
10BF- 00 BRK
10C0- 00 BRK
10C1- 00 BRK
10C2- 00 BRK
10C3- 00 BRK
10C4- 00 BRK
10C5- 00 BRK
10C6- 00 BRK
10C7- 00 BRK
10C8- 03 ???
10C9- 00 BRK
10CA- 03 ???
10CB- 00 BRK
10CC- 03 ???
10CD- 00 BRK
10CE- 03 ???
10CF- 00 BRK
10D0- 03 ???
10D1- 00 BRK
10D2- 03 ???
10D3- 00 BRK
10D4- 03 ???
10D5- 00 BRK
10D6- 03 ???
10D7- 00 BRK
10D8- 03 ???
10D9- 00 BRK
10DA- 03 ???
10DB- 00 BRK
10DC- 03 ???
10DD- 00 BRK
10DE- 03 ???
10DF- 00 BRK
10E0- 03 ???
10E1- 00 BRK
10E2- 03 ???
10E3- 00 BRK
10E4- 7F ???
10E5- 7F ???
10E6- 00 BRK
10E7- 00 BRK
10E8- 00 BRK
10E9- 00 BRK
10EA- 00 BRK
10EB- 00 BRK
10EC- 00 BRK
10ED- 00 BRK
10EE- 00 BRK
10EF- 40 RTI
10F0- 40 RTI
10F1- 40 RTI
10F2- 40 RTI
10F3- 40 RTI
10F4- 40 RTI
10F5- 40 RTI
10F6- 40 RTI
10F7- 40 RTI
10F8- 40 RTI
10F9- 7F ???
10FA- 7F ???
10FB- 00 BRK
10FC- 7F ???
10FD- 7F ???
10FE- 01 01 ORA ($01,X)
1100- 01 01 ORA ($01,X)
1102- 01 01 ORA ($01,X)
1104- 01 01 ORA ($01,X)
1106- 01 01 ORA ($01,X)
1108- 01 01 ORA ($01,X)
110A- 01 01 ORA ($01,X)
110C- 01 01 ORA ($01,X)
110E- 01 01 ORA ($01,X)
1110- 01 01 ORA ($01,X)
1112- 01 00 ORA ($00,X)
1114- 01 01 ORA ($01,X)
1116- 01 01 ORA ($01,X)
1118- 01 01 ORA ($01,X)
111A- 01 01 ORA ($01,X)
111C- 01 01 ORA ($01,X)
111E- 01 01 ORA ($01,X)
1120- 01 01 ORA ($01,X)
1122- 01 01 ORA ($01,X)
1124- 01 01 ORA ($01,X)
1126- 01 01 ORA ($01,X)
1128- 01 01 ORA ($01,X)
112A- 01 00 ORA ($00,X)
112C- 01 01 ORA ($01,X)
112E- 01 01 ORA ($01,X)
1130- 01 01 ORA ($01,X)
1132- 01 01 ORA ($01,X)
1134- 01 01 ORA ($01,X)
1136- 01 01 ORA ($01,X)
1138- 01 01 ORA ($01,X)
113A- 01 01 ORA ($01,X)
113C- 01 01 ORA ($01,X)
113E- 01 01 ORA ($01,X)
1140- 01 01 ORA ($01,X)
1142- 01 00 ORA ($00,X)
1144- 7F ???
1145- 7F ???
1146- 00 BRK
1147- 00 BRK
1148- 00 BRK
1149- 00 BRK
114A- 00 BRK
114B- 00 BRK
114C- 00 BRK
114D- 00 BRK
114E- 00 BRK
114F- 7F ???
1150- 7F ???
1151- 00 BRK
1152- 00 BRK
1153- 00 BRK
1154- 00 BRK
1155- 00 BRK
1156- 00 BRK
1157- 00 BRK
1158- 00 BRK
1159- 00 BRK
115A- 00 BRK
115B- 00 BRK
115C- 7F ???
115D- 7F ???
115E- 00 BRK
115F- 00 BRK
1160- 00 BRK
1161- 00 BRK
1162- 00 BRK
1163- 00 BRK
1164- 00 BRK
1165- 00 BRK
1166- 00 BRK
1167- 7F ???
1168- 7F ???
1169- 00 BRK
116A- 00 BRK
116B- 00 BRK
116C- 00 BRK
116D- 00 BRK
116E- 00 BRK
116F- 00 BRK
1170- 00 BRK
1171- 00 BRK
1172- 00 BRK
1173- 00 BRK
1174- 7F ???
1175- 7F ???
1176- 03 ???
1177- 00 BRK
1178- 03 ???
1179- 00 BRK
117A- 03 ???
117B- 00 BRK
117C- 03 ???
117D- 00 BRK
117E- 03 ???
117F- 00 BRK
1180- 03 ???
1181- 00 BRK
1182- 03 ???
1183- 60 RTS
1184- 03 ???
1185- 60 RTS
1186- 03 ???
1187- 60 RTS
1188- 03 ???
1189- 60 RTS
118A- 03 ???
118B- 60 RTS
118C- 03 ???
118D- 60 RTS
118E- 03 ???
118F- 7F ???
1190- 7F ???
1191- 7F ???
1192- 00 BRK
1193- 00 BRK
1194- 00 BRK
1195- 00 BRK
1196- 00 BRK
1197- 00 BRK
1198- 00 BRK
1199- 00 BRK
119A- 00 BRK
119B- 00 BRK
119C- 00 BRK
119D- 00 BRK
119E- 7F ???
119F- 7F ???
11A0- 00 BRK
11A1- 00 BRK
11A2- 00 BRK
11A3- 00 BRK
11A4- 00 BRK
11A5- 00 BRK
11A6- 00 BRK
11A7- 00 BRK
11A8- 00 BRK
11A9- 00 BRK
11AA- 00 BRK
11AB- 00 BRK
11AC- 03 ???
11AD- 03 ???
11AE- 03 ???
11AF- 03 ???
11B0- 03 ???
11B1- 03 ???
11B2- 03 ???
11B3- 03 ???
11B4- 03 ???
11B5- 03 ???
11B6- 03 ???
11B7- 03 ???
11B8- 03 ???
11B9- 03 ???
11BA- 03 ???
11BB- 03 ???
11BC- 03 ???
11BD- 03 ???
11BE- 03 ???
11BF- 03 ???
11C0- 03 ???
11C1- 03 ???
11C2- 03 ???
11C3- 03 ???
11C4- 03 ???
11C5- 03 ???
11C6- 03 ???
11C7- 03 ???
11C8- 7F ???
11C9- 7F ???
11CA- 7F ???
11CB- 7F ???
11CC- 7F ???
11CD- 7F ???
11CE- 7F ???
11CF- 7F ???
11D0- 7F ???
11D1- 7F ???
11D2- 7F ???
11D3- 7F ???
11D4- 7F ???
11D5- 7F ???
11D6- 7F ???
11D7- 7F ???
11D8- 7F ???
11D9- 7F ???
11DA- 7F ???
11DB- 7F ???
11DC- 7F ???
11DD- 7F ???
11DE- 7F ???
11DF- 00 BRK
11E0- 7F ???
11E1- 7F ???
11E2- 7F ???
11E3- 7F ???
11E4- 7F ???
11E5- 7F ???
11E6- 7F ???
11E7- 7F ???
11E8- 7F ???
11E9- 7F ???
11EA- 7F ???
11EB- 7F ???
11EC- 7F ???
11ED- 7F ???
11EE- 7F ???
11EF- 7F ???
11F0- 7F ???
11F1- 7F ???
11F2- 7F ???
11F3- 7F ???
11F4- 7F ???
11F5- 7F ???
11F6- 7F ???
11F7- 00 BRK
11F8- 7F ???
11F9- 7F ???
11FA- 7F ???
11FB- 7F ???
11FC- 7F ???
11FD- 7F ???
11FE- 7F ???
11FF- 7F ???
1200- 7F ???
1201- 7F ???
1202- 7F ???
1203- 7F ???
1204- 7F ???
1205- 7F ???
1206- 7F ???
1207- 7F ???
1208- 7F ???
1209- 7F ???
120A- 7F ???
120B- 7F ???
120C- 7F ???
120D- 7F ???
120E- 7F ???
120F- 7F ???
1210- 7F ???
1211- 7F ???
1212- 7F ???
1213- 7F ???
1214- 00 BRK
1215- 03 ???
1216- 0F ???
1217- 1F ???
1218- 1C 3D 30 TRB $303D
121B- 3A DEC
121C- 30 75 BMI $1293
121E- 60 RTS
121F- 6A ROR
1220- 60 RTS
1221- 75 60 ADC $60,X
1223- 3A DEC
1224- 30 35 BMI $125B
1226- 38 SEC
1227- 1E 1F 0F ASL $0F1F,X
122A- 03 ???
122B- 00 BRK
122C- 00 BRK
122D- 40 RTI
122E- 70 78 BVS $12A8
1230- 38 SEC
1231- 3C 0C 5C BIT $5C0C,X
1234- 0C 2E 06 TSB $062E
1237- 56 06 LSR $06,X
1239- 2E 06 5C ROL $5C06
123C- 0C 2C 5C TSB $5C2C
123F- 78 SEI
1240- 78 SEI
1241- 70 40 BVS $1283
1243- 00 BRK
1244- 40 RTI
1245- 03 ???
1246- 70 0F BVS $1257
1248- 18 CLC
1249- 19 2C 34 ORA $342C,Y
124C- 0C 31 26 TSB $2631
124F- 64 0E STZ $0E
1251- 71 26 ADC ($26),Y
1253- 64 0C STZ $0C
1255- 31 2C AND ($2C),Y
1257- 34 18 BIT $18,X
1259- 19 70 0F ORA $0F70,Y
125C- 40 RTI
125D- 03 ???
125E- 00 BRK
125F- 00 BRK
1260- 71 73 ADC ($73),Y
1262- 73 ???
1263- 74 74 STZ $74,X
1265- 0C 0C 1C TSB $1C0C
1268- 1C 21 21 TRB $2121
126B- 61 21 ADC ($21,X)
126D- 21 1C AND ($1C,X)
126F- 1C 0C 0C TRB $0C0C
1272- 74 74 STZ $74,X
1274- 73 ???
1275- 73 ???
1276- 71 00 ADC ($00),Y
1278- 47 ???
1279- 67 ???
127A- 67 ???
127B- 17 ???
127C- 17 ???
127D- 18 CLC
127E- 18 CLC
127F- 1C 1C 42 TRB $421C
1282- 42 ???
1283- 43 ???
1284- 42 ???
1285- 42 ???
1286- 1C 1C 18 TRB $181C
1289- 18 CLC
128A- 17 ???
128B- 17 ???
128C- 67 ???
128D- 67 ???
128E- 47 ???
128F- 00 BRK
1290- 47 ???
1291- 71 67 ADC ($67),Y
1293- 73 ???
1294- 17 ???
1295- 74 18 STZ $18,X
1297- 0C 1C 1C TSB $1C1C
129A- 02 ???
129B- 20 63 63 JSR $6363
129E- 63 ???
129F- 63 ???
12A0- 02 ???
12A1- 20 1C 1C JSR $1C1C
12A4- 18 CLC
12A5- 0C 17 74 TSB $7417
12A8- 67 ???
12A9- 73 ???
12AA- 47 ???
12AB- 71 00 ADC ($00),Y
12AD- 01 02 ORA ($02,X)
12AF- 0A ASL
12B0- 16 12 ASL $12,X
12B2- 12 11 ORA ($11)
12B4- 09 1D ORA #$1D
12B6- 23 ???
12B7- 23 ???
12B8- 23 ???
12B9- 23 ???
12BA- 1D 09 11 ORA $1109,X
12BD- 12 12 ORA ($12)
12BF- 16 0A ASL $0A,X
12C1- 02 ???
12C2- 01 00 ORA ($00,X)
12C4- 00 BRK
12C5- 60 RTS
12C6- 10 14 BPL $12DC
12C8- 1A INC
12C9- 12 12 ORA ($12)
12CB- 22 ???
12CC- 64 6E STZ $6E
12CE- 71 71 ADC ($71),Y
12D0- 71 71 ADC ($71),Y
12D2- 6E 64 22 ROR $2264
12D5- 12 12 ORA ($12)
12D7- 1A INC
12D8- 14 10 TRB $10
12DA- 60 RTS
12DB- 00 BRK
12DC- 00 BRK
12DD- 00 BRK
12DE- 40 RTI
12DF- 01 38 ORA ($38,X)
12E1- 0E 24 12 ASL $1224
12E4- 24 12 BIT $12
12E6- 5C ???
12E7- 1D 62 23 ORA $2362,X
12EA- 62 ???
12EB- 23 ???
12EC- 5C ???
12ED- 1D 24 12 ORA $1224,X
12F0- 24 12 BIT $12
12F2- 38 SEC
12F3- 0E 40 01 ASL $0140
12F6- 00 BRK
12F7- 00 BRK
12F8- 00 BRK
12F9- 01 01 ORA ($01,X)
12FB- 01 03 ORA ($03,X)
12FD- 03 ???
12FE- 03 ???
12FF- 07 ???
1300- 07 ???
1301- 0F ???
1302- 3F ???
1303- 7F ???
1304- 3F ???
1305- 0F ???
1306- 07 ???
1307- 07 ???
1308- 03 ???
1309- 03 ???
130A- 03 ???
130B- 01 01 ORA ($01,X)
130D- 01 00 ORA ($00,X)
130F- 00 BRK
1310- 00 BRK
1311- 00 BRK
1312- 00 BRK
1313- 00 BRK
1314- 40 RTI
1315- 40 RTI
1316- 40 RTI
1317- 60 RTS
1318- 60 RTS
1319- 70 7C BVS $1397
131B- 7E 7C 70 ROR $707C,X
131E- 60 RTS
131F- 60 RTS
1320- 40 RTI
1321- 40 RTI
1322- 40 RTI
1323- 00 BRK
1324- 00 BRK
1325- 00 BRK
1326- 00 BRK
1327- 00 BRK
1328- 00 BRK
1329- 01 00 ORA ($00,X)
132B- 01 40 ORA ($40,X)
132D- 03 ???
132E- 40 RTI
132F- 03 ???
1330- 60 RTS
1331- 07 ???
1332- 78 SEI
1333- 1F ???
1334- 7E 7F 78 ROR $787F,X
1337- 1F ???
1338- 60 RTS
1339- 07 ???
133A- 40 RTI
133B- 03 ???
133C- 40 RTI
133D- 03 ???
133E- 00 BRK
133F- 01 00 ORA ($00,X)
1341- 01 00 ORA ($00,X)
1343- 00 BRK
1344- 00 BRK
1345- 00 BRK
1346- 01 03 ORA ($03,X)
1348- 03 ???
1349- 06 06 ASL $06
134B- 0C 0C 18 TSB $180C
134E- 30 70 BMI $13C0
1350- 30 18 BMI $136A
1352- 0C 0C 06 TSB $060C
1355- 06 03 ASL $03
1357- 03 ???
1358- 01 00 ORA ($00,X)
135A- 00 BRK
135B- 00 BRK
135C- 38 SEC
135D- 7C 7E 46 JMP ($467E,X)
1360- 03 ???
1361- 03 ???
1362- 03 ???
1363- 03 ???
1364- 07 ???
1365- 06 0C ASL $0C
1367- 18 CLC
1368- 0C 06 07 TSB $0706
136B- 03 ???
136C- 03 ???
136D- 03 ???
136E- 03 ???
136F- 46 7E LSR $7E
1371- 7C 38 00 JMP ($0038,X)
1374- 00 BRK
1375- 00 BRK
1376- 1C 0E 3E TRB $3E0E
1379- 1F ???
137A- 67 ???
137B- 39 43 30 AND $3043,Y
137E- 03 ???
137F- 30 07 BMI $1388
1381- 38 SEC
1382- 0E 1C 1C ASL $1C1C
1385- 0E 38 07 ASL $0738
1388- 60 RTS
1389- 01 40 ORA ($40,X)
138B- 00 BRK
138C- 00 BRK
138D- 00 BRK
138E- 00 BRK
138F- 00 BRK
1390- 7F ???
1391- 7F ???
1392- 48 PHA
1393- 48 PHA
1394- 48 PHA
1395- 4F ???
1396- 4F ???
1397- 48 PHA
1398- 48 PHA
1399- 48 PHA
139A- 48 PHA
139B- 48 PHA
139C- 48 PHA
139D- 48 PHA
139E- 48 PHA
139F- 48 PHA
13A0- 7F ???
13A1- 7F ???
13A2- 40 RTI
13A3- 40 RTI
13A4- 40 RTI
13A5- 7F ???
13A6- 7F ???
13A7- 00 BRK
13A8- 7F ???
13A9- 7F ???
13AA- 01 01 ORA ($01,X)
13AC- 01 7F ORA ($7F,X)
13AE- 7F ???
13AF- 09 09 ORA #$09
13B1- 09 09 ORA #$09
13B3- 09 09 ORA #$09
13B5- 09 09 ORA #$09
13B7- 09 79 ORA #$79
13B9- 79 09 09 ADC $0909,Y
13BC- 09 7F ORA #$7F
13BE- 7F ???
13BF- 00 BRK
13C0- 7F ???
13C1- 7F ???
13C2- 19 40 19 ORA $1940,Y
13C5- 40 RTI
13C6- 79 7F 19 ADC $197F,Y
13C9- 4C 19 4C JMP $4C19
13CC- 19 4C 19 ORA $194C,Y
13CF- 4C 19 4C JMP $4C19
13D2- 19 4C 7F ORA $7F4C,Y
13D5- 4F ???
13D6- 01 4C ORA ($4C,X)
13D8- 01 4C ORA ($4C,X)
13DA- 7F ???
13DB- 7F ???

View File

@ -0,0 +1,267 @@
D000- 4C 4B D0 JMP $D04B
D003- AA TAX
D004- A0 3F LDY #$3F
D006- B9 19 D0 LDA $D019,Y
D009- 99 C0 02 STA $02C0,Y
D00C- 88 DEY
D00D- 10 F7 BPL $D006
D00F- A9 3F LDA #$3F
D011- 48 PHA
D012- A9 FF LDA #$FF
D014- 48 PHA
D015- 8A TXA
D016- 4C C0 02 JMP $02C0
D019- 48 PHA
D01A- 2C 8B C0 BIT $C08B rw:LCBANK1
D01D- 2C 8B C0 BIT $C08B rw:LCBANK1
D020- A2 08 LDX #$08
D022- A0 07 LDY #$07
D024- A9 D2 LDA #$D2
D026- 84 3A STY $3A
D028- 85 3B STA $3B
D02A- A0 00 LDY #$00
D02C- A9 40 LDA #$40
D02E- 84 3C STY $3C
D030- 85 3D STA $3D
D032- B1 3A LDA ($3A),Y
D034- 48 PHA
D035- B1 3C LDA ($3C),Y
D037- 91 3A STA ($3A),Y
D039- 68 PLA
D03A- 91 3C STA ($3C),Y
D03C- C8 INY
D03D- D0 F3 BNE $D032
D03F- E6 3B INC $3B
D041- E6 3D INC $3D
D043- CA DEX
D044- D0 EC BNE $D032
D046- 2C 81 C0 BIT $C081 rw:ROMIN
D049- 68 PLA
D04A- 60 RTS
D04B- A9 00 LDA #$00
D04D- A0 DE LDY #$DE
D04F- AE 00 83 LDX $8300
D052- E0 01 CPX #$01
D054- D0 01 BNE $D057
D056- C8 INY
D057- 85 86 STA $86
D059- 84 87 STY $87
D05B- 20 64 D1 JSR $D164
D05E- A5 88 LDA $88
D060- 0A ASL
D061- 69 20 ADC #$20
D063- 85 83 STA $83
D065- A9 00 LDA #$00
D067- 85 82 STA $82
D069- A0 24 LDY #$24
D06B- 91 82 STA ($82),Y
D06D- 88 DEY
D06E- 10 FB BPL $D06B
D070- A9 25 LDA #$25
D072- 85 82 STA $82
D074- A6 88 LDX $88
D076- E4 89 CPX $89
D078- F0 2C BEQ $D0A6
D07A- CA DEX
D07B- E4 89 CPX $89
D07D- F0 27 BEQ $D0A6
D07F- A2 02 LDX #$02
D081- A9 00 LDA #$00
D083- 20 31 D1 JSR $D131
D086- A9 00 LDA #$00
D088- 20 DE D0 JSR $D0DE
D08B- A9 C3 LDA #$C3
D08D- 85 82 STA $82
D08F- E6 83 INC $83
D091- A9 02 LDA #$02
D093- 20 DE D0 JSR $D0DE
D096- A0 0A LDY #$0A
D098- A9 00 LDA #$00
D09A- 91 82 STA ($82),Y
D09C- 88 DEY
D09D- 10 FB BPL $D09A
D09F- E6 88 INC $88
D0A1- C6 8A DEC $8A
D0A3- D0 B9 BNE $D05E
D0A5- 60 RTS
D0A6- A9 01 LDA #$01
D0A8- A6 89 LDX $89
D0AA- E0 18 CPX #$18
D0AC- F0 02 BEQ $D0B0
D0AE- A9 00 LDA #$00
D0B0- 85 3C STA $3C
D0B2- A2 00 LDX #$00
D0B4- A5 3C LDA $3C
D0B6- 20 31 D1 JSR $D131
D0B9- 20 DC D0 JSR $D0DC
D0BC- A2 01 LDX #$01
D0BE- A5 3C LDA $3C
D0C0- 20 31 D1 JSR $D131
D0C3- A2 11 LDX #$11
D0C5- 20 DC D0 JSR $D0DC
D0C8- CA DEX
D0C9- D0 FA BNE $D0C5
D0CB- E6 3C INC $3C
D0CD- E6 3C INC $3C
D0CF- A2 00 LDX #$00
D0D1- A5 3C LDA $3C
D0D3- 20 31 D1 JSR $D131
D0D6- 20 DC D0 JSR $D0DC
D0D9- 4C 96 D0 JMP $D096
D0DC- A5 3C LDA $3C
D0DE- A0 00 LDY #$00
D0E0- 84 3A STY $3A
D0E2- 31 86 AND ($86),Y
D0E4- 4A LSR
D0E5- 66 3D ROR $3D
D0E7- 4A LSR
D0E8- 90 02 BCC $D0EC
D0EA- A0 16 LDY #$16
D0EC- 84 3B STY $3B
D0EE- A4 3A LDY $3A
D0F0- B1 84 LDA ($84),Y
D0F2- 24 3D BIT $3D
D0F4- 10 04 BPL $D0FA
D0F6- A8 TAY
D0F7- B9 80 90 LDA $9080,Y
D0FA- A4 3B LDY $3B
D0FC- 31 82 AND ($82),Y
D0FE- 8D 0E D1 STA $D10E
D101- A4 3A LDY $3A
D103- B1 80 LDA ($80),Y
D105- 24 3D BIT $3D
D107- 10 04 BPL $D10D
D109- A8 TAY
D10A- B9 80 90 LDA $9080,Y
D10D- 09 00 ORA #$00
D10F- A4 3B LDY $3B
D111- 91 82 STA ($82),Y
D113- B0 02 BCS $D117
D115- C8 INY
D116- C8 INY
D117- E6 3A INC $3A
D119- 88 DEY
D11A- 84 3B STY $3B
D11C- A5 3A LDA $3A
D11E- 49 17 EOR #$17
D120- D0 CC BNE $D0EE
D122- A9 17 LDA #$17
D124- 18 CLC
D125- 65 82 ADC $82
D127- 85 82 STA $82
D129- 90 02 BCC $D12D
D12B- E6 83 INC $83
D12D- 60 RTS
D12E- 04 34 TSB $34
D130- 64 A0 STZ $A0
D132- 00 BRK
D133- 31 86 AND ($86),Y
D135- 45 88 EOR $88
D137- 4A LSR
D138- B0 02 BCS $D13C
D13A- A0 18 LDY #$18
D13C- A5 86 LDA $86
D13E- 85 80 STA $80
D140- A5 87 LDA $87
D142- 85 81 STA $81
D144- 98 TYA
D145- 18 CLC
D146- 7D 2E D1 ADC $D12E,X
D149- 8D 5B D1 STA $D15B
D14C- 18 CLC
D14D- 65 80 ADC $80
D14F- 85 80 STA $80
D151- 90 02 BCC $D155
D153- E6 81 INC $81
D155- A9 00 LDA #$00
D157- A0 BB LDY #$BB
D159- 18 CLC
D15A- 69 00 ADC #$00
D15C- 85 84 STA $84
D15E- 90 01 BCC $D161
D160- C8 INY
D161- 84 85 STY $85
D163- 60 RTS
D164- 20 FC D1 JSR $D1FC
D167- A0 00 LDY #$00
D169- B1 86 LDA ($86),Y
D16B- 29 04 AND #$04
D16D- D0 01 BNE $D170
D16F- 60 RTS
D170- A2 02 LDX #$02
D172- A0 00 LDY #$00
D174- 20 3C D1 JSR $D13C
D177- 20 81 D1 JSR $D181
D17A- 20 CB D1 JSR $D1CB
D17D- CA DEX
D17E- 10 F2 BPL $D172
D180- 60 RTS
D181- E0 02 CPX #$02
D183- F0 41 BEQ $D1C6
D185- A0 2E LDY #$2E
D187- 84 3B STY $3B
D189- A0 16 LDY #$16
D18B- 84 3A STY $3A
D18D- A9 7F LDA #$7F
D18F- 85 3C STA $3C
D191- 31 80 AND ($80),Y
D193- F0 07 BEQ $D19C
D195- A5 3C LDA $3C
D197- 0A ASL
D198- 29 7F AND #$7F
D19A- 10 F3 BPL $D18F
D19C- A5 3C LDA $3C
D19E- 91 84 STA ($84),Y
D1A0- D0 04 BNE $D1A6
D1A2- E0 00 CPX #$00
D1A4- F0 20 BEQ $D1C6
D1A6- C9 7F CMP #$7F
D1A8- D0 15 BNE $D1BF
D1AA- A9 7F LDA #$7F
D1AC- A4 3B LDY $3B
D1AE- 85 3C STA $3C
D1B0- 31 80 AND ($80),Y
D1B2- F0 07 BEQ $D1BB
D1B4- A5 3C LDA $3C
D1B6- 0A ASL
D1B7- 29 7F AND #$7F
D1B9- 10 F3 BPL $D1AE
D1BB- A5 3C LDA $3C
D1BD- 91 84 STA ($84),Y
D1BF- C6 3B DEC $3B
D1C1- A4 3A LDY $3A
D1C3- 88 DEY
D1C4- 10 C5 BPL $D18B
D1C6- 60 RTS
D1C7- 31 84 AND ($84),Y
D1C9- 29 FF AND #$FF
D1CB- E0 01 CPX #$01
D1CD- F0 F7 BEQ $D1C6
D1CF- BD C7 D1 LDA $D1C7,X
D1D2- 8D ED D1 STA $D1ED
D1D5- BD C8 D1 LDA $D1C8,X
D1D8- 8D EE D1 STA $D1EE
D1DB- A0 2E LDY #$2E
D1DD- A9 7F LDA #$7F
D1DF- 85 3C STA $3C
D1E1- B1 80 LDA ($80),Y
D1E3- 25 3C AND $3C
D1E5- F0 04 BEQ $D1EB
D1E7- 45 3C EOR $3C
D1E9- 85 3C STA $3C
D1EB- A5 3C LDA $3C
D1ED- 11 84 ORA ($84),Y
D1EF- 91 84 STA ($84),Y
D1F1- 88 DEY
D1F2- 30 07 BMI $D1FB
D1F4- C0 17 CPY #$17
D1F6- D0 E9 BNE $D1E1
D1F8- 88 DEY
D1F9- D0 E2 BNE $D1DD
D1FB- 60 RTS
D1FC- A0 90 LDY #$90
D1FE- A9 00 LDA #$00
D200- 88 DEY
D201- 99 00 BB STA $BB00,Y
D204- D0 FA BNE $D200
D206- 60 RTS

View File

@ -0,0 +1,62 @@
1000- 7F ???
1001- 7F ???
1002- 7F ???
1003- 7F ???
1004- 7F ???
1005- 7F ???
1006- 7F ???
1007- 7E 3F 7E ROR $7E3F,X
100A- 1F ???
100B- 7E 3F 7E ROR $7E3F,X
100E- 3F ???
100F- 7E 3F 7E ROR $7E3F,X
1012- 1F ???
1013- 7C 7F 7F JMP ($7F7F,X)
1016- 7F ???
1017- 7F ???
1018- 7F ???
1019- 7F ???
101A- 7F ???
101B- 7F ???
101C- 7F ???
101D- 7F ???
101E- 7F ???
101F- 7F ???
1020- 7F ???
1021- 7F ???
1022- 0F ???
1023- 7E 67 7C ROR $7C67,X
1026- 7F ???
1027- 7C 3F 7E JMP ($7E3F,X)
102A- 1F ???
102B- 7F ???
102C- 4F ???
102D- 7F ???
102E- 07 ???
102F- 7C 7F 7F JMP ($7F7F,X)
1032- 7F ???
1033- 7F ???
1034- 7F ???
1035- 7F ???
1036- 7F ???
1037- 7F ???
1038- 7F ???
1039- 7F ???
103A- 7F ???
103B- 7F ???
103C- 7F ???
103D- 7F ???
103E- 1F ???
103F- 7C 4F 79 JMP ($794F,X)
1042- 7F ???
1043- 79 3F 7C ADC $7C3F,Y
1046- 7F ???
1047- 79 4F 79 ADC $794F,Y
104A- 1F ???
104B- 7C 7F 7F JMP ($7F7F,X)
104E- 7F ???
104F- 7F ???
1050- 7F ???
1051- 7F ???
1052- 7F ???
1053- 7F ???

View File

@ -0,0 +1,510 @@
4000- 20 F3 42 JSR $42F3
4003- A9 00 LDA #$00
4005- 8D 0D B0 STA $B00D
4008- AD F4 95 LDA $95F4
400B- 8D 68 AA STA $AA68
400E- 8D EA B7 STA $B7EA
4011- 09 30 ORA #$30
4013- C9 31 CMP #$31
4015- D0 02 BNE $4019
4017- A9 20 LDA #$20
4019- 8D 53 40 STA $4053
401C- 20 C9 42 JSR $42C9
401F- 20 FF 41 JSR $41FF
4022- 04 01 TSB $01
4024- 8C 00 34 STY $3400
4027- 43 ???
4028- 48 PHA
4029- 4F ???
402A- 4F ???
402B- 53 ???
402C- 45 20 EOR $20
402E- 41 20 EOR ($20,X)
4030- 02 ???
4031- 0C 44 3A TSB $3A44
4034- 05 03 ORA $03
4036- 01 0F ORA ($0F,X)
4038- 00 BRK
4039- 5C ???
403A- 50 4C BVC $4088
403C- 41 43 EOR ($43,X)
403E- 45 20 EOR $20
4040- 44 ???
4041- 41 54 EOR ($54,X)
4043- 41 20 EOR ($20,X)
4045- 44 ???
4046- 49 53 EOR #$53
4048- 4B ???
4049- 20 49 4E JSR $4E49
404C- 20 44 52 JSR $5244
404F- 49 56 EOR #$56
4051- 45 20 EOR $20
4053- 32 05 AND ($05)
4055- 05 05 ORA $05
4057- 54 ???
4058- 59 50 45 EOR $4550,Y
405B- 20 49 4E JSR $4E49
405E- 20 4E 41 JSR $414E
4061- 4D 45 20 EOR $2045
4064- 4F ???
4065- 46 20 LSR $20
4067- 02 ???
4068- 0C 44 20 TSB $2044
406B- 4F ???
406C- 52 05 EOR ($05)
406E- 50 52 BVC $40C2
4070- 45 53 EOR $53
4072- 53 ???
4073- 20 3C 52 JSR $523C
4076- 45 54 EOR $54
4078- 55 52 EOR $52,X
407A- 4E 3E 20 LSR $203E
407D- 46 4F LSR $4F
407F- 52 20 EOR ($20)
4081- 02 ???
4082- 0C 44 20 TSB $2044
4085- 4C 49 53 JMP $5349
4088- 54 ???
4089- 05 05 ORA $05
408B- 3E 06 00 ROL $0006,X
408E- 20 41 41 JSR $4141
4091- AD 00 C0 LDA $C000 r:KBD w:CLR80COL
4094- 8D FF 83 STA $83FF
4097- B0 15 BCS $40AE
4099- 20 19 70 JSR $7019
409C- D0 0D BNE $40AB
409E- 20 C9 42 JSR $42C9
40A1- AD 13 44 LDA $4413
40A4- F0 13 BEQ $40B9
40A6- 20 64 41 JSR $4164
40A9- 90 03 BCC $40AE
40AB- 4C 1C 40 JMP $401C
40AE- A9 01 LDA #$01
40B0- 8D 68 AA STA $AA68
40B3- 20 C9 42 JSR $42C9
40B6- 4C C0 02 JMP $02C0
40B9- 20 FF 41 JSR $41FF
40BC- 04 01 TSB $01
40BE- 8C 00 14 STY $1400
40C1- 4C 49 53 JMP $5349
40C4- 54 ???
40C5- 20 4F 46 JSR $464F
40C8- 20 02 0C JSR $0C02
40CB- 44 ???
40CC- 53 ???
40CD- 20 4F 4E JSR $4E4F
40D0- 20 54 48 JSR $4854
40D3- 49 53 EOR #$53
40D5- 20 44 49 JSR $4944
40D8- 53 ???
40D9- 4B ???
40DA- 3A DEC
40DB- 05 00 ORA $00
40DD- A9 FF LDA #$FF
40DF- 8D 10 41 STA $4110
40E2- 8D 2A 41 STA $412A
40E5- 20 65 43 JSR $4365
40E8- EE 2A 41 INC $412A
40EB- 20 70 43 JSR $4370
40EE- B0 39 BCS $4129
40F0- 8D 22 41 STA $4122
40F3- 8C 23 41 STY $4123
40F6- EE 10 41 INC $4110
40F9- AD 10 41 LDA $4110
40FC- 49 0F EOR #$0F
40FE- D0 0F BNE $410F
4100- 8D 10 41 STA $4110
4103- 20 05 80 JSR $8005
4106- 29 7F AND #$7F
4108- C9 1B CMP #$1B
410A- F0 32 BEQ $413E
410C- 20 CC 42 JSR $42CC
410F- A9 00 LDA #$00
4111- 0A ASL
4112- 0A ASL
4113- 0A ASL
4114- 69 24 ADC #$24
4116- 8D 20 41 STA $4120
4119- 20 FF 41 JSR $41FF
411C- 03 ???
411D- 01 40 ORA ($40,X)
411F- 00 BRK
4120- FF ???
4121- 02 ???
4122- FF ???
4123- FF ???
4124- 05 00 ORA $00
4126- 4C E8 40 JMP $40E8
4129- A9 00 LDA #$00
412B- D0 0E BNE $413B
412D- 20 FF 41 JSR $41FF
4130- 04 01 TSB $01
4132- 8C 00 40 STY $4000
4135- 4E 4F 4E LSR $4E4F
4138- 45 05 EOR $05
413A- 00 BRK
413B- 20 05 80 JSR $8005
413E- 4C 1C 40 JMP $401C
4141- A2 58 LDX #$58
4143- A0 41 LDY #$41
4145- A9 0F LDA #$0F
4147- 8E 15 8E STX $8E15
414A- 8C 16 8E STY $8E16
414D- 8D 17 8E STA $8E17
4150- A9 00 LDA #$00
4152- 8D 13 44 STA $4413
4155- 4C 12 8E JMP $8E12
4158- 02 ???
4159- 00 BRK
415A- 1B ???
415B- 00 BRK
415C- 8C 00 00 STY $0000
415F- 02 ???
4160- 00 BRK
4161- 13 ???
4162- 44 ???
4163- 02 ???
4164- A0 0F LDY #$0F
4166- A9 20 LDA #$20
4168- 88 DEY
4169- 99 4E 43 STA $434E,Y
416C- D0 FA BNE $4168
416E- B9 13 44 LDA $4413,Y
4171- F0 06 BEQ $4179
4173- 99 4E 43 STA $434E,Y
4176- C8 INY
4177- D0 F5 BNE $416E
4179- A2 49 LDX #$49
417B- A0 43 LDY #$43
417D- 20 09 08 JSR $0809
4180- D0 3E BNE $41C0
4182- A9 00 LDA #$00
4184- D0 38 BNE $41BE
4186- 2C 83 C0 BIT $C083 rw:LCBANK2
4189- 2C 83 C0 BIT $C083 rw:LCBANK2
418C- A0 0C LDY #$0C
418E- B1 FA LDA ($FA),Y
4190- 29 7F AND #$7F
4192- 91 FA STA ($FA),Y
4194- C8 INY
4195- C0 47 CPY #$47
4197- 90 F5 BCC $418E
4199- A0 2C LDY #$2C
419B- A9 58 LDA #$58
419D- 91 FA STA ($FA),Y
419F- A0 67 LDY #$67
41A1- A9 34 LDA #$34
41A3- 91 FA STA ($FA),Y
41A5- A0 A2 LDY #$A2
41A7- A9 00 LDA #$00
41A9- 91 FA STA ($FA),Y
41AB- A0 DD LDY #$DD
41AD- A9 58 LDA #$58
41AF- 91 FA STA ($FA),Y
41B1- A0 0B LDY #$0B
41B3- B1 FA LDA ($FA),Y
41B5- 99 16 08 STA $0816,Y
41B8- 88 DEY
41B9- 10 F8 BPL $41B3
41BB- AD 82 C0 LDA $C082
41BE- 18 CLC
41BF- 60 RTS
41C0- C9 06 CMP #$06
41C2- F0 08 BEQ $41CC
41C4- 20 16 A3 JSR $A316
41C7- 20 08 80 JSR $8008
41CA- 38 SEC
41CB- 60 RTS
41CC- 20 C9 42 JSR $42C9
41CF- 20 CC 6F JSR $6FCC
41D2- 20 FF 41 JSR $41FF
41D5- 04 01 TSB $01
41D7- 8C 00 30 STY $3000
41DA- 43 ???
41DB- 41 4E EOR ($4E,X)
41DD- 4E 4F 54 LSR $544F
41E0- 20 46 49 JSR $4946
41E3- 4E 44 05 LSR $0544
41E6- 05 02 ORA $02
41E8- 13 ???
41E9- 44 ???
41EA- 05 05 ORA $05
41EC- 4F ???
41ED- 4E 20 54 LSR $5420
41F0- 48 PHA
41F1- 49 53 EOR #$53
41F3- 20 44 49 JSR $4944
41F6- 53 ???
41F7- 4B ???
41F8- 05 00 ORA $00
41FA- 20 05 80 JSR $8005
41FD- 38 SEC
41FE- 60 RTS
41FF- 68 PLA
4200- 85 3A STA $3A
4202- 68 PLA
4203- 85 3B STA $3B
4205- A9 02 LDA #$02
4207- 8D 03 8A STA $8A03
420A- 8D 0A 8A STA $8A0A
420D- A2 00 LDX #$00
420F- 20 B6 42 JSR $42B6
4212- C9 20 CMP #$20
4214- 90 06 BCC $421C
4216- 9D 00 BB STA $BB00,X
4219- E8 INX
421A- D0 F3 BNE $420F
421C- 0A ASL
421D- A8 TAY
421E- B9 32 42 LDA $4232,Y
4221- 8D 2C 42 STA $422C
4224- B9 33 42 LDA $4233,Y
4227- 8D 2D 42 STA $422D
422A- 18 CLC
422B- 20 FF FF JSR $FFFF
422E- 90 DF BCC $420F
4230- B0 DB BCS $420D
4232- 40 RTI
4233- 42 ???
4234- 48 PHA
4235- 42 ???
4236- 61 42 ADC ($42,X)
4238- 81 42 STA ($42,X)
423A- 84 42 STY $42
423C- 8A TXA
423D- 42 ???
423E- A2 42 LDX #$42
4240- 68 PLA
4241- 68 PLA
4242- 20 B6 42 JSR $42B6
4245- 6C 3A 00 JMP ($003A)
4248- 20 B6 42 JSR $42B6
424B- 8D 05 8A STA $8A05
424E- 8D 8E 42 STA $428E
4251- 20 B6 42 JSR $42B6
4254- 8D 06 8A STA $8A06
4257- 8D 90 42 STA $4290
425A- 20 B6 42 JSR $42B6
425D- 8D 07 8A STA $8A07
4260- 60 RTS
4261- 20 B6 42 JSR $42B6
4264- 8D 70 42 STA $4270
4267- 20 B6 42 JSR $42B6
426A- 8D 71 42 STA $4271
426D- A0 00 LDY #$00
426F- B9 FF FF LDA $FFFF,Y
4272- F0 0B BEQ $427F
4274- C9 20 CMP #$20
4276- 90 04 BCC $427C
4278- 9D 00 BB STA $BB00,X
427B- E8 INX
427C- C8 INY
427D- D0 F0 BNE $426F
427F- 18 CLC
4280- 60 RTS
4281- A9 00 LDA #$00
4283- 2C A9 02 BIT $02A9
4286- 8D 04 8A STA $8A04
4289- 60 RTS
428A- 20 A2 42 JSR $42A2
428D- A0 00 LDY #$00
428F- A9 00 LDA #$00
4291- 8C 05 8A STY $8A05
4294- 8D 06 8A STA $8A06
4297- AD 07 8A LDA $8A07
429A- 18 CLC
429B- 69 08 ADC #$08
429D- 8D 07 8A STA $8A07
42A0- 38 SEC
42A1- 60 RTS
42A2- A9 00 LDA #$00
42A4- 9D 00 BB STA $BB00,X
42A7- A0 00 LDY #$00
42A9- A9 BB LDA #$BB
42AB- 8C 0C 8A STY $8A0C
42AE- 8D 0D 8A STA $8A0D
42B1- 20 00 8A JSR $8A00
42B4- 38 SEC
42B5- 60 RTS
42B6- E6 3A INC $3A
42B8- D0 02 BNE $42BC
42BA- E6 3B INC $3B
42BC- A0 00 LDY #$00
42BE- B1 3A LDA ($3A),Y
42C0- 60 RTS
42C1- 01 11 ORA ($11,X)
42C3- 26 A5 ROL $A5
42C5- 01 1C ORA ($1C,X)
42C7- 26 9A ROL $9A
42C9- A2 03 LDX #$03
42CB- 2C A2 07 BIT $07A2
42CE- A0 03 LDY #$03
42D0- BD C1 42 LDA $42C1,X
42D3- 99 0C 8E STA $8E0C,Y
42D6- CA DEX
42D7- 88 DEY
42D8- 10 F6 BPL $42D0
42DA- A9 01 LDA #$01
42DC- 4C 09 8E JMP $8E09
42DF- 81 89 STA ($89,X)
42E1- 00 BRK
42E2- 07 ???
42E3- 46 4F LSR $4F
42E5- 4E 54 00 LSR $0054
42E8- D0 E8 BNE $42D2
42EA- 42 ???
42EB- 4F ???
42EC- 52 44 EOR ($44)
42EE- 45 52 EOR $52
42F0- 00 BRK
42F1- DE DF 8D DEC $8DDF,X
42F4- 83 ???
42F5- 41 A8 EOR ($A8,X)
42F7- BE DF 42 LDX $42DF,Y
42FA- BD 00 C0 LDA $C000,X
42FD- BD 00 C0 LDA $C000,X
4300- BE E1 42 LDX $42E1,Y
4303- A0 00 LDY #$00
4305- BD E3 42 LDA $42E3,X
4308- 99 0C 44 STA $440C,Y
430B- F0 0B BEQ $4318
430D- C0 04 CPY #$04
430F- B0 03 BCS $4314
4311- 99 49 43 STA $4349,Y
4314- E8 INX
4315- C8 INY
4316- D0 ED BNE $4305
4318- AD F5 95 LDA $95F5
431B- 4A LSR
431C- 90 08 BCC $4326
431E- 4D 00 83 EOR $8300
4321- C9 01 CMP #$01
4323- D0 01 BNE $4326
4325- E8 INX
4326- BD E4 42 LDA $42E4,X
4329- A0 00 LDY #$00
432B- 84 FA STY $FA
432D- 85 FB STA $FB
432F- 48 PHA
4330- 4A LSR
4331- 4A LSR
4332- 4A LSR
4333- 4A LSR
4334- 20 3B 43 JSR $433B
4337- 8D 60 43 STA $4360
433A- 68 PLA
433B- 29 0F AND #$0F
433D- 09 30 ORA #$30
433F- C9 3A CMP #$3A
4341- 90 02 BCC $4345
4343- 69 06 ADC #$06
4345- 8D 61 43 STA $4361
4348- 60 RTS
4349- 58 CLI
434A- 58 CLI
434B- 58 CLI
434C- 58 CLI
434D- 2E 00 00 ROL $0000
4350- 00 BRK
4351- 00 BRK
4352- 00 BRK
4353- 00 BRK
4354- 00 BRK
4355- 00 BRK
4356- 00 BRK
4357- 00 BRK
4358- 00 BRK
4359- 00 BRK
435A- 00 BRK
435B- 00 BRK
435C- 00 BRK
435D- 2C 41 24 BIT $2441
4360- 58 CLI
4361- 58 CLI
4362- 30 30 BMI $4394
4364- 00 BRK
4365- A9 00 LDA #$00
4367- 85 FE STA $FE
4369- A0 11 LDY #$11
436B- 20 DD 43 JSR $43DD
436E- 38 SEC
436F- 60 RTS
4370- A5 FC LDA $FC
4372- 18 CLC
4373- 69 23 ADC #$23
4375- 85 FC STA $FC
4377- 90 02 BCC $437B
4379- E6 FD INC $FD
437B- C6 FE DEC $FE
437D- 10 19 BPL $4398
437F- AC 14 44 LDY $4414
4382- AD 15 44 LDA $4415
4385- F0 E7 BEQ $436E
4387- 20 DD 43 JSR $43DD
438A- A0 FB LDY #$FB
438C- A9 43 LDA #$43
438E- 84 FC STY $FC
4390- 85 FD STA $FD
4392- A9 07 LDA #$07
4394- 85 FE STA $FE
4396- D0 D8 BNE $4370
4398- A0 00 LDY #$00
439A- B1 FC LDA ($FC),Y
439C- 30 D2 BMI $4370
439E- F0 CE BEQ $436E
43A0- C8 INY
43A1- C8 INY
43A2- B1 FC LDA ($FC),Y
43A4- 29 7F AND #$7F
43A6- C9 04 CMP #$04
43A8- D0 C6 BNE $4370
43AA- A2 00 LDX #$00
43AC- C8 INY
43AD- B1 FC LDA ($FC),Y
43AF- 29 7F AND #$7F
43B1- DD 49 43 CMP $4349,X
43B4- D0 BA BNE $4370
43B6- E8 INX
43B7- E0 05 CPX #$05
43B9- 90 F1 BCC $43AC
43BB- A0 20 LDY #$20
43BD- B1 FC LDA ($FC),Y
43BF- 49 A0 EOR #$A0
43C1- D0 05 BNE $43C8
43C3- 91 FC STA ($FC),Y
43C5- 88 DEY
43C6- 10 F5 BPL $43BD
43C8- B1 FC LDA ($FC),Y
43CA- 29 7F AND #$7F
43CC- 91 FC STA ($FC),Y
43CE- 88 DEY
43CF- D0 F7 BNE $43C8
43D1- A5 FC LDA $FC
43D3- A4 FD LDY $FD
43D5- 18 CLC
43D6- 69 08 ADC #$08
43D8- 90 01 BCC $43DB
43DA- C8 INY
43DB- 18 CLC
43DC- 60 RTS
43DD- 8D ED B7 STA $B7ED
43E0- 8C EC B7 STY $B7EC
43E3- A9 00 LDA #$00
43E5- 8D EB B7 STA $B7EB
43E8- A0 13 LDY #$13
43EA- A9 44 LDA #$44
43EC- 8C F0 B7 STY $B7F0
43EF- 8D F1 B7 STA $B7F1
43F2- A9 01 LDA #$01
43F4- 8D F4 B7 STA $B7F4
43F7- 20 E3 03 JSR $03E3
43FA- 20 D9 03 JSR $03D9
43FD- B0 01 BCS $4400
43FF- 60 RTS
4400- 68 PLA
4401- 68 PLA
4402- 68 PLA
4403- 68 PLA
4404- A9 08 LDA #$08
4406- 20 C0 41 JSR $41C0
4409- 4C 1C 40 JMP $401C

View File

@ -0,0 +1,97 @@
6300- 48 PHA
6301- 2C 8B C0 BIT $C08B rw:LCBANK1
6304- 2C 8B C0 BIT $C08B rw:LCBANK1
6307- A2 08 LDX #$08
6309- A0 00 LDY #$00
630B- B9 CA 63 LDA $63CA,Y
630E- 99 00 D0 STA $D000,Y
6311- C8 INY
6312- D0 F7 BNE $630B
6314- EE 0D 63 INC $630D
6317- EE 10 63 INC $6310
631A- CA DEX
631B- D0 EE BNE $630B
631D- BD 51 63 LDA $6351,X
6320- F0 1D BEQ $633F
6322- A0 00 LDY #$00
6324- BD 51 63 LDA $6351,X
6327- E8 INX
6328- 99 3A 00 STA $003A,Y
632B- C8 INY
632C- C0 03 CPY #$03
632E- 90 F4 BCC $6324
6330- A0 00 LDY #$00
6332- BD 51 63 LDA $6351,X
6335- E8 INX
6336- 91 3B STA ($3B),Y
6338- C8 INY
6339- C6 3A DEC $3A
633B- D0 F5 BNE $6332
633D- F0 DE BEQ $631D
633F- 68 PLA
6340- 20 03 D0 JSR $D003
6343- A0 3B LDY #$3B
6345- B9 8E 63 LDA $638E,Y
6348- 99 25 02 STA $0225,Y
634B- 88 DEY
634C- 10 F7 BPL $6345
634E- 4C 25 02 JMP $0225
6351- 09 8B ORA #$8B
6353- 0B ???
6354- 2C 8B C0 BIT $C08B rw:LCBANK1
6357- 2C 8B C0 BIT $C08B rw:LCBANK1
635A- 4C 03 D0 JMP $D003
635D- 1C D0 88 TRB $88D0
6360- 38 SEC
6361- 66 4E ROR $4E
6363- 38 SEC
6364- E9 20 SBC #$20
6366- AA TAX
6367- BD 00 60 LDA $6000,X
636A- C5 4E CMP $4E
636C- B0 02 BCS $6370
636E- 85 4E STA $4E
6370- 4C 76 8C JMP $8C76
6373- A5 4E LDA $4E
6375- 18 CLC
6376- 6D 0A 8A ADC $8A0A
6379- 85 D9 STA $D9
637B- 60 RTS
637C- 02 ???
637D- 10 8C BPL $630B
637F- D0 88 BNE $6309
6381- 02 ???
6382- 28 PLP
6383- 8C D3 88 STY $88D3
6386- 04 3F TSB $3F
6388- 8C 20 E3 STY $E320
638B- 88 DEY
638C- EA NOP
638D- 00 BRK
638E- 18 CLC
638F- 20 4B 02 JSR $024B
6392- 20 3E 02 JSR $023E
6395- A2 27 LDX #$27
6397- A0 0B LDY #$0B
6399- 20 D2 0C JSR $0CD2
639C- D0 F4 BNE $6392
639E- 38 SEC
639F- 20 4B 02 JSR $024B
63A2- 68 PLA
63A3- 68 PLA
63A4- 4C 53 0B JMP $0B53
63A7- AD F4 95 LDA $95F4
63AA- C9 02 CMP #$02
63AC- F0 03 BEQ $63B1
63AE- 4C 15 78 JMP $7815
63B1- 4C F9 77 JMP $77F9
63B4- A0 1E LDY #$1E
63B6- B0 08 BCS $63C0
63B8- B9 00 70 LDA $7000,Y
63BB- 99 61 02 STA $0261,Y
63BE- 90 06 BCC $63C6
63C0- B9 61 02 LDA $0261,Y
63C3- 99 00 70 STA $7000,Y
63C6- 88 DEY
63C7- 10 ED BPL $63B6
63C9- 60 RTS

View File

@ -0,0 +1,3 @@
NLS
; S:BOEDIT
ICL "S:BOEDIT1"

View File

@ -0,0 +1,459 @@
TTL "S:BOEDIT"
; S:BOEDIT1
NOG
ORG = $4000
;
; 06/03/85
; 07/24/85 last mod
;
; The Print Shop COMPANION
;
; Border Editor
;
; Copyright 1985
; by Roland Gustafsson
;
DAT EPZ $00
;
BORDER EPZ DAT
XCOOR EPZ DAT+2
YCOOR EPZ DAT+3
SECTION EPZ DAT+4
BUTTON EPZ DAT+5
OLDXCOOR EPZ DAT+6
OLDYCOOR EPZ DAT+7
MINICNT EPZ DAT+8
CNSTRAIN EPZ DAT+9
;
; Temporary z-page for use within
; subroutines
;
HIRES1 EPZ $40
HIRES2 EPZ $42
HIRES3 EPZ $44
;
; Absolute references:
;
BORDBASE = $7800
BORDLEN = $94
UNDOBUFF = $7900
FFBUFFER = $7A00
FFSTACK = $7B00
;
; Constants:
;
XMAX = 23
YMAX = 14
;
XOFFSET = 5
YOFFSET = 45
;
MINIX1 = 1
MINIY1 = 23
MINIW1 = 11
MINIH1 = 11
;
MINIX2 = 28
MINIY2 = 79
MINIW2 = 4
MINIH2 = 4
;
INFO1Y = 123
;
XCENT = 223
XEDGE = 170
XEDGEB = XEDGE/7
XR1 = 13
XR2 = 24
;
LOCKX = 37
LOCKY = 9
;-----------
ORG ORG
OBJ $800
;-----------
JSR SETTYPE
TXTBORD BYT 'BORDER',0
BETEXT BYT 'BORDER EDITOR',0
BYT 'BORD.',0
BYT 2
ADR BORDBASE
ADR BORDLEN
;
JSR ZEROBORD
LDA #0
STA MINICNT
;-----------------------
;
; Draw Border Editor main screen
;
JSR SCREEN1
JSR BUFFSAVE
JMP MAINLOOP
;
ASC "(C) 1985"
ASC "R GUSTAFSSON"
;---
TXTCTRL BYT 'CTRL-',0
TXTEB BYT 'EDIT BOX',0
;-----------
;
; Get a border
;
BRGET JSR GETTEXT
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#60
.DA #PRSTR,CABTEXT,#CR
BYT CR,CR
BYT 'FROM PRINT SHOP DISK',CR
BYT 'FROM COMPANION DISK',CR
BYT 'FROM OTHER DISK',CR,0
;
^0 LDY #00
JSR SELECT
BYT 6,28,83,3
ADR RTS
BCS >1
;
STY <0+1
JSR >2
BCS BRGET
JSR BUFFSAVE
^1 JMP SCREEN1
;
^2 JSR JMPVECTS
ADR GETPSDSK
ADR GETCPDSK
ADR GETOTDSK
;
CABTEXT BYT 'CHOOSE A BORDER:',0
;
GETCPDSK LDA #0
CLC
HEX 24
GETOTDSK SEC
JMP GETFILE
;-----------
;
; "GET" text window
;
GETTEXT JSR WITEBORD
JSR PRINT
BYT PRINVR,PRRITE
.DA #PRLOC,149,#4
.DA #PRSTR,BETEXT
BYT ':',CR
BYT PRBIG,PRLEFT
.DA #PRLOC,160,#1
BYT 'GET',CR,0
JMP ESCBACK
;-----------
;
; Save a border
;
BRSAVE JSR SAVEFILE
JMP SCREEN1
;-----------
;
; Print the border
;
BRPRINT JSR BLAKBOTM
JSR PRINT
.DA #PRLOC,140,#185
BRK
LDA #'-'
JSR CHKPRINT
BCS >0
JSR PRINT
BYT PRCNTR
.DA #PRSTR,TXTPRET
BYT ' TO PRINT '
.DA #PRSTR,TXTBORD,#CR,#0
JSR GETKEY
CMP #CR
BNE >0
JSR PRINTBR
^0 JMP SHOWBOTM
;-----------
;
; Clear the border
;
CMDCLEAR JSR BLAKBOTM
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#185
.DA #PRSTR,TXTRET
BYT ' TO CLEAR '
.DA #PRSTR,TXTBORD
BYT CR,0
JSR GETKEY
CMP #CR
BNE >0
JSR BUFFSAVE
JSR BRINIT
JSR MINITURE
^0 JMP SHOWBOTM
;-----------
;
; Quit?
;
QUIT JSR BLAKBOTM
JSR PRINT
.DA #PRLOC,140,#185
BYT PRCNTR
.DA #PRSTR,TXTPRET
BYT ' TO '
BYT 'GO TO MAIN MENU',NOCR,0
JSR GETKEY
CMP #CR
BEQ >0
JMP SHOWBOTM
^0 JMP MAINMENU
;
TXTPRET BYT 'PRESS '
TXTRET BYT '<RETURN>',0
;-----------
;
; Draw starup screen
;
SCREEN1 JSR CLSCREEN
JSR PRINT
BYT RTOSWITE,0,0,24,16
BYT PRINVR,PRCNTR
.DA #PRLOC,84,#4
.DA #PRSTR,BETEXT,#CR
;
BYT RTOSANY,$70,MINIX1-1,MINIY1-3
BYT 1,6+14*MINIH1
BYT RTOSWITE,MINIX1,MINIY1-3
BYT 2*MINIW1,6+14*MINIH1
BYT RTOSANY,$07,MINIX1+2*MINIW1,MINIY1-3
BYT 1,6+14*MINIH1
BRK
;
; Draw border window
;
MX1 = XOFFSET*7
MY1 = YOFFSET
;
JSR LINES
BYT 'H'
; BYT BLAK,MX1-4,MY1-4,102,BLAK,MX1-4,MY1-3,102
BYT GRAY,MX1-2,MY1-2,98,GRAY,MX1-2,MY1-1,98
BYT GRAY,MX1-2,MY1+42,98,GRAY,MX1-2,MY1+43,98
; BYT BLAK,MX1+48,MY1+44,50,BLAK,MX1+48,MY1+45,50
BYT GRAY,MX1-2,MY1+86,48,GRAY,MX1-2,MY1+87,48
; BYT BLAK,MX1-4,MY1+88,54,BLAK,MX1-4,MY1+89,54
BYT 1
;
JSR LINES
BYT 'V'
; BYT BLAK,MX1-4,MY1-4,94,BLAK,MX1-3,MY1-4,94
BYT GRAY,MX1-2,MY1-2,90,GRAY,MX1-1,MY1-2,90
BYT GRAY,MX1+46,MY1-2,90,GRAY,MX1+47,MY1-2,90
; BYT BLAK,MX1+48,MY1+44,46,BLAK,MX1+49,MY1+44,46
BYT GRAY,MX1+94,MY1-2,46,GRAY,MX1+95,MY1-2,46
; BYT BLAK,MX1+96,MY1-4,50,BLAK,MX1+97,MY1-4,50
BYT 1
;
JSR PRINT
BYT PRINVR
BYT PRSPC,44
.DA #PRLOC,MX1-9,#MY1+17
BYT '1',NOCR
BYT PRRTAB2,107
BYT '2',CR
.DA #PRHTAB,MX1-10
BYT '3',NOCR
BRK
;
; Draw miniature greeting card border
;
JSR MINITURE
JSR SHOWRITE
JMP BRCENTER
;-----------
BLAKRITE JSR PRINT
BYT RTOSBLAK,XEDGEB,0,40-XEDGEB,192
BYT RTOSWITE,XEDGEB,61,40-XEDGEB,2
BYT RTOSWITE,XEDGEB,177,40-XEDGEB,2
BRK
RTS
;
BLAKBOTM JSR PRINT
BYT RTOSBLAK,0,181,40,11,0
RTS
;
BLAKPAGE JSR PRINT
BYT RTOSBLAK,XEDGEB,63,40-XEDGEB,114,0
RTS
;-----------
;
; Display help info on right side
; of screen
;
SHOWRITE JSR BLAKRITE
LDX #XEDGEB
LDY #0
TYA
JSR SHOWAROW
JSR PRINT
.DA #PRLOC,XEDGE+45,#11
BYT 'MOVE',CR
BYT 'CURSOR',CR
.DA #PRLOC,XCENT,#41
BYT PRCNTR
BYT PRCSPACE,1
BYT 'USE 1, 2 OR 3 TO',CR
BYT 'SELECT '
.DA #PRSTR,TXTEB,#CR
;
BRK
;
JSR SHOWPAGE
;
; Display bottom
;
SHOWBOTM JSR BLAKBOTM
JSR SHOWCOOR
JSR PRINT
.DA #PRHTAB,164
BYT PRRITE,PRCSPACE,1
BYT 'U - UNDO',NOCR
BRK
LDA #XEDGEB+1
JSR SPACEBAR
CLC
RTS
;-----------
;
; Show coor X= Y=
;
SHOWCOOR JSR PRINT
.DA #PRLOC,7,#185
BYT 'X=',NOCR
BYT PRRTAB,42
BYT 'Y=',NOCR,0
RTS
;-----------
;
; Show next help page
;
CMDSPACE INC PAGENUM
LDA PAGENUM
EOR #4
BNE SHOWPAGE
STA PAGENUM
;
; Show current help page
;
SHOWPAGE JSR BLAKPAGE
JSR >0
CLC
RTS
;
^0 LDY #00
PAGENUM = *-1
JSR JMPVECTS
ADR PAGE1
ADR PAGE2
ADR PAGE3
ADR PAGE4
;-----------
PAGE1 JSR PRINT
BYT PRSPC,15
.DA #PRLOC,XEDGE,#71
.DA #PRSTR,TXTCTRL,'S',#CR
.DA #PRSTR,TXTCTRL,'G',#CR
.DA #PRSTR,TXTCTRL,'P',#CR
.DA #PRSTR,TXTCTRL,'C',#CR
.DA #PRSTR,TXTCTRL,'D',#CR
.DA #PRSTR,TXTCTRL,'Q',#CR
.DA #PRSTR,TXTCTRL,'L',#CR
.DA #PRLOC,277,#71
BYT PRRITE
BYT 'SAVE',CR
BYT 'GET',CR
BYT 'PRINT',CR
BYT 'CLEAR',CR
BYT 'DEVICE',CR
BYT 'QUIT',CR
BYT 'LOCK',CR
BRK
RTS
;-----------
P2SPC = 11
;
PAGE2 JSR PRINT
BYT PRCSPACE,1
BYT PRSPC,P2SPC
.DA #PRLOC,XEDGE,#67
BYT 'D - DRAW',CR
BYT 'E',PRRTAB,XR1,'- ERASE',CR
;
BYT PRSPC,8
BYT 'H - FLIP',CR
BYT PRSPC,P2SPC,PRRTAB,XR2
BYT 'HORIZONTAL',CR
;
BYT PRSPC,8
BYT 'V',PRRTAB,XR1,'- FLIP',CR
BYT PRSPC,P2SPC,PRRTAB,XR2
BYT 'VERTICAL',CR
;
BYT 'N',PRRTAB,XR1,'- NEGATIVE',CR
BRK
LDX #XEDGEB
LDY #136
LDA #1
JSR SHOWAROW
JSR PRINT
.DA #PRLOC,XEDGE+45,#151
BYT 'SCROLL',CR
BRK
RTS
;-----------
P3Y = 66
PAGE3 JSR PRINT
.DA #PRLOC,XCENT,#P3Y
BYT PRCNTR,PRCSPACE,1
.DA #PRSTR,TXTBORD
BYT ' LAYOUT:',CR
BYT PRLEFT
.DA #PRLOC,XEDGE,#MINIY2+6+MINIH2*14
BYT 'B - FLIP BOTTOM',CR
BYT 'R - FLIP RIGHT',CR
BYT 'T',PRRTAB,XR1,'- TILE',CR
BYT PRRTAB,XR2,'BOUNDARY',CR
BRK
JMP PAG3DIAG
;-----------
P4Y = 83
;
FFXLOC = 37
FFYLOC = 131
;
PAGE4 JSR PRINT
.DA #PRLOC,XEDGE,#P4Y
BYT 'C',PRRTAB,XR1,'-',PRRTAB,XR2,'COPY THE',CR
BYT PRRTAB2,XR2
BYT 'CURRENT',CR
.DA #PRSTR,TXTEB,' TO',#CR
BYT 'THE OTHER',CR
.DA #PRSTR,TXTEB,'ES',#CR
BYT CR
.DA #PRHTAB,XEDGE
BYT 'P',PRRTAB,XR1,'-',PRRTAB,XR2,'PATTERN',CR
BYT RTOSANY,$70,FFXLOC,FFYLOC-1,1,10
BYT RTOSWITE,FFXLOC+1,FFYLOC-1,1,10
BYT RTOSANY,$03,FFXLOC+2,FFYLOC-1,1,10
BYT CR
BYT 'F',PRRTAB,XR1,'-',PRRTAB,XR2,'FLOOD FILL',CR
BRK
JMP SHOWFILL
;-----------
;
;
;
ICL "S:BOEDIT2"

View File

@ -0,0 +1,816 @@
;
; S:BOEDIT2
;
; Here is the Main Loop
;
MAINLOOP LDX XCOOR
LDY YCOOR
STX OLDXCOOR
STY OLDYCOOR
JSR DEVICEST
;
^0 JSR SETFLASH
LDX MINICNT
BEQ >1
DEX
STX MINICNT
BNE >1
JSR MINITURE
;
^1 LDY #1
JSR DEVICERD
BCS >2
;
STA BUTTON
JSR DODEVICE
BIT BUTTON
BMI >3
BVC >2
LDX #0
STX MINICNT
JSR MINITURE
;
^2 LDA #0
STA CNSTRAIN
JSR POLEKEY
BMI KEYPRESS
;
^3 DEC FLASHLO
BNE <1
DEC FLASHHI
BPL <1
BMI <0
;
KEYPRESS STA >1+1
JSR BRRESET
LDY #$FC
^0 INY
INY
INY
INY
LDA COMMANDS,Y
BEQ MAINLOOP
^1 CMP #00
BNE <0
;
CPY #LOCKSTOP-COMMANDS
BLT >1
JSR LOCKOFF
;
^1 CPY #MOVECOM?-COMMANDS
BGE >1
LDA #00
LOCKMODE = *-1
BPL >1
TYA
PHA
LDA #2
STA MINICNT
JSR PLOT
PLA
TAY
;
^1 LDA COMMANDS+1,Y
LDX #$20
LSR
BCS *+4
LDX #$2C
STX >2+0
;
LDX #$20
LSR
BCS *+4
LDX #$2C
STX >4+0
;
LDA COMMANDS+2,Y
STA >3+1
LDA COMMANDS+3,Y
STA >3+2
;
^2 JSR BUFFSAVE
;
LDX XCOOR
LDY YCOOR
LDA SECTION
;
^3 JSR $FFFF
^4 JSR MINITURE
JMP MAINLOOP
;
; #key,<buffsave,miniature>,<address>
;
; byte 1= bit 0:BUFFSAVE?
; bit 1:MINITURE?
;
COMMANDS .DA #'I',#0,MOVEUP
.DA #$0B,#0,MOVEUP
.DA #'M',#0,MOVEDOWN
.DA #$0A,#0,MOVEDOWN
.DA #'J',#0,MOVELEFT
.DA #$08,#0,MOVELEFT
.DA #'K',#0,MOVERITE
.DA #$15,#0,MOVERITE
MOVECOM?:
.DA #'L'-$40,#0,TOGGLOCK
.DA #'D',#3,BRSET
.DA #'E',#3,BRCLEAR
LOCKSTOP:
.DA #'C',#3,BRCOPY
.DA #'C'-$40,#0,CMDCLEAR
.DA #'F',#3,FLODFILL
.DA #'P',#0,NEXTPATT
;
.DA #'W',#2,SCRLUP
.DA #'Z',#2,SCRLDOWN
.DA #'A',#2,SCRLLEFT
.DA #'S',#2,SCRLRITE
;
.DA #'H',#2,FLIPHORI
.DA #'V',#2,FLIPVERT
.DA #'N',#2,BRNEGATI
;
.DA #'1',#0,SECTION1
.DA #'2',#0,SECTION2
.DA #'3',#0,SECTION3
;
.DA #$07,#0,BRGET
.DA #$13,#0,BRSAVE
.DA #$11,#0,QUIT
;
.DA #'T',#2,TGLMASK
.DA #'R',#2,TGLRITE
.DA #'B',#2,TGLBOTT
;
.DA #'U',#2,UNDO
;
.DA #' ',#0,CMDSPACE
.DA #'D'-$40,#0,NWDEVICE
.DA #'P'-$40,#0,BRPRINT
;
BRK
;-----------
;
; Input device handler
;
DODEVICE CPX XCOOR
BNE >0
CPY YCOOR
BEQ >3
;
; Device moved
;
^0 LDA CNSTRAIN
BPL >1
;
; Figure out which direction
; to constrain
;
LDA #1
CPX XCOOR
BEQ *+3
ASL
STA CNSTRAIN
;
^1 STX >1+1
STY >2+1
JSR BRRESET
LDX XCOOR
LDY YCOOR
STX OLDXCOOR
STY OLDYCOOR
^1 LDX #00
^2 LDY #00
JSR DEVCONST
;
; If button down, plot new point
; else, just plot cursor.
;
BIT BUTTON
BMI DOBUTTON
BPL SETFLASH
;
; End up here if device didn't move.
; If button is not down or if button
; was down last time, then exit.
;
^3 STX OLDXCOOR
STY OLDYCOOR
BIT BUTTON
BPL DEVRTS
BVS DEVRTS
;
; Handle button press
;
DOBUTTON BVS >0
;
; Button down for first time, so
; get bit and invert.
;
LDA LOCKMODE
STA CNSTRAIN
JSR BUFFSAVE
JSR SETPLOTX
;
; Plot current position and
; set new cursor.
;
^0 JSR PLOT
;
; After flashing cursor in the
; same place 10 times, then
; display the miniature.
;
LDA #10
STA MINICNT
;
SETFLASH JSR BRFLASH
JSR FLSHINIT
;
; Display X,Y coordinates
;
SHOWXY LDA XCOOR
LDX #4
LDY #185
JSR NUMBER
LDA YCOOR
LDX #10
LDY #185
JMP NUMBER
;
DEVRTS RTS
;
; Device input constrain
; but only when the constrain
; feature is selected.
;
DEVCONST BIT DEVRTS
LDA CNSTRAIN
BEQ DEVCLAMP
;
LSR
BCC >0
;
; Constrain X?
;
CPX XCOOR
BEQ DEVCLMP2
LDX XCOOR
CLV
BVC DEVCLMP2
;
; Constrain Y?
;
^0 CPY YCOOR
BEQ DEVCLMP2
LDY YCOOR
CLV
BVC DEVCLMP2
;
; Input device clamping
;
DEVCLAMP BIT DEVRTS
DEVCLMP2 CPX #XMAX
BLT >0
CLV
LDX #XMAX-1
^0 CPY #YMAX
BLT >1
CLV
LDY #YMAX-1
^1 STX XCOOR
STY YCOOR
BVS DEVRTS
JMP DEVICEST
;-----------
;
; Given XCOOR,YCOOR set PLOT routine
; to opposite of whatever is in this
; coordinate
;
SETPLOTX JSR GETMASK
AND (BORDER),Y
SETPLOT PHP
LDY #CLRBIT
LDX /CLRBIT
PLP
BNE >0
LDY #SETBIT
LDX /SETBIT
^0 STY PLOT+1
STX PLOT+2
RTS
;
PLOT JMP SETBIT
;-----------
;
; Swap UNDO buffer and EDIT buffer
;
UNDO JSR UNDO2
JMP BRDRAWAL
;
UNDO2 LDY #0
^0 LDA BORDBASE,Y
PHA
LDA UNDOBUFF,Y
STA BORDBASE,Y
PLA
STA UNDOBUFF,Y
INY
CPY #$94
BNE <0
RTS
;
BUFFSAVE LDY #0
^0 LDA BORDBASE,Y
STA UNDOBUFF,Y
INY
CPY #$94
BNE <0
RTS
;-----------
;
; Scroll left/right
;
SCRLLEFT LDX #1
HEX 2C
SCRLRITE LDX #22
;
^0 LDY #0
^1 LDA (BORDER),Y
PHA
^2 INY
LDA (BORDER),Y
DEY
STA (BORDER),Y
INY
CPY #22
BEQ >3
CPY #46
BNE <2
^3 PLA
STA (BORDER),Y
INY
INY
CPY #24
BEQ <1
DEX
BNE <0
JMP BRDRAW
;-----------
;
; Scroll up/down
;
SCRLUP LDX #1
HEX 2C
SCRLDOWN LDX #13
;
^0 LDY #0
^1 LDA (BORDER),Y
LSR
LDA #0
ROR
STA TMP0
TYA
PHA
CLC
ADC #24
TAY
LDA TMP0
ORA (BORDER),Y
LSR
STA (BORDER),Y
PLA
TAY
LDA #0
ROR
ORA (BORDER),Y
LSR
STA (BORDER),Y
INY
CPY #23
BLT <1
DEX
BNE <0
JMP BRDRAW
;-----------
;
; Flip vertical
;
FLIPVERT LDY #0
^0 LDA (BORDER),Y
TAX
TYA
PHA
CLC
ADC #24
TAY
LDA (BORDER),Y
PHA
LDA FLIPPER,X
STA (BORDER),Y
PLA
TAX
PLA
TAY
LDA FLIPPER,X
STA (BORDER),Y
INY
CPY #23
BLT <0
JMP BRDRAW
;-----------
;
; Flip horizontal
;
FLIPHORI LDA #0
HEX 2C
FLIPHOR2 LDA #24
STA TMP0
CLC
ADC #22
STA TMP1
LDX #11
^0 LDY TMP0
LDA (BORDER),Y
PHA
LDY TMP1
LDA (BORDER),Y
LDY TMP0
STA (BORDER),Y
PLA
LDY TMP1
STA (BORDER),Y
INC TMP0
DEC TMP1
DEX
BNE <0
LDA TMP0
CMP #24
BLT FLIPHOR2
JMP BRDRAW
;-----------
;
; Move up
;
MOVEUP DEY
BPL MOVEDONE
LDY #YMAX-2
;
; Move down
;
MOVEDOWN INY
CPY #YMAX
BLT MOVEDONE
LDY #0
;
; Set new coordinates
;
MOVEDONE STX XCOOR
STY YCOOR
RTS
;
; Move left
;
MOVELEFT DEX
BPL MOVEDONE
LDX #XMAX-2
;
; Move right
;
MOVERITE INX
CPX #XMAX
BLT MOVEDONE
LDX #0
BEQ MOVEDONE
;-----------
;
; Move cursor to section
;
SECTION1 LDA #0
HEX 2C
SECTION2 LDA #1
HEX 2C
SECTION3 LDA #2
;
; Given A=section, set BORDER pointer
; and SECTION to correct values
;
SETBORD STA SECTION
ASL
ADC SECTION
ASL
ASL
ASL
ASL
ADC #4
STA BORDER
LDA /BORDBASE
STA BORDER+1
RTS
;-----------
;
; Zero out border area
;
ZEROBORD LDY #$94
LDA #0
^0 DEY
STA BORDBASE,Y
BNE <0
^1 RTS
;-----------
;
; Initialize border data
;
BRINIT JSR ZEROBORD
;
; Center the cursor
;
BRCENTER LDX #11
LDY #6
STX XCOOR
STY YCOOR
;
; Start with corner
;
LDA #0
JSR SETBORD
;
; fall into re-draw routine
;
;-----------
;
; Draw all sections
; restore old section
;
BRDRAWAL JSR SHOWMASK
LDA SECTION
PHA
LDY #0
^0 STY SECTION
TYA
JSR SETBORD
JSR BRDRAW
LDY SECTION
INY
CPY #3
BLT <0
PLA
JMP SETBORD
;-----------
;
; Copy from 0 to 1 and 2
;
BRCOPY LDY #47
^0 LDA (BORDER),Y
STA BORDBASE+$04,Y
STA BORDBASE+$34,Y
STA BORDBASE+$64,Y
DEY
BPL <0
BMI BRDRAWAL
;-----------
;
; Draw current section
;
BRDRAW LDA XCOOR
PHA
LDA YCOOR
PHA
LDY #0
STY XCOOR
^0 STY YCOOR
JSR BRRESET
;
LDY YCOOR
INY
CPY #14
BLT <0
;
LDY #0
INC XCOOR
LDA XCOOR
CMP #23
BLT <0
PLA
STA YCOOR
PLA
STA XCOOR
RTS
;-----------
;
; Restore current location, use
; after BRFLASH
;
BRRESET JSR GETMASK
AND (BORDER),Y
BEQ >0
JMP PLOTON
^0 JMP PLOTOFF
;-----------
;
; Invert current section
;
BRNEGATI LDY #46
^0 LDA (BORDER),Y
EOR #$7F
STA (BORDER),Y
DEY
;
; When done, redraw section
;
BMI BRDRAW
CPY #23
BNE <0
DEY
BNE <0
;-----------
;
; Clear bit in section and screen
;
BRCLEAR LDA #$18
LDY #1
BNE >0
;
; Set bit in section and screen
;
BRSET LDA #$16
LDY #0
^0 PHA
JSR SETPLOT
JSR PLOT
PLA
TAY
;
BRBEEP LDX #7
^0 LDA $C030
TYA
JSR WAIT
DEX
BNE <0
RTS
;
CLRBIT JSR GETMASK
EOR #$7F
AND (BORDER),Y
STA (BORDER),Y
JMP PLOTOFF
;
SETBIT JSR GETMASK
ORA (BORDER),Y
STA (BORDER),Y
JMP PLOTON
;
; Get mask (in A) and offset (in Y)
;
GETMASK LDY YCOOR
LDA GETMASKT,Y
PHA
LDA XCOOR
CPY #7
BGE >0
ADC #24
^0 TAY
PLA
RTS
;
; Y-coor mask for border 0-13
;
GETMASKT BYT %0000001
BYT %0000010
BYT %0000100
BYT %0001000
BYT %0010000
BYT %0100000
BYT %1000000
BYT %0000001
BYT %0000010
BYT %0000100
BYT %0001000
BYT %0010000
BYT %0100000
BYT %1000000
;-----------
;
; Toggle masking
;
TGLMASK LDA BORDBASE
EOR #%100
STA BORDBASE
AND #%100
BEQ SHOWMASK
LDA BORDBASE
ORA #%111
STA BORDBASE
;
SHOWMASK JSR PAG3DIAG
LDX #WITE
JSR TGLMSK2
JSR PRINT
BYT RTOSWITE,15,132,4,17,0
LDX #GRAY2
LDA BORDBASE
AND #%100
BEQ TGLMSK2
;
; "Fill to edge" arrows
;
LDX #15
LDY #132
JMP TILEAROW
;
; Tile boundary line
;
TGLMSK2 STX >0+0
STX >1+0
STX >2+0
STX >3+0
JSR LINES
BYT "H",MINIX1
^0 BYT GRAY,14,MINIY1+14,14*MINIW1-2
^1 BYT GRAY,14,MINIY1+13+14*MINIH1-2,14*MINIW1-2
BYT 1
JSR LINES
BYT "V",MINIX1
^2 BYT GRAY,14,MINIY1+14,14*MINIH1-2
^3 BYT GRAY,13+14*MINIW1-2,MINIY1+14,14*MINIH1-2
BYT 1
RTS
;-----------
;
; Toggle right side
;
TGLRITE LDA BORDBASE
AND #%11111011
EOR #%00000010
STA BORDBASE
JMP SHOWMASK
;-----------
;
; Toggle bottom
;
TGLBOTT LDA BORDBASE
AND #%11111011
EOR #%00000001
STA BORDBASE
JMP SHOWMASK
;-----------
;
; Tile boundary arrow
;
TILEAROW STX >0+0
STY >0+1
JSR PICDRAW
^0 BYT 15,132,4,17
HEX C27EC23F7CC21F78C20F70C21F78C21B
HEX 58C20181C2827E3F827CC1827EC10181
HEX C21B58C21F78C20F70C21F78C23F7CC3
HEX 7E7F
RTS
;-----------
;
; Turn off lock mode
;
LOCKOFF STX >0+1
STY >1+1
STA >2+1
LDA LOCKMODE
BPL >2
;
; Toggle lock mode
;
TOGGLOCK LDA LOCKMODE
EOR #$80
STA LOCKMODE
BPL SHOWLOCK
;
; If we are turning on lock mode,
; then save border in UNDOBUFF.
;
JSR BUFFSAVE
JSR SETPLOTX
;
; Show lock mode
;
SHOWLOCK JSR PRINT
BYT RTOSBLAK,LOCKX,LOCKY,1,9,0
LDA LOCKMODE
BPL >0
JSR PICDRAW
BYT LOCKX,LOCKY,1,9
HEX 1C222222C17777777F
^0 LDX #00
^1 LDY #00
^2 LDA #00
RTS
;-----------
;
; Select input device
;
NWDEVICE JSR DEVICECH
JMP SHOWBOTM
;-----------
;
;
;
ICL "S:BOEDIT3"

View File

@ -0,0 +1,505 @@
;
; S:BOEDIT3
; ---------
; Low-level screen stuff
;
;
; Draw Miniature greeting card border
; on hires page, complete with
; right and bottom flipping.
;
MNZ EPZ $80
;
MINIX EPZ MNZ
MINIY EPZ MNZ+1
MINIWITH EPZ MNZ+2
MINIHITE EPZ MNZ+3
;
; Temporary table where miniature
; is built.
;
MINITEMP = $BB00
MINIBUFF = MINITEMP
TEMPTBL = MINITEMP+28*3
;
MINITURE LDX #MINIX1
LDY #MINIY1
STX MINIX
STY MINIY
LDX #MINIW1
LDY #MINIH1
CLC
;-----------
;
; Enter with X=width
; Y=height
;
; z-page MINIX=x position
; MINIY=y position
;
MINITUR2 DEX
STX MINIWITH
DEY
STY MINIHITE
;
; If carry set, then don't do
; the compression, data is all
; ready at MINIBUFF.
;
BCS *+5
JSR MINICALC
;
; Top line
;
LDY #0
JSR MINILINE
;
; Do left and right edges
;
^1 INY
CPY MINIHITE
BEQ MINILINE
LDX #0
JSR MINISTR2
LDX MINIWITH
JSR MINISTR2
JMP <1
;
; Given Y, do one line
;
MINILINE LDX MINIWITH
JSR MINISTR0
^0 DEX
BEQ >1
JSR MINISTR1
JMP <0
^1 JMP MINISTR0
;
; Interpolate from 23x14 to 14x14
; for each of the 3 sections.
;
; TMP0.1 points into BORDBASE
; TMP2.3 points into MINIBUFF
;
MINICALC LDY #BORDBASE+4
LDA /BORDBASE+4
STY TMP0
STA TMP1
LDY #MINIBUFF
LDA /MINIBUFF
STY TMP2
STA TMP3
;
; Now squish the three sections
;
LDA #3
^0 PHA
;
; Do top part then bottom part
;
LDY #24
JSR MINISQSH
LDY #0
JSR MINISQSH
;
LDA TMP0
CLC
ADC #48
STA TMP0
;
PLA
SBC #0
BNE <0
RTS
;
; Squish 23 vertically oriented bytes
; to 14 horizontally oriented bytes.
;
MINISQSH LDX #0
^0 LDA MINIORTB,X
STA TMP4
;
LDA #0
^1 ORA (TMP0),Y
INY
DEC TMP4
BNE <1
;
STX >3+1
ASL
STA TMP4
LDX #12
;
^2 LSR TEMPTBL,X
LSR TEMPTBL+1,X
LDA #0
ROR
ROR
ORA TEMPTBL,X
STA TEMPTBL,X
LDA #0
ASL TMP4
ROR
ROR
ORA TEMPTBL+1,X
STA TEMPTBL+1,X
DEX
DEX
BPL <2
;
^3 LDX #00
INX
CPX #14
BLT <0
;
LDY #13
^4 LDA TEMPTBL,Y
EOR #$7F
STA (TMP2),Y
DEY
BPL <4
LDA TMP2
CLC
ADC #14
STA TMP2
RTS
;
; Table which tells how many
; bytes to OR together
;
MINIORTB HEX 02010202010202
HEX 01020102020102
;
; Draw a section given:
;
; A=section to use
; X,Y=position
;
; Computed:
; TMP0.1= MINIBUFF pointer
;
MINISTR0 LDA #0
HEX 2C
MINISTR1 LDA #28
HEX 2C
MINISTR2 LDA #56
STA TMP0
LDA /MINIBUFF
STA TMP1
STX MINIXSAV
STY MINIYSAV
LDA #0
CPX MINIWITH
BNE *+4
ORA #2
CPY MINIHITE
BNE *+4
ORA #1
AND BORDBASE
PHA
;
; Compute X and Y screen addresses
;
; X= X*2+MINIX
;
TXA
ASL
ADC MINIX
STA MINIXPOS
;
; Y= Y*14+MINIY
;
TYA
ASL
STA TMP2
ASL
ASL
ASL
ADC MINIY
SEC
SBC TMP2
STA MINIYPOS
;
PLA
LSR
AND #1
STA MINIFLIP
;
; If flipping bottom, then start from
; end of MINIBUFF data.
;
LDY #$E6 ; INC
LDA #0
BCC >0
LDA #26
LDY #$C6 ; DEC
^0 CLC
ADC TMP0
STA TMP0
STY MINIBMD0
STY MINIBMD1
LDX #14
;
; Miniature border section store loop
;
MINISLOP LDY #00
MINIYPOS = *-1
LDA YBASELO,Y
CLC
ADC #00
MINIXPOS = *-1
STA HIRES1
LDA YBASEHI,Y
STA HIRES1+1
;
; Now do a single row
;
LDY #0
LDA #00
MINIFLIP = *-1
BNE >0
;
; Standard
;
LDA (TMP0),Y
STA (HIRES1),Y
INY
LDA (TMP0),Y
JMP >1
;
; Flip horizontally
;
^0 LDA (TMP0),Y
TAY
LDA FLIPPER,Y
LDY #1
STA (HIRES1),Y
LDA (TMP0),Y
TAY
LDA FLIPPER,Y
LDY #0
;
^1 STA (HIRES1),Y
MINIBMD0 INC TMP0
MINIBMD1 INC TMP0
;
INC MINIYPOS
DEX
BNE MINISLOP
;
LDX #00
MINIXSAV = *-1
LDY #00
MINIYSAV = *-1
RTS
;-----------
;
; Plot routine entry points
;
PLOTON JSR PLOTINIT
EOR #$7F
STA TMP0
AND (HIRES1),Y
STA (HIRES1),Y
STA (HIRES3),Y
LDA TMP0
AND (HIRES2),Y
STA (HIRES2),Y
TXA
BNE >0
RTS
;
^0 INY
EOR #$7F
TAX
AND (HIRES1),Y
STA (HIRES1),Y
STA (HIRES3),Y
TXA
AND (HIRES2),Y
STA (HIRES2),Y
RTS
;
PLOTOFF JSR PLOTINIT
STA TMP0
ORA (HIRES1),Y
STA (HIRES1),Y
STA (HIRES3),Y
LDA TMP0
ORA (HIRES2),Y
STA (HIRES2),Y
TXA
BNE >0
RTS
;
^0 INY
ORA (HIRES1),Y
STA (HIRES1),Y
STA (HIRES3),Y
TXA
ORA (HIRES2),Y
STA (HIRES2),Y
RTS
;
BRFLASH JSR PLOTINIT
EOR (HIRES2),Y
STA (HIRES2),Y
INY
TXA
EOR (HIRES2),Y
STA (HIRES2),Y
RTS
;
; Init plot routine
;
; Multiply Y by 3 and add
; section offset.
;
PLOTINIT LDA YCOOR
ASL
ADC YCOOR
LDY SECTION
ADC YBYTEOFF,Y
TAX
;
LDA YBASELO+YOFFSET,X
STA HIRES1
LDA YBASEHI+YOFFSET,X
STA HIRES1+1
LDA YBASELO+YOFFSET+1,X
STA HIRES2
LDA YBASEHI+YOFFSET+1,X
STA HIRES2+1
LDA YBASELO+YOFFSET+2,X
STA HIRES3
LDA YBASEHI+YOFFSET+2,X
STA HIRES3+1
;
; Get bit pattern
;
LDA XCOOR
ADC XBITOFF,Y
TAX
;
LDA XLOOK,X
AND #$0F
ASL
TAY
LDA XDATA,Y
STA >0+1
LDA XDATA+1,Y
STA >1+1
;
; Get X byte offset
;
LDA XLOOK,X
LSR
LSR
LSR
LSR
LDY SECTION
ADC XBYTEOFF,Y
TAY
;
^0 LDA #00
^1 LDX #00
RTS
;
; X lookup table
;
XLOOK HEX 0001020314151620
HEX 2122233435364041
HEX 4243545556606162
HEX 63747576
;
XDATA HEX 0300
HEX 0C00
HEX 3000
HEX 4001
HEX 0600
HEX 1800
HEX 6000
;
; Offsets for the 3 border sections
;
XBITOFF BYT 0
BYT 3
BYT 0
;
XBYTEOFF BYT XOFFSET
BYT XOFFSET+6
BYT XOFFSET
;
YBYTEOFF BYT 0
BYT 0
BYT 44
;-----------
;
; If page 3 is being displayed, then
; update "border layout"
;
PAG3DIAG LDA PAGENUM
CMP #2
BEQ >0
RTS
;
^0 JSR PRINT
BYT RTOSWITE,MINIX2+2,MINIY2+14
BYT 2*MINIW2-2,14*MINIH2-2,0
;
LDA BORDBASE
PHA
LDY #>1
LDA />1
STY TMP0
STA TMP1
LDA #28
STA TMP4
LDY #MINIBUFF
LDA /MINIBUFF
LDX #0
JSR GETPSUNP
LDX #MINIX2
LDY #MINIY2
STX MINIX
STY MINIY
LDX #MINIW2
LDY #MINIH2
SEC
PLA
STA BORDBASE
JSR MINITUR2
;
; Display tile boundary info
;
LDA BORDBASE
AND #%100
BEQ >0
LDX #MINIX2+2
LDY #MINIY2-8-MINIH2*7
JMP TILEAROW
;
^0 JSR LINES
BYT "H",MINIX2
BYT GRAY2,14,MINIY2+14,14*MINIW2-2
BYT GRAY2,14,MINIY2+13+14*MINIH2-2,14*MINIW2-2
BYT 1
JSR LINES
BYT "V",MINIX2
BYT GRAY2,14,MINIY2+14,14*MINIH2-2
BYT GRAY2,13+14*MINIW2-2,MINIY2+14,14*MINIH2-2
BYT 1
RTS
;
^1 HEX 877F7E3F7E1F7E3F
HEX 7E3F7E3F7E1F7C8E
HEX 7F0F7E677C7F7C3F
HEX 7E1F7F4F7F077C8E
HEX 7F1F7C4F797F793F
HEX 7C7F794F791F7C88
HEX 7F
;-----------
;
;
;
ICL "S:BOEDIT4"

View File

@ -0,0 +1,330 @@
;
; 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"

View File

@ -0,0 +1,293 @@
;
; S:BOEDIT5
;
; Here is the nifty flood-fill
; routine. (Same as in Dazzle Draw)
;
FLZ EPZ $80
;
FLTMP0 EPZ FLZ
FLINVERT EPZ FLZ+1
FLXMIN EPZ FLZ+2
FLXMAX EPZ FLZ+3
FLMASK EPZ FLZ+4
FLSTACK1 EPZ FLZ+5
FLSTACK2 EPZ FLZ+6
;
FLODFILL LDA XCOOR
PHA
LDA YCOOR
PHA
;
LDY #47
LDA #0
^0 STA FFBUFFER,Y
DEY
BPL <0
;
STA FLSTACK1
STA FLSTACK2
STA FLINVERT
;
JSR FLODPUSH
JSR FLGETBIT
STA FLINVERT
;
; Main recursive routine:
;
FLODMAIN JSR FLODPULL
;
; If we've already been here,
; then don't bother checking
;
JSR FLGETBIT
LDA FLMASK
AND FFBUFFER,Y
BNE FLODRDON
;
; Fill left
;
LDA XCOOR
PHA
^0 DEC XCOOR
BMI >1
JSR FLODCHEK
BEQ <0
;
; Fill right
;
^1 LDX XCOOR
INX
STX FLXMIN
PLA
STA XCOOR
;
^2 JSR FLODCHEK
BNE >3
INC XCOOR
LDA XCOOR
CMP #XMAX
BLT <2
;
; Now scan above and below
;
^3 LDA XCOOR
STA FLXMAX
;
INC YCOOR
JSR FLODSCAN
DEC YCOOR
DEC YCOOR
JSR FLODSCAN
;
; Is stack empty?
;
FLODRDON LDA FLSTACK1
CMP FLSTACK2
BNE FLODMAIN
PLA
STA YCOOR
PLA
STA XCOOR
RTS
;---
;
; Scan a line for new runs
;
FLODSCAN LDA YCOOR
CMP #YMAX
BGE >2
LDA FLXMAX
STA XCOOR
;
^0 JSR FLDECGET
BNE <0
LDA FLMASK
AND FFBUFFER,Y
BNE >1
JSR FLODPUSH
;
^1 JSR FLDECGET
BEQ <1
BNE <0
;
^2 RTS
;
BITS8 HEX 8040201008040201
;
FLODCHEK JSR FLGETBIT
BNE >9
;
; Get bit from pattern
;
LDA YCOOR
AND #7
STA FLTMP0
LDA CURRPATT
ASL
ASL
ASL
ADC FLTMP0
TAX
LDA FILLPATT,X
STA FLTMP0
LDA XCOOR
AND #7
TAX
LDA BITS8,X
AND FLTMP0
BEQ >0
LDA FLMASK
^0 STA FLTMP0
;
; Set bit in temp buffer
;
LDA FLMASK
ORA FFBUFFER,Y
STA FFBUFFER,Y
;
; Set bit in edit buffer
;
LDA FLMASK
EOR #$FF
AND (BORDER),Y
;
ORA FLTMP0
STA (BORDER),Y
JSR PLOTOFF
LDA FLTMP0
BEQ >8
JSR PLOTON
^8 LDA #0
^9 RTS
;
; Push current point on stack
;
FLODPUSH LDY FLSTACK1
LDA XCOOR
STA FFSTACK,Y
LDA YCOOR
STA FFSTACK+1,Y
INC FLSTACK1
INC FLSTACK1
RTS
;
; Pull next point from stack
;
FLODPULL LDY FLSTACK2
LDA FFSTACK,Y
STA XCOOR
LDA FFSTACK+1,Y
STA YCOOR
INC FLSTACK2
INC FLSTACK2
RTS
;
; Decrement X, check for min
;
FLDECGET LDA XCOOR
CMP FLXMIN
BNE >0
PLA
PLA
RTS
;
^0 DEC XCOOR
;
; Check bit
;
FLGETBIT JSR GETMASK
STA FLMASK
AND (BORDER),Y
PHP
PLA
EOR FLINVERT
AND #2
RTS
;-----------
;
; Increment pattern pointer
;
NEXTPATT INC CURRPATT
SHOWFILL LDA #01
CURRPATT = *-1
CMP #FILLPATS/8
BNE >0
LDA #0
^0 STA CURRPATT
LDY PAGENUM
CPY #3
BNE >1
JSR SHOWPATT
^1 RTS
;
; Fill patterns:
;
FILLPATT HEX FFFFFFFFFFFFFFFF
HEX 55AA55AA55AA55AA
HEX 8822882288228822
HEX 8800220088002200
HEX 8000080080000800
HEX 0000000000000000
HEX 8010022001084004
;
HEX FF808080FF080808
HEX 8040200002040800
HEX 8244384482010101
HEX F87422478F172271
HEX FF000000FF000000
HEX 8888888888888888
HEX 081C22C180010204
HEX 40A00000040A0000
HEX 8080413E080814E3
HEX 0102040810204080
FILLPATS = *-FILLPATT
;-----------
;
; Display current pattern on screen
;
SHOWPATT ASL
ASL
ASL
STA TMP0
LDA #8
STA TMP1
LDX #FFYLOC
;
^0 LDA YBASELO,X
STA HIRES1
LDA YBASEHI,X
STA HIRES1+1
;
LDY TMP0
INC TMP0
LDA FILLPATT,Y
EOR #$FF
PHA
ASL
PHP
LDY #FFXLOC
LDA (HIRES1),Y
ASL
ASL
PLP
ROR
LSR
STA (HIRES1),Y
PLA
AND #$7F
TAY
LDA FLIPPER,Y
LDY #FFXLOC+1
STA (HIRES1),Y
INX
DEC TMP1
BNE <0
RTS
;-----------
;
;
;
USR "BOEDIT,S4",ORG
;
ICL "S:COMMON"

View File

@ -0,0 +1,307 @@
NLS
TTL "S:BORDDATA"
ORG = $1000
;
; BORDER TILE PIXEL DATA
; ----------------------
; Actual data followed by
; screen equivalent
;
ORG ORG
OBJ $800
;-----------
;
; SINGLE LINE
;
HEX 7F7F0000000000000000000000000000
HEX 00000000000000007F7F010101010101
HEX 01010101010101010101010101010100
HEX 00000000000000000000000000000000
HEX 00000000000000000101010101010101
HEX 01010101010101010101010101010100
HEX 7F7F0000000000000000000000000000
HEX 00000000000000007F7F000000000000
HEX 00000000000000000000000000000000
;
HEX 7F7F
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
;
HEX 7F7F
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
;
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
;-----------
;
; DOUBLE LINE
;
B2 HEX 7F7F0000000000000000004040404040
HEX 40404040407F7F007F7F010101010101
HEX 01010101010101010101010101010100
HEX 01010101010101010101010101010101
HEX 01010101010101000101010101010101
HEX 01010101010101010101010101010100
HEX 7F7F0000000000000000007F7F000000
HEX 00000000000000007F7F000000000000
HEX 0000007F7F0000000000000000000000
;
HEX 7F7F
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0300
HEX 0360
HEX 0360
HEX 0360
HEX 0360
HEX 0360
HEX 0360
HEX 037F
;
HEX 7F7F
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 7F7F
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
HEX 0000
;
HEX 0303
HEX 0303
HEX 0303
HEX 0303
HEX 0303
HEX 0303
HEX 0303
HEX 0303
HEX 0303
HEX 0303
HEX 0303
HEX 0303
HEX 0303
HEX 0303
;-----------
;
; THICK LINE
;
HEX 7F7F7F7F7F7F7F7F
HEX 7F7F7F7F7F7F7F7F
HEX 7F7F7F7F7F7F7F00
HEX 7F7F7F7F7F7F7F7F
HEX 7F7F7F7F7F7F7F7F
HEX 7F7F7F7F7F7F7F00
;
HEX 7F7F
HEX 7F7F
HEX 7F7F
HEX 7F7F
HEX 7F7F
HEX 7F7F
HEX 7F7F
HEX 7F7F
HEX 7F7F
HEX 7F7F
HEX 7F7F
HEX 7F7F
HEX 7F7F
HEX 7F7F
;-----------
;
; BEADS
;
HEX 00030F1F1C3D303A
HEX 3075606A6075603A
HEX 3035381E1F0F0300
HEX 00407078383C0C5C
HEX 0C2E0656062E065C
HEX 0C2C5C7878704000
;
HEX 4003
HEX 700F
HEX 1819
HEX 2C34
HEX 0C31
HEX 2664
HEX 0E71
HEX 2664
HEX 0C31
HEX 2C34
HEX 1819
HEX 700F
HEX 4003
HEX 0000
;-----------
;
; FANCY
;
HEX 71737374740C0C1C
HEX 1C21216121211C1C
HEX 0C0C747473737100
HEX 476767171718181C
HEX 1C42424342421C1C
HEX 1818171767674700
;
HEX 4771
HEX 6773
HEX 1774
HEX 180C
HEX 1C1C
HEX 0220
HEX 6363
HEX 6363
HEX 0220
HEX 1C1C
HEX 180C
HEX 1774
HEX 6773
HEX 4771
;-----------
;
; FLORAL
;
HEX 0001020A16121211
HEX 091D232323231D09
HEX 111212160A020100
HEX 006010141A121222
HEX 646E717171716E64
HEX 2212121A14106000
;
HEX 0000
HEX 4001
HEX 380E
HEX 2412
HEX 2412
HEX 5C1D
HEX 6223
HEX 6223
HEX 5C1D
HEX 2412
HEX 2412
HEX 380E
HEX 4001
HEX 0000
;-----------
;
; STARS
;
HEX 0001010103030307
HEX 070F3F7F3F0F0707
HEX 0303030101010000
HEX 0000000040404060
HEX 60707C7E7C706060
HEX 4040400000000000
;
HEX 0001
HEX 0001
HEX 4003
HEX 4003
HEX 6007
HEX 781F
HEX 7E7F
HEX 781F
HEX 6007
HEX 4003
HEX 4003
HEX 0001
HEX 0001
HEX 0000
;-----------
;
; HEARTS
;
HEX 000001030306060C
HEX 0C18307030180C0C
HEX 0606030301000000
HEX 387C7E4603030303
HEX 07060C180C060703
HEX 030303467E7C3800
;
HEX 0000
HEX 1C0E
HEX 3E1F
HEX 6739
HEX 4330
HEX 0330
HEX 0738
HEX 0E1C
HEX 1C0E
HEX 3807
HEX 6001
HEX 4000
HEX 0000
HEX 0000
;-----------
;
; WICKER
;
HEX 7F7F4848484F4F48
HEX 4848484848484848
HEX 7F7F4040407F7F00
HEX 7F7F0101017F7F09
HEX 0909090909090909
HEX 79790909097F7F00
;
HEX 7F7F
HEX 1940
HEX 1940
HEX 797F
HEX 194C
HEX 194C
HEX 194C
HEX 194C
HEX 194C
HEX 194C
HEX 7F4F
HEX 014C
HEX 014C
HEX 7F7F
;
;
;
USR "O:BORDDATA",ORG
END

View File

@ -0,0 +1,139 @@
;
; S:COMMON
;
TMP EPZ $F0
TMP0 EPZ TMP
TMP1 EPZ TMP+1
TMP2 EPZ TMP+2
TMP3 EPZ TMP+3
TMP4 EPZ TMP+4
TMP5 EPZ TMP+5
;
TMPLO EPZ TMP0
TMPHI EPZ TMP1
;
FLASHLO EPZ $4E
FLASHHI EPZ $4F
;
ESC = 27
;-----------
;
; MAIN MENU routines
;
MM = $0800
;
MAINMENU = MM
FGETMAIN = MM+3
FGETPSD = MM+6
FGETCD = MM+9
;
HAS128K = $27F
;-----------
;
; 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
TESTPAPR = SP+132
GETANUMB = SP+135
ANYKEY2 = SP+138
DEVICECH = SP+141
;
WITE = $FF
GRAY = $AA
GRAY2 = $55
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
PRPIC = 19
PRRTAB = 20
PRRTAB2 = 21
PRKERN = 22
RTOSINV = 23
;-----------
;
; Monitor routines
;
WAIT = $FCA8
RTS = $FF58
;-----------
;
; SYSLIB stuff
;
FLIPPER = $9080
YBASEHI = $9100
YBASELO = $91C0
XBYTE = $9398
XBIT = $94B0
;-----------
;
;
;
END

View File

@ -0,0 +1,46 @@
;
; S:COMMONEDIT
;
; Edit buffer locations
;
EDZ EPZ $D0
;
XCOOR EPZ EDZ
YCOOR EPZ EDZ+1
BUFLO EPZ EDZ+2
BUFHI EPZ EDZ+3
TBUFLO EPZ EDZ+4
TBUFHI EPZ EDZ+5
;
ED = $5000
;
EDITINIT = ED
SHOWBOXS = ED+3
SHOWGR = ED+6
CHKBUFF = ED+9
CLRBUFF = ED+12
ORBUFF = ED+15
BUFFSAVE = ED+18
BASECALC = ED+21
SETPLOTX = ED+24
SETBIT = ED+27
CLRBIT = ED+30
PRINTGR = ED+33
DRAWTEXT = ED+36
DOSHAPE = ED+39
EDITLOOP = ED+42
FONTMODS = ED+45
;
REFLINES = ED+48
REFX1 = ED+48
REFY1 = ED+49
REFY2 = ED+50
REFFLAGS = ED+51
RESETBIT = ED+52
;
EDITBUFF = $7800
UNDOBUFF = EDITBUFF+$240
;
;
;
ICL "S:COMMON"

View File

@ -0,0 +1,449 @@
NLS
TTL "S:D000"
ORG = $D000
;
; 02/09/85
;
; Border routine that is used during
; printing. It sits at $D000, $8B$8B
;
; by Roland Gustafsson
;
MASKBUFF = $BB00
SUPPGET = $4000
SUPPBORD = ORG
SWAPRAM = $02C0
;
;
TMP0 EPZ $3A
TMP1 EPZ $3B
TMP2 EPZ $3C
TMP3 EPZ $3D
;
BORDER EPZ $80
BUFFER EPZ $82
MASK EPZ $84
BASELO EPZ $86
BASEHI EPZ $87
SCANLINE EPZ $88
DOACROSS EPZ $89
COUNTER EPZ $8A
;
FLIPPER = $9080
;
BORDDATA = $DE00
;-----------
ORG ORG
OBJ $0800
;-----------
JMP DRAWBORD
;
; Move swap routine down to its home
; and call it.
;
TAX
;
LDY #$3F
^0 LDA SWPRAM,Y
STA SWAPRAM,Y
DEY
BPL <0
;
LDA /SUPPGET-1
PHA
LDA #SUPPGET-1
PHA
TXA
JMP SWAPRAM
;-----------
;
; Swap RAMcard with $4000, 8 pages.
;
SWPRAM PHA
BIT $C08B
BIT $C08B
LDX #8
LDY #END
LDA /END
STY TMP0
STA TMP1
LDY #0
LDA /SUPPGET
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
BIT $C081
PLA
RTS
;-----------
;
; Draw the border
;
; Point to the border data
;
DRAWBORD LDA #BORDDATA
LDY /BORDDATA
LDX $8300
CPX #1
BNE >0
INY
;
^0 STA BASELO
STY BASEHI
;
JSR SETMASKS
;
; Generate buffer address
;
BORDLOOP LDA SCANLINE
ASL
ADC #$20
STA BUFFER+1
LDA #0
STA BUFFER
;
; Clear first bytes to zero
;
LDY #$24
^0 STA (BUFFER),Y
DEY
BPL <0
LDA #$25
STA BUFFER
;
; Check for top or bottom
;
LDX SCANLINE
CPX DOACROSS
BEQ DOLINE
DEX
CPX DOACROSS
BEQ DOLINE
;
; Not top or bottom, so do edges
;
; Left side first
;
LDX #2
LDA #0
JSR GETADR
LDA #0
JSR STORE
;
; Now skip to right side
;
LDA #$C3
STA BUFFER
INC BUFFER+1
;
; Store right side
;
LDA #2
JSR STORE
;
; Now go for nextline
;
NEXTLINE LDY #10
LDA #0
^0 STA (BUFFER),Y
DEY
BPL <0
INC SCANLINE
DEC COUNTER
BNE BORDLOOP
RTS
;-----------
;
; Do either top or bottom line
;
; Determine if top or bottom
;
DOLINE LDA #1 ; bottom
LDX DOACROSS
CPX #$18
BEQ >0
LDA #0
;
^0 STA TMP2
;
; First do left corner
;
LDX #0
LDA TMP2
JSR GETADR
JSR STORTMP2
;
; Now fill in 17 borders
;
LDX #1
LDA TMP2
JSR GETADR
;
LDX #17
^0 JSR STORTMP2
DEX
BNE <0
;
; Next do right corner
;
INC TMP2
INC TMP2
LDX #0
LDA TMP2
JSR GETADR
JSR STORTMP2
JMP NEXTLINE
;
STORTMP2 LDA TMP2
;
; Fall through to store
;----------------------
;
; STORE border
;
; A=mask, 0=normal
; 1=bottom
; 2=right
; 3=bottom and right
;
YFLIP EPZ TMP3
;
STORE LDY #0
STY TMP0
AND (BASELO),Y
LSR
ROR YFLIP
LSR
BCC >0
LDY #22
;
^0 STY TMP1
;
^1 LDY TMP0
LDA (MASK),Y
BIT YFLIP
BPL >2
TAY
LDA FLIPPER,Y
;
^2 LDY TMP1
AND (BUFFER),Y
STA >3+1
LDY TMP0
LDA (BORDER),Y
BIT YFLIP
BPL >3
TAY
LDA FLIPPER,Y
^3 ORA #00
LDY TMP1
STA (BUFFER),Y
;
BCS >4
INY
INY
^4 INC TMP0
DEY
STY TMP1
LDA TMP0
EOR #23
BNE <1
;
LDA #23
;
INCBUF CLC
ADC BUFFER
STA BUFFER
BCC >1
INC BUFFER+1
^1 RTS
;-----------
;
; Generate BORDER and MASK addresses
; given A=00,ignore config
; 01,use config (for right)
; X=border # 0-2
;
BORDLOC HEX 043464
;
GETADR LDY #0
AND (BASELO),Y
EOR SCANLINE
LSR
BCS GETADR2
LDY #$18
;
GETADR2 LDA BASELO
STA BORDER
LDA BASEHI
STA BORDER+1
;
TYA
CLC
ADC BORDLOC,X
STA >2+1
;
CLC
ADC BORDER
STA BORDER
BCC >1
INC BORDER+1
;
^1 LDA #MASKBUFF
LDY /MASKBUFF
;
CLC
^2 ADC #00
STA MASK
BCC >3
INY
^3 STY MASK+1
RTS
;-----------
;
; Clear mask tables and if mask
; generator bit is set, create
; the MASKBUFF table.
;
SETMASKS JSR CLRMASKS
LDY #0
LDA (BASELO),Y
AND #4
BNE >0
RTS
;
^0 LDX #2
;
^1 LDY #0
JSR GETADR2
JSR DOMASK1
JSR DOMASK2
DEX
BPL <1
RTS
;-----------
CURRENT EPZ TMP2
;
; Create mask from bottom to top,
; storing values into MASK
;
DOMASK1 CPX #2
BEQ QUITMASK
;
LDY #46
STY TMP1
LDY #22
;
^0 STY TMP0
LDA #$7F
^1 STA CURRENT
AND (BORDER),Y
BEQ >2
LDA CURRENT
ASL
AND #$7F
BPL <1
;
^2 LDA CURRENT
STA (MASK),Y
BNE >3
;
; If the right to left scan up mask
; hits zero, and we are doing a
; corner, quit!
;
CPX #0
BEQ QUITMASK
;
^3 CMP #$7F
BNE >6
;
LDA #$7F
LDY TMP1
^4 STA CURRENT
AND (BORDER),Y
BEQ >5
LDA CURRENT
ASL
AND #$7F
BPL <4
;
^5 LDA CURRENT
STA (MASK),Y
;
^6 DEC TMP1
LDY TMP0
DEY
BPL <0
QUITMASK RTS
;-----------
;
; Create mask by scanning right
; to left. If corner, then AND
; data together to get correct
; mask.
;
DOMASK2T AND (MASK),Y
AND #$FF
;
DOMASK2 CPX #1
BEQ QUITMASK
;
; X=0 means corner AND (MASK),Y
; X=2 means left AND #$FF
;
LDA DOMASK2T,X
STA DOMASK2M
LDA DOMASK2T+1,X
STA DOMASK2M+1
;
LDY #46
;
^0 LDA #$7F
STA CURRENT
;
^1 LDA (BORDER),Y
AND CURRENT
BEQ >2
EOR CURRENT
STA CURRENT
;
^2 LDA CURRENT
DOMASK2M ORA (MASK),Y
STA (MASK),Y
DEY
BMI >3
CPY #23
BNE <1
DEY
BNE <0
;
^3 RTS
;-----------
;
; Clear mask tables to zero
;
CLRMASKS LDY #48*3
LDA #0
^0 DEY
STA MASKBUFF,Y
BNE <0
RTS
;-----------
END:
;
;
;
USR "O:D000",ORG
END

View File

@ -0,0 +1,3 @@
NLS
; S:FOEDIT
ICL "S:FOEDIT1"

View File

@ -0,0 +1,844 @@
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"

View File

@ -0,0 +1,602 @@
;
; S:FOEDIT2
;
; Routines necessary to edit
; single character.
;
; Main Editor loop
;
EDITCHAR JSR EDITLOOP
JSR >1
JMP EDITCHAR
;
^1 JSR PARSE
.DA #'L',CMDLINES
.DA #'R',CMDRAYS
.DA #'B',CMDBOX
.DA #'O',CMDOVAL
;
.DA #'C'-$40,CMDCLEAR
.DA #'P'-$40,CMDPRINT
.DA #'D'-$40,CMDDEVIC
.DA #'I'-$40,CMDREFLN
.DA #'A'-$40,CMDADJST
.DA #'R'-$40,CMDRESTR
.DA #' ',CMDSPACE
.DA #ESC,EDITDESC
.DA #'S'-$40,EDITDCR
BRK
RTS
;-----------
;
; Restore old character
;
CMDRESTR JSR BUFFSAVE
JSR LOADCHAR
JMP SHOWGR
;-----------
;
; Leave the EDIT mode
;
EDITDESC SEC
HEX 24
EDITDCR CLC
PLA
PLA
RTS
;-----------
;
; Toggle reference lines
;
CMDREFLN LDA REFFLAGS
EOR #$80
STA REFFLAGS
JMP SHOWGR
;-----------
;
; Adjust reference lines
;
ARY1 = 34
ARY2 = ARY1+80
;
; Save ref lines and X,Y
;
CMDADJST JSR BLAKDONE
LDA XCOOR
PHA
LDA YCOOR
PHA
LDX #2
^0 LDA REFX1,X
PHA
DEX
BPL <0
;
BIT REFFLAGS
BMI >1
JSR CMDREFLN
;
^1 JSR BLAKRIT2
LDX #26
LDY #ARY1
LDA #0
JSR SHOWAROW
JSR PRINT
BYT PRSPC,9
.DA #PRLOC,227,#ARY1+3
BYT 'MOVE',CR
BYT 'CURSOR',CR
BYT 'TO',CR
BYT 'ADJUST',CR
BYT PRCNTR
.DA #PRHTAB,XCENT
BYT 'INDEX',CR
.DA #PRSTR,TXTLINES,#CR
;
BYT PRVTAB,ARY2
BYT 'PRESS',CR
.DA #PRSTR,TXTRET,#CR
.DA #PRSTR,TXTWD,#CR
BRK
JSR SHOWCOOR
;
LDX #1
JSR ADJUST1
BCS >0
LDX #0
JSR ADJUST1
;
; If SEC then restore ref lines
;
^0 ROR TMP0
LDX #0
^1 PLA
BIT TMP0
BPL >2
STA REFX1,X
^2 INX
CPX #3
BLT <1
PLA
STA YCOOR
PLA
STA XCOOR
JSR SHOWGR
JMP SCR2RITE
;---
;
; Enter with X=0 or 1, move the
; reference lines.
;
ADJUST1 STX MOVERFY
LDA REFY1,X
STA YCOOR
LDA REFX1
STA XCOOR
LDX #6
CLC
JMP DOSHAPE
;
; DOSHAPE calls this routine which
; erases the old reference lines.
; DOSHAPE will plot the new lines
; automatically upon return.
;
MOVEREFS STX >8+1
STY >9+1
;
; Erase horizontal line
;
LDX #00
MOVERFY = *-1
LDY REFY1,X
LDX #FONTW-1
^0 JSR MOVEREF1
DEX
BPL <0
;
; Erase vertical line
;
LDX REFX1
LDY #FONTH-1
^1 JSR MOVEREF1
DEY
BPL <1
;
^8 LDX #00
STX REFX1
^9 LDA #00
LDX MOVERFY
STA REFY1,X
RTS
;---
;
; Reset bit at X,Y
;
MOVEREF1 STX XCOOR
STY YCOOR
JSR RESETBIT
LDX XCOOR
LDY YCOOR
RTS
;-----------
;
; Clear work area
;
CMDCLEAR JSR BLAKBOTM
JSR PRINT
.DA #PRLOC,140,#185
BYT PRCNTR
.DA #PRSTR,TXTRET
.DA #PRSTR,TXTTOCLR
.DA #PRSTR,TXTCHAR,#CR,#0
JSR GETKEY
CMP #CR
BNE >0
JSR BUFFSAVE
JSR CLRBUFF
JSR SHOWGR
^0 JMP SCR2BOTM
TXTCHAR BYT 'CHARACTER',0
;-----------
;
; Check SETUP
;
CKPRINT JSR BLAKBOTM
JSR PRINT
.DA #PRLOC,140,#184
BRK
LDA #'-'
JMP CHKPRINT
;-----------
;
; Print character
;
CMDPRINT JSR CKPRINT
BCS >0
JSR PRINT
BYT PRCNTR
.DA #PRSTR,TXTPRET
.DA #PRSTR,TXTTOPRN
.DA #PRSTR,TXTCHAR
BYT CR,0
JSR GETKEY
CMP #CR
BNE >0
JSR PRINTGR
^0 JMP SCR2BOTM
;-----------
;
; Change input device
;
CMDDEVIC JSR DEVICECH
JMP SCR2BOTM
;-----------
;
; Shape handlers
;
CMDLINES LDA #0
HEX 2C
CMDRAYS LDA #1
HEX 2C
CMDBOX LDA #2
HEX 2C
CMDOVAL LDA #3
JSR SHAPHELP
JSR SHOWCOOR
;
LDA SHAPETYP
AND #7
STA >0+1
CLC
;
^0 LDX #00
JSR DOSHAPE
BCS >1
LDA #00
SHAPETYP = *-1
ASL
BMI <0
;
; Fix up screen when done
;
^1 JMP SCR2RITE
;-----------
;
; Print help screen
;
HY1 = 2
HY2 = 36
HY3 = 105
HY4 = 164
;
SHAPHELP STA TMP0
ASL
ADC TMP0
ASL
TAX
LDY SHAPHLP9+0,X
LDA SHAPHLP9+1,X
STY >0+1
STA >0+2
LDA SHAPHLP9+2,X
STA SHAPETYP
;
LDY SHAPHLP9+3,X
LDA SHAPHLP9+4,X
STY >4+1
STA >4+2
;
LDA SHAPHLP9+5,X
STA HELPTEMP
;
JSR SETPLOTX
JSR BUFFSAVE
;
JSR BLAKDONE
JSR BLAKRIT2
JSR PRINT
BYT PRBIG,PRCNTR
.DA #PRLOC,XCENT,#HY1
^0 .DA #PRSTR,$FFFF,#NOCR,#0
;
LDX #26
LDY #HY2
LDA #0
JSR SHOWAROW
JSR PRINT
.DA #PRLOC,227,#HY2+3
BYT 'MOVE',CR
BYT 'CURSOR',CR
BYT 'TO',CR
BYT 'DRAW',CR
.DA #PRLOC,XCENT,#HY2+48
BYT PRCNTR
BYT PRCSPACE,1
.DA 'N ',#PRSTR,TXTNEGA,#CR
BYT PRCSPACE,2
BYT PRCNTR
.DA #PRLOC,XCENT,#HY3
BYT 'PRESS',CR
.DA #PRSTR,TXTRET,#CR
BYT 'TO PLACE',CR
BYT PRCNTR
^4 .DA #PRSTR,$FFFF,#CR
BYT RTOSWITE,26,HY4-6,14,2
BYT PRVTAB,HY4
BYT 'PRESS <ESC>',CR,0
;
LDA #00
HELPTEMP = *-1
BPL >5
JSR PRINT
BYT PRCNTR
.DA #PRSTR,TXTWD,#CR,#0
JMP >6
;
^5 JSR PRINT
BYT PRCNTR
BYT 'TO GO BACK',CR,0
;
^6 RTS
;
TXTWD BYT 'WHEN DONE',0
;
; 64 means stay in shape routine
; until ESC is pressed. 128 means
; don't re-initialize X1,Y1 each time
; the remaining number is the shape
; number used by DOSHAPE
;
SHAPHLP9 .DA TXTLINES,#0+64
.DA TXTLINE,#$80
;
.DA TXTRAYS,#0+64+128
.DA TXTLINE,#$80
;
.DA TXTBOX,#2
.DA TXTBOX,#$00
;
.DA TXTOVAL,#4
.DA TXTOVAL,#$00
;
TXTLINE BYT 'LINE',0
TXTLINES BYT 'LINES',0
TXTRAYS BYT 'RAYS',0
TXTBOX BYT 'BOX',0
TXTOVAL BYT 'OVAL',0
;-----------
;
; Show next page
;
CMDSPACE INC PAGENUM
LDA PAGENUM
EOR #4
BNE SHOWPAGE
STA PAGENUM
;
; Show help screen
;
SHOWPAGE JSR BLAKPAGE
;
LDY #0
PAGENUM = *-1
JSR JMPVECTS
ADR PAGE1
ADR PAGE2
ADR PAGE3
ADR PAGE4
;
XCENT = 231
XEDGE = 182
XR1 = 13
XR2 = 24
P1SPC = 13
;
PG1Y = 69
PAGE1 JSR PRINT
BYT PRCSPACE,1
BYT PRSPC,P1SPC
.DA #PRLOC,XEDGE,#PG1Y
.DA #PRSTR,TXTCTRL,'P',#CR
.DA #PRSTR,TXTCTRL,'C',#CR
.DA #PRSTR,TXTCTRL,'D',#CR
.DA #PRSTR,TXTCTRL,'L',#CR
.DA #PRSTR,TXTCTRL,'I'
BYT PRSPC,8+P1SPC,CR
.DA #PRSTR,TXTCTRL,'A'
BYT PRSPC,8+P1SPC,CR
.DA #PRSTR,TXTCTRL,'R',#CR
;
BYT PRRITE,PRSPC,P1SPC
.DA #PRLOC,279,#PG1Y
BYT 'PRINT',CR
BYT 'CLEAR',CR
BYT 'DEVICE',CR
BYT 'LOCK',CR
BYT PRSPC,8
BYT 'INDEX',CR
BYT PRSPC,P1SPC
BYT 'LINES',CR
BYT PRSPC,8
BYT 'ADJUST',CR
BYT PRSPC,P1SPC
BYT 'INDEX LINES',CR
BYT 'REDO',CR
;
BRK
RTS
;-----------
PAGE2 JSR PRINT
BYT PRSPC,14
BYT PRCSPACE,1
.DA #PRLOC,XEDGE,#66
;
BYT 'D - DRAW',CR
BYT 'E',PRRTAB,XR1,'- ERASE',CR
BYT '1',PRRTAB,XR1,'- INSERT ROW',CR
BYT '2',PRRTAB,XR1,'- DELETE ROW',CR
;
BYT PRSPC,8
BYT '3',PRRTAB,XR1,'- INSERT',CR
BYT PRSPC,14,PRRTAB,XR2
.DA #PRSTR,PAGE2COL,#CR
;
BYT PRSPC,8
BYT '4',PRRTAB,XR1,'- DELETE',CR
BYT PRSPC,14,PRRTAB,XR2
.DA #PRSTR,PAGE2COL,#CR
;
BYT 'F',PRRTAB,XR1,'- FLOOD FILL',CR
BRK
RTS
;
PAGE2COL BYT 'COLUMN',0
;-----------
PAGE3 JSR PRINT
BYT PRCSPACE,1
.DA #PRLOC,XEDGE,#66
;
BYT PRSPC,8
BYT 'H - FLIP',CR
BYT PRSPC,12,PRRTAB,XR2
BYT 'HORIZONTAL',CR
;
BYT PRSPC,8
BYT 'V',PRRTAB,XR1,'- FLIP',CR
BYT PRSPC,12,PRRTAB,XR2
BYT 'VERTICAL',CR
;
BYT 'N',PRRTAB,XR1
.DA #PRSTR,TXTNEGA,#CR
BYT 'ESC - GO BACK',CR
BRK
LDX #26
LDY #133
LDA #1
JSR SHOWAROW
JSR PRINT
BYT PRRITE
.DA #PRLOC,279,#148
BYT 'SCROLL',CR,0
RTS
TXTNEGA BYT '- NEGATIVE',0
;-----------
PAGE4Y = 105
Z1 = 17
Z2 = PAGE4Y-1
;
PAGE4 JSR PRINT
.DA #PRLOC,XCENT,#66
BYT PRCNTR
BYT 'POSITION',CR
BYT 'CURSOR',CR
BYT '& PRESS:',CR
; BYT RTOSWITE,26,92,14,2
BYT PRLEFT,PRSPC,Z1
BYT PRVTAB,PAGE4Y
.DA #PRHTAB,XEDGE
;
BYT 'L',PRRTAB,XR1,'- '
.DA #PRSTR,TXTLINES,#CR
BYT PRPIC,37,Z2,2,9
HEX 813E70230F2081208123602018200620
HEX C13F
;
BYT 'R',PRRTAB,XR1,'- '
.DA #PRSTR,TXTRAYS,#CR
BYT PRPIC,37,Z2+Z1,2,9
HEX 218131811181191809064D0135810F81
HEX C13F
;
BYT 'B',PRRTAB,XR1,'- '
.DA #PRSTR,TXTBOX,#CR
BYT PRPIC,37,Z2+Z1*2,2,9
HEX C13F0120012001200120012001200120
HEX C13F
;
BYT 'O',PRRTAB,XR1,'- '
.DA #PRSTR,TXTOVAL,#CR
BYT PRPIC,37,Z2+Z1*3,2,9
HEX 70030C0C021001200120012002100C0C
HEX 7003
BRK
RTS
;-----------
;
; Erase the top of the right side
; used by EDIT screen.
;
BLAKRIT2 JSR PRINT
BYT RTOSBLAK,26,0,14,16
BRK
;
; Erase right side of screen
;
BLAKRITE JSR PRINT
BYT RTOSBLAK,26,16,14,176
BRK
;
; Erase bottom of screen
;
BLAKBOTM JSR PRINT
BYT RTOSBLAK,0,181,40,11,0
CLC
RTS
;
; Erase help page area
;
BLAKPAGE JSR PRINT
BYT RTOSBLAK,26,63,14,114,0
RTS
;-----------
;
; Show right part of screen
;
SCR2RITE JSR TOP2
JSR BLAKRIT2
LDX #26
LDY #0
TYA
JSR SHOWAROW
JSR PRINT
.DA #PRLOC,227,#11
BYT 'MOVE',CR
BYT 'CURSOR',CR
.DA #PRLOC,182,#39
BYT PRSPC,11
BYT PRCSPACE,1
BYT 'P - PATTERN',CR
BYT 'X',PRRTAB,XR1,'- MIRRORS',CR
BYT RTOSWITE,26,61,14,2
BYT RTOSWITE,26,177,14,2
BRK
JSR SHOWBOXS
JSR SHOWPAGE
;
; Display bottom help stuff
;
SCR2BOTM JSR BLAKBOTM
JSR SHOWCOOR
JSR PRINT
.DA #PRHTAB,169
BYT PRRITE,PRCSPACE,1
BYT 'U - UNDO',NOCR,0
;
LDA #XEDGE/7
JMP SPACEBAR
;-----------
;
; Show coordinates X= Y=
;
SHOWCOOR JSR PRINT
.DA #PRLOC,7,#185
BYT 'X=',NOCR
.DA #PRHTAB,49
BYT 'Y=',NOCR,0
RTS
;-----------
;
;
;
ICL "S:FOEDIT3"

View File

@ -0,0 +1,653 @@
;
; S:FOEDIT3
;
; Low level stuff
; ---------------
;
; MOVEFONT: given Y=size 0,1 or 2,
; move font loaded at BUF2
; into BUF1 with sizing.
;
; MOVUFONT: move user font to BUF2
;
; LOADCHAR: given OLDCHAR=character
; move data into EDITBUFF
;
; SAVECHAR: given NEWCHAR=char to be
; replaced, remove that
; character from buffer.
; If not enough room then
; SEC is returned.
;
; SHOWDONE: show which characters have
; been altered.
;
;--------------
MFZ EPZ $80
;
MFSIZE EPZ MFZ
MFSIZEX2 EPZ MFZ+1
MFSIZET EPZ MFZ+2
MFCHAR EPZ MFZ+3
MFDESTL EPZ MFZ+4
MFDESTH EPZ MFZ+5
MFSOURL EPZ MFZ+6
MFSOURH EPZ MFZ+7
MFHEIGHT EPZ MFZ+8
MFWIDTH EPZ MFZ+9
MFTMPW EPZ MFZ+10
MFFDATA EPZ MFZ+11
MFBUILD EPZ MFZ+12
;
; Given Y=0,1 or 2 for small, medium
; or large sizing, move font in
; FONT2BUF down to official font
; buffer. This routine also removes
; and extraneous lint bits.
;
^0 BYT 1,2,4
;
MOVEFONT STY MFSIZE
LDA <0+0,Y
STA MFSIZEX2
;
; Initialize destination pointer
;
LDY #FONT1BEG
LDA /FONT1BEG
STY MFDESTL
STA MFDESTH
;
; Scan through the entire font,
; skipping: " " and "@"
;
LDX #1
MFNXCHAR STX MFCHAR
CPX #'@'-$20
BEQ MFSKIP
;
; Point to font data
;
LDA FONT2AL,X
STA MFSOURL
LDA FONT2AH,X
CLC
ADC /FONT2BUF-FONT1BUF
STA MFSOURH
;
LDA FONT2W,X
AND #$7F
STA MFWIDTH
STA FONT1W,X
;
LDA FONT2H,X
STA MFHEIGHT
STA FONT1H,X
;
; Compute new size
;
LDY MFSIZE
^0 DEY
BMI >1
ASL FONT1W,X
ASL FONT1H,X
JMP <0
;
; Add "done bit" back in
;
^1 LDA FONT2W,X
AND #$80
ORA FONT1W,X
STA FONT1W,X
;
; Update data pointer
;
LDA MFDESTL
STA FONT1AL,X
LDA MFDESTH
STA FONT1AH,X
;
JSR MFDOCHAR
;
MFSKIP LDX MFCHAR
INX
CPX #'Z'-$1F
BCC MFNXCHAR
LDA MFDESTL
SBC #FONTBUFF
STA LENLO
LDA MFDESTH
SBC /FONTBUFF
STA LENHI
RTS
;---
;
; Move character to FONT1BUF
;
MFDOCHAR LDY MFSOURL
LDA MFSOURH
STY >1+1
STA >2+1
LDA MFSIZEX2
^0 PHA
^1 LDY #00
^2 LDA #00
STY MFSOURL
STA MFSOURH
JSR MFDOLINE
PLA
SEC
SBC #1
BNE <0
DEC MFHEIGHT
BNE MFDOCHAR
RTS
;---
;
; Move one line of font data
;
MFDOLINE LDA MFWIDTH
STA MFTMPW
LDX #8
^0 LDY #0
LDA (MFSOURL),Y
STA MFFDATA
INC MFSOURL
BNE *+4
INC MFSOURH
LDY #8
;
^1 LDA MFSIZEX2
STA MFSIZET
ASL MFFDATA
^2 PHP
ROL MFBUILD
DEX
BNE >3
JSR MFSTORE
LDX #8
^3 PLP
DEC MFSIZET
BNE <2
;
DEC MFTMPW
BEQ >4
DEY
BNE <1
BEQ <0
;
^4 CPX #8
BEQ MFSRTS
;
; Compensate for straggling bits
;
^5 ASL MFBUILD
DEX
BNE <5
;
; Fall into STORE
;
; Store a byte into FONT1BUF
;
MFSTORE LDA MFBUILD
STY >0+1
LDY #0
STA (MFDESTL),Y
INC MFDESTL
BNE >0
INC MFDESTH
^0 LDY #00
MFSRTS RTS
;-----------
;
; Move user font into BUF2
; and make it look like a normal
; font that is loaded at $6000
;
MOVUFONT LDY #0
^0 LDA UFONTBUF,Y
STA FONT2BUF,Y
LDA UFONTBUF+$100,Y
STA FONT2BUF+$100,Y
LDA UFONTBUF+$200,Y
STA FONT2BUF+$200,Y
LDA UFONTBUF+$300,Y
STA FONT2BUF+$300,Y
INY
BNE <0
;
; Adjust data pointers
;
LDY #'Z'-$20
^1 LDA FONT2AH,Y
SEC
SBC /UFONTBUF-FONT1BUF
STA FONT2AH,Y
DEY
BPL <1
RTS
;-----------
;
; Load char into edit buffer
;
LOADCHAR JSR CLRBUFF
;
; Compare character with edit
; buffer BEQ if the same, BNE
; if different.
;
CMPCHAR LDY OLDCHAR
LDA FONT1AL,Y
STA >1+1
LDA FONT1AH,Y
STA >1+2
JSR GETXYLEN
STX NEWWITH
STY NEWHITE
JSR PNTEDIT
^0 LDY #0
^1 LDA $FFFF,X
INX
EOR (TMP0),Y
STA (TMP0),Y
INY
CPY NEWWITH
BLT <1
JSR INCEDIT
DEC NEWHITE
BNE <0
JMP CHKBUFF
;-----------
;
; Save the character
;
; First check to see if there is
; enough room for the edited char.
;
; This is done by subracting out the
; length of the character that is to
; be replaced and adding in the new
; length of the edited character. If
; this value is greater than or equal
; to $17F4, then MEMORY FULL!!!
;
SAVECHAR JSR FINDDIM
LDY NEWCHAR
LDA FONT1AL,Y
STA TMP0
LDA FONT1AH,Y
STA TMP1
JSR GETXYLEN
STA OLDLEN
;
; Subtract out old char length
;
LDA LENLO
LDY LENHI
SEC
SBC OLDLEN
BCS >0
DEY
;
; Add in new char length
;
^0 CLC
ADC NEWLEN
BCC >1
INY
;
; Is it too big?
;
^1 CPY /MAXLEN+1
BNE >2
CMP #MAXLEN+1
^2 BCC >3
RTS
;
; Enough room, so:
;
; Remove character given in NEWCHAR
;
; TMP0.1 points to data for char
; to be removed
;
; TMP2.3 points to data just above
; char to be removed
;
^3 LDA OLDLEN
CLC
ADC TMP0
STA TMP2
LDA TMP1
ADC #0
STA TMP3
;
; Scan through FONT DATA and fix
; all pointers that point to data
; above this character
;
LDX #$3A
^0 CPX #'@'-$20
BEQ >2
;
LDA FONT1AH,X
CMP TMP1
BNE >1
LDA FONT1AL,X
CMP TMP0
^1 BLT >2
;
LDA FONT1AL,X
SEC
SBC OLDLEN
STA FONT1AL,X
BCS >2
DEC FONT1AH,X
;
^2 DEX
BPL <0
;
; Calculate new length by
; subtracting length of removed char
;
LDA LENLO
LDY LENHI
SEC
SBC OLDLEN
BCS >3
DEY
^3 STA LENLO
STY LENHI
;
; Set TMP4.5 to first available byte
;
CLC
ADC #FONTBUFF
STA TMP4
TYA
ADC /FONTBUFF
STA TMP5
;
; Move data down
;
LDY #0
^0 LDA TMP1
CMP TMP5
BNE >1
LDA TMP0
CMP TMP4
BEQ >2
^1 LDA (TMP2),Y
STA (TMP0),Y
INC TMP0
BNE *+4
INC TMP1
INC TMP2
BNE *+4
INC TMP3
JMP <0
;
; Move edited character to its home
;
; Given TMP4.5 points to end of file
; NEWWITH, NEWHITE and NEWCHAR.
;
^2 LDY NEWCHAR
LDA NEWWITH
;
; Set "done bit"
;
ORA #$80
STA FONT1W,Y
;
LDA NEWHITE
STA FONT1H,Y
LDA TMP4
STA >2+1
STA FONT1AL,Y
LDA TMP5
STA >2+2
STA FONT1AH,Y
;
; Calc width in bytes
;
LDX NEWWITH
JSR GETLENTH
STX NEWWITH
;
JSR PNTEDIT
;
; Move EDITBUFF data to end of
; FONT data file
;
^0 LDY #0
^1 LDA (TMP0),Y
^2 STA $FFFF,X
INX
INY
CPY NEWWITH
BLT <1
JSR INCEDIT
DEC NEWHITE
BNE <0
;
TXA
CLC
ADC LENLO
STA LENLO
BCC >3
INC LENHI
^3 CLC
RTS
;-----------
;
; Given Y=character
; return: X=width in bytes
; Y=height in bytes
; A=length in bytes
;
GETXYLEN LDA FONT1W,Y
AND #$7F
TAX
LDA FONT1H,Y
TAY
;
; Calculate length given
; X=width, Y=height
; See above for returned values
;
GETLENTH STY >1+1
DEX
TXA
LSR
LSR
LSR
TAX
INX
LDA #0
CLC
STX >0+1
^0 ADC #00
DEY
BNE <0
^1 LDY #00
RTS
;---
;
; Point to EDITBUFF
;
PNTEDIT LDY #EDITBUFF
LDA /EDITBUFF
STY TMP0
STA TMP1
LDX #0
RTS
;---
;
; INC EDITBUFF pointer by 11
;
INCEDIT LDA TMP0
CLC
ADC #11
STA TMP0
BCC >0
INC TMP1
^0 RTS
;-----------
;
; Find dimensions of character
; in the edit buffer.
;
FINDDIM LDA XCOOR
PHA
LDA YCOOR
PHA
;
LDA #0
STA NEWWITH
STA NEWHITE
STA XCOOR
STA YCOOR
;
^0 JSR BASECALC
AND (BUFLO),Y
BEQ >2
;
LDA XCOOR
CMP NEWWITH
BLT >1
STA NEWWITH
;
^1 LDA YCOOR
CMP NEWHITE
BLT >2
STA NEWHITE
;
^2 INC XCOOR
LDA XCOOR
EOR #FONTW
BNE <0
STA XCOOR
INC YCOOR
LDA YCOOR
EOR #FONTH
BNE <0
;
INC NEWWITH
INC NEWHITE
;
LDX NEWWITH
LDY NEWHITE
JSR GETLENTH
STA NEWLEN
PLA
STA YCOOR
PLA
STA XCOOR
RTS
;-----------
;
; Display all the letters in font
; and inverse those that have been
; altered.
;
SDCENTER BYT 2,0,4,3,4,5
BYT 1,4,4,6,6,4
SDCRCHR BYT '!&,16;AFKOSW',0
;
SHOWDONE LDY #0
STY SDYLOC
LDY #SDY-SDH
STY SHOWDY
LDA #'!'
SDLOOP PHA
STA SDBOXMD3
TAX
CMP #'@'
BEQ SDSKIP
;
LDY #$FF
^0 INY
LDA SDCRCHR,Y
BEQ >1
PLA
PHA
CMP SDCRCHR,Y
BEQ >0
BNE <0
;
; Start new line
;
^0 LDY #00
SDYLOC = *-1
INC SDYLOC
LDA SDCENTER,Y
CLC
ADC #SDX
STA SHOWDX
LDA SHOWDY
ADC #SDH
STA SHOWDY
STA SDBOXMD1+3
;
; Update X
;
^1 LDA #00
SHOWDX = *-1
STA SDBOXMD0+2
CLC
ADC #SDW/2
STA SDBOXMD1+1
;
; Get char width
;
LDA UFONTW-$20,X
CLC
ADC #SDW
STA SDBOXMD0+4
ADC SHOWDX
STA SHOWDX
;
; Has char been altered?
;
LDA FONT1W-$20,X
BPL >3
;
; Draw white box where letter is to
; be drawn.
;
LDY #00
SHOWDY = *-1
DEY
STY SDBOXMD0+3
LDA #9
^2 PHA
JSR LINES
SDBOXMD0 BYT 'H',WITE,0,0,0,1
INC SDBOXMD0+3
PLA
SEC
SBC #1
BNE <2
LDA #PRINVR
HEX 2C
;
^3 LDA #PRNORM
STA SDBOXMD2
JSR PRINT
SDBOXMD1 .DA #PRLOC,0,#0
SDBOXMD2 BYT PRINVR
SDBOXMD3 BYT ' ',NOCR,0
;
SDSKIP PLA
CLC
ADC #1
CMP #'Z'+1
BEQ >4
JMP SDLOOP
^4 RTS
;-----------
;
;
;
ICL "S:FOEDIT4"

View File

@ -0,0 +1,500 @@
;
; S:FOEDIT4
;
; MAINCODE is the length of the
; code that must fit in the
; $4000.4FFF area
;
MCODE = *-ORG
;
;-----------
;
; Move program to it's home
;
MOVEPROG LDY #0
STY SAVED?
LDX #16
^0 LDA ORGLOAD,Y
^1 STA ORG,Y
INY
BNE <0
INC <0+2+ORGDIFF
INC <1+2+ORGDIFF
DEX
BNE <0
;
LDX #4
^2 LDA TAILEND+ORGDIFF,Y
^3 STA TAILORG,Y
TXA
BNE >4
CPY #$A5
BEQ >5
^4 INY
BNE <2
INC <2+2+ORGDIFF
INC <3+2+ORGDIFF
DEX
BPL <2
;
; Set EDIT routines
;
^5 LDX #FONTW
LDY #FONTH
JSR EDITINIT
JSR FONTMODS
JMP START2
;-----------
TAILEND:
PHS TAILORG
;-----------
;
; Math routines
;
;
; CALCMEM : returns A=% memory used
;
; CALCHEAD: calculates and stores the
; 12 header bytes and also
; calculates the values for
; the space character ($20)
;
CPLMAX = 26
LPPMAX = 14
;-----------
;
; Calculate percentage of memory used
;
MAXLD100 = MAXLEN/100
;
CALCMEM LDY #MAXLD100+1
LDA /MAXLD100+1
STY ACC2LO
STA ACC2HI
LDY LENLO
LDA LENHI
JSR DIVIDE
TYA
RTS
;-----------
;
; Calculate the 12 header bytes
;
;------
CHZ EPZ $80
;
CHMWL EPZ $50+13
CHMWH EPZ $50+14
CHMH EPZ CHZ
;
HEADER = FONTBUFF
;
CALCHEAD JSR STINSTAL
ADR RTS
ADR RTS
HBY FONT2BUF
;
; Transfer font pointers over to
; FONT2BUF
;
JSR TRF1F2
;
; Print sample text to generate width
; variable
;
JSR PRINT
BYT PRRITE
BYT PRCSPACE,0
BYT PRKERN,1
^2 BYT 'ABCDEFGHIJKLM'
BYT 'NOPQRSTUVWXYZ'
CHLCOUNT = *-<2
BYT CR
BYT PRKERN,0
BRK
JSR STSCREEN
;---
;
; Calculate the maximum height
;
LDA #0
LDX #'Z'-$20
^3 CPX #'@'-$20
BEQ >4
CMP FONT1H,X
BGE >4
LDA FONT1H,X
^4 DEX
BNE <3
STA CHMH
;---
;
; Calculate average width and
; store space ($20) values
;
LDY #CHLCOUNT
LDA /CHLCOUNT
STY ACC2LO
STA ACC2HI
LDY CHMWL
LDA CHMWH
JSR DIVIDE
;
; Use 1/2 of average width
;
TYA
LSR
STA FONT1W
LDA #0
STA FONT1H
LDY #FONT1H
LDA /FONT1H
STY FONT1AL
STA FONT1AH
;---
;
; Store the reference line values
;
LDA REFX1
STA FONT1W+$20
LDA REFY1
STA FONT1H+$20
LDA REFY2
STA FONT1AL+$20
LDA #0
STA FONT1AH+$20
;---
;
; Greeting card data
;
LDY #0
LDX #CHGCTABL-CHTABLES
JSR CHCALC
;---
;
; Letterhead data
;
; If the font will fit after it
; has been doubled, then use
; that value instead...
;
LDA CHMH
PHA
CMP #1+FONTH/2
BGE >0
ASL CHMH
;
^0 LDY #4
LDX #CHLHTABL-CHTABLES
JSR CHCALC
;
LDA #52
SEC
SBC CHMH
LSR
CLC
ADC #3
STA HEADER+5
LDA HEADER+7
STA HEADER+6
PLA
STA CHMH
;---
;
; Banner calc
;
LDA #40
SEC
SBC CHMH
LSR
STA HEADER+7
;---
;
; Screen Magic data
;
LDY #8
LDX #CHSMTABL-CHTABLES
;
; fall into CHCALC
;
;------
;
; Calculate group of values
;
; 1) Characters Per Line (CPL)
;
; (WIDTH/MW)
;
CHCALC STY TMP0
STX TMP1
LDY CHMWL
LDA CHMWH
STY ACC2LO
STA ACC2HI
LDY CHTABLES,X
LDA CHTABLES+1,X
JSR DIVIDE
TYA
;
; Make even
;
LSR
ASL
;
CMP #CPLMAX
BLT *+4
LDA #CPLMAX
LDY TMP0
STA HEADER,Y
;
; 2) Y-Increment (YINC)
;
; (MH+ADD VALUE)
;
LDX TMP1
LDA CHMH
CLC
ADC CHTABLES+5,X
STA HEADER+3,Y
;
; 3) Letters Per Page (LPP)
;
; (HEIGHT/YINC)
;
STA ACC2LO
LDA #0
STA ACC2HI
LDY CHTABLES+2,X
LDA CHTABLES+3,X
JSR DIVIDE
TYA
;
CMP #LPPMAX
BLT *+4
LDA #LPPMAX
LDY TMP0
STA HEADER+1,Y
;
; 4) Y starting Top (YTOP)
;
; (HEIGHT-(LPP*YINC))/2
;
STA ACC1LO
LDA #0
STA ACC1HI
LDA HEADER+3,Y
TAY
LDA #0
JSR MULTIPLY
;
LDX TMP1
LDA CHTABLES+2,X
SEC
SBC ACC1LO
STA ACC1LO
LDA CHTABLES+3,X
SBC ACC1HI
LSR
LDA ACC1LO
ROR
LDY TMP0
CLC
ADC CHTABLES+4,X
STA HEADER+2,Y
RTS
;---
;
; Header calc tables
;
CHTABLES:
CHGCTABL .DA CHLCOUNT*391,336
BYT 30
BYT 4
CHLHTABL .DA CHLCOUNT*960,0
BYT 0
BYT 4
CHSMTABL .DA CHLCOUNT*280,192
BYT 0
BYT 4
;-----------
;
; 16 bit multiply routine
;
; ACC1=ACC1*ACC2
;
; Enter with ACC2 in A,Y
;
; Return with result in A,Y
;
MULTIPLY STY ACC2LO
STA ACC2HI
LDA #0
STA REMLO
STA REMHI
LDY #16
^0 ASL REMLO
ROL REMHI
ASL ACC2LO
ROL ACC2HI
BCC >1
CLC
LDA REMLO
ADC ACC1LO
STA REMLO
LDA REMHI
ADC ACC1HI
STA REMHI
^1 DEY
BNE <0
LDY REMLO
LDA REMHI
STY ACC1LO
STA ACC1HI
RTS
;-----------
;
; 16 bit divide routine
;
; ACC1=ACC1/ACC2, remainder in REM
;
; Enter with A=hi, Y=lo
; ACC2LO,HI set
;
; Return with result in A=hi, Y=lo
;
DIVIDE STY ACC1LO
STA ACC1HI
LDA #0
STA REMLO
STA REMHI
LDY #16
^0 ASL ACC1LO
ROL ACC1HI
ROL REMLO
ROL REMHI
SEC
LDA REMLO
SBC ACC2LO
TAX
LDA REMHI
SBC ACC2HI
BCC >1
STX REMLO
STA REMHI
INC ACC1LO
^1 DEY
BNE <0
LDY ACC1LO
LDA ACC1HI
RTS
;-----------
;
; We can't use the FONT1BUF
; because the width table has all
; the hi bits messed up, so
; transfer the width, height and
; pointer tables to the FONT2BUF
; and clear the hi bits.
;
TRF1F2 LDY #0
^0 LDA FONT1BUF,Y
STA FONT2BUF,Y
INY
CPY #$EC
BLT <0
LDY #$3A
^1 LDA FONT2W,Y
AND #$7F
STA FONT2W,Y
DEY
BPL <1
RTS
;-----------
;
; If the FONT hasn't been saved,
; then put warning on the screen.
;
NEEDSAVE LDA SAVED?
BMI >0
CLC
RTS
;
^0 STX >1+1
STY >1+2
JSR >9
JSR MUSIC
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#50
BYT 'WARNING !',CR,CR,CR
BYT 'YOU HAVE NOT SAVED',CR
BYT 'YOUR CURRENT FONT',CR
BYT CR
.DA #PRSTR,TXTPRET,' TO '
^1 .DA #PRSTR,$FFFF,#CR
BYT PRSPC,4,CR
BYT 'OR',CR,CR
BYT CR,PRSPC,8
BYT '<ESC> TO GO BACK',CR,0
;
JSR GETKEY
CMP #CR
BEQ >9
PLA
PLA
^9 JSR PRINT
BYT RTOSBLAK,0,16,40,176,0
SEC
RTS
;-----------
;
; Left justify character
;
LEFTJUST JSR CHKBUFF
BEQ >9
;
LDA XCOOR
PHA
LDA YCOOR
PHA
;
^0 LDX #0
LDY #FONTH-1
STX XCOOR
STY YCOOR
^1 JSR BASECALC
AND (BUFLO),Y
BNE >8
DEC YCOOR
BPL <1
;
; Scroll to the left one bit
;
LDX #FONTH
^2 LDY #5
CLC
^3 LDA (BUFLO),Y
ROL
STA (BUFLO),Y
DEY
BPL <3
LDA BUFLO
ADC #11
STA BUFLO
BCC *+4
INC BUFHI
DEX
BNE <2
BEQ <0
;
^8 JSR SHOWGR
PLA
STA YCOOR
PLA
STA XCOOR
^9 RTS
;-----------
;
;
;
ICL "S:FOEDIT5"

View File

@ -0,0 +1,459 @@
;
; S:FOEDIT5
;
; Print the entire font
;
;-----------
;
; PRCOMS locations
;
CRLF = $1803
SENDGC = $1806
GCOUT = $1809
MTHINK = $180C
MPRINT = $180F
MPAUSE = $1812
COPYCONT = $1815
UPLRK = $1816
;-----------
;
; Print buffer constants
;
BUFWIDTH = 1024
;
BUFMAX = 950
;
PBUFFER = $2000
TBUFFER = $BB00
;-----------
;
; STROUT variables
;
STROUT = $8A00
SPARM = STROUT+3
;
; STROUT mod routines
;
STINSTAL = STROUT+$0F
STSCREEN = STROUT+$12
;
STRZ EPZ $50
;
PIXAD EPZ STRZ
XCUR EPZ STRZ+2
WCOUNT EPZ STRZ+4
BUFFER1 EPZ STRZ+5
BUFFER2 EPZ STRZ+7
SDXBYTE EPZ STRZ+9
DATABYTE EPZ STRZ+10
BCOUNT EPZ STRZ+11
BLDBYTE EPZ STRZ+12
;-----------
PRZ EPZ $80
;
PYEND EPZ PRZ
PXCOOR EPZ PRZ+1
PYCOOR EPZ PRZ+2
PYCOORSV EPZ PRZ+3
;
PXCOUNT EPZ PRZ+4
PYCOUNT EPZ PRZ+5
;
PBUILD EPZ PRZ+6
PYSPACE EPZ PRZ+7
;
PBUFSAVL EPZ PRZ+8
PBUFSAVH EPZ PRZ+9
PBUFL EPZ PRZ+10
PBUFH EPZ PRZ+11
;
PCHAR EPZ PRZ+12
PCHAREND EPZ PRZ+13
PMAXH EPZ PRZ+14
PSTACK EPZ PRZ+15
;-----------
;
; Print the font
;
; First install the font
;
PRINFONT JSR PRINT
BYT PRKERN,1
BYT PRCSPACE,3
BYT PRVTAB,0
BRK
JSR STINSTAL
ADR PFOPTION
ADR PFLINDRW
HBY FONT2BUF
;
JSR TRF1F2
JSR MTHINK
;
TSX
STX PSTACK
LDY #'A'
STY PCHAR
BNE PRSTART
;-----------
;
; Main loop
;
^0 STY PCHAR
;
; Find end of buffer
;
LDX #$FF
^1 INX
LDA TBUFFER,X
BNE <1
STX PCHAREND
;
; Store char into buffer
;
TYA
STA TBUFFER,X
LDA #0
STA TBUFFER+1,X
;
; Will the string fit?
;
LDA #3
STA SPARM+1
JSR UPLRK
JSR STROUT
CPY #BUFMAX
SBC /BUFMAX
BLT >3
;
; String too long, get rid of last
; character and print the string.
;
LDX PCHAREND
LDA #0
STA TBUFFER,X
JSR PRINLINE
;
PRSTART JSR MTHINK
LDY PCHAR
LDA #0
STA TBUFFER
STA PMAXH
BEQ <0
;
^3 LDY PCHAR
LDA FONT2H-$20,Y
CMP PMAXH
BLT >4
STA PMAXH
^4 INY
CPY #'@'
BEQ >5
CPY #'Z'+1
BLT <0
LDY #'!'
BNE <0
;
; Now print
;
^5 LDA PMAXH
BEQ PFABORT
JSR PRINLINE
CLC
;
PFABORT LDX PSTACK
TXS
PHP
JSR STSCREEN
LDA #0
STA SPARM+11
JSR CLRPBUF2
PLP
BCS >0
LDX #12
LDY #3
JSR CRLF
^0 SEC
RTS
;-----------
;
; Clear print buffer
;
CLRPBUFF JSR MTHINK
;
CLRPBUF2 LDY #0
LDX #$20
STY TMP0
STX TMP1
TYA
^0 STA (TMP0),Y
INY
BNE <0
INC TMP1
DEX
BNE <0
RTS
;-----------
;
; SMC for OPTION
;
PFOPTION STA SD0MOD0
STA SD0MOD1
;
STX SD1MOD0
STX SD1MOD1
;
STY SD2MOD0
RTS
;
; LINEDRAW routine
; Buffer is PBUFFER+Y*128.
;
LORESL BRK
LORESH BRK
;
PFLINDRW TYA
LSR
ORA #$20
STA BUFFER1+1
LDA #0
ROR
STA BUFFER1
;
; Update lores screen?
;
LDA LORESL
ADC WCOUNT
STA LORESL
BCC >1
INC LORESH
LDA LORESH
EOR #20
BNE >1
STA LORESH
JSR CHECKESC
JSR UPLRK
;
; Starting X-byte offset = XCUR/8
;
^1 LDA XCUR+1
STA SDXBYTE
LDA XCUR
LSR SDXBYTE
ROR
LSR SDXBYTE
ROR
LSR
STA SDXBYTE
;
; Compensate for bits not to be
; affected to the left.
;
LDA XCUR
AND #7
TAX
LDY #9
SD1MOD0 SEC
ROL BLDBYTE
DEY
DEX
BPL SD1MOD0
;
LDX #0
;
; Do a line of normal size
;
PFLINNRM LDA (PIXAD,X)
EOR #$FF
SD2MOD0 = *-1
STA DATABYTE
INC PIXAD
BNE *+4
INC PIXAD+1
LDX #8
^0 ASL DATABYTE
ROL BLDBYTE
DEY
BNE >1
;
LDY SDXBYTE
INC SDXBYTE
LDA BLDBYTE
SD0MOD0 AND (BUFFER1),Y
STA (BUFFER1),Y
LDY #8
;
^1 DEC WCOUNT
BEQ >2
DEX
BNE <0
BEQ PFLINNRM
;
^2 CPY #8
BEQ >3
LDA BLDBYTE
SD1MOD1 SEC
ROL
DEY
BNE SD1MOD1
LDY SDXBYTE
SD0MOD1 AND (BUFFER1),Y
STA (BUFFER1),Y
^3 RTS
;-----------
;
; Print string to buffer, then print.
;
PRINLINE JSR CLRPBUFF
STA SPARM+1
STA SPARM+2
STA SPARM+3
JSR STROUT
;
LDA PMAXH
CLC
ADC #6
STA PYEND
;
JSR MPRINT
;
LDA #0
;
; Print single line of buffer
;
PFPRLOP1 STA PYCOORSV
;
; Calculate buffer address
;
LSR
TAY
LDA #0
ROR
STA PBUFSAVL
TYA
ADC /PBUFFER
STA PBUFSAVH
;
; Tell printer how many bytes
;
LDX #BUFWIDTH
LDY /BUFWIDTH
JSR SENDGC
;
LDX #0
;
; Output line of data
;
PFPRLOP2 STX PXCOOR
LDX #0
;
; Output 8 bytes
;
PFPRLOP3 STX PXCOUNT
LDX PBUFSAVL
LDA PBUFSAVH
STX PBUFL
STA PBUFH
LDX #0
STX PBUILD
LDY PYCOORSV
;
; Output 1 byte
;
; X=counter, 0-6
; Y=Y-coordinate
;
PFPRLOP4 STX PYCOUNT
STY PYCOOR
;
LDY PXCOOR
LDA (PBUFL),Y
LDX PXCOUNT
AND PBITS8,X
BEQ >1
;
LDY PYCOUNT
LDA PBITS7,Y
ORA PBUILD
STA PBUILD
;
^1 LDA PBUFL
EOR #$80
STA PBUFL
BNE *+4
INC PBUFH
;
LDY PYCOOR
INY
LDX PYCOUNT
INX
CPY PYEND
BEQ >2
CPX #7
BLT PFPRLOP4
;
^2 STX PYSPACE
LDA PBUILD
JSR GCOUT
;
LDX PXCOUNT
INX
CPX #8
BLT PFPRLOP3
;
LDX PXCOOR
INX
CPX #BUFWIDTH/8
BLT PFPRLOP2
;
LDX PYSPACE
LDY #1
JSR CRLF
;
JSR CHECKESC
;
LDA PYCOORSV
CLC
ADC PYSPACE
CMP PYEND
CLC
BEQ >9
JMP PFPRLOP1
;
; Set spacing back to 6 characters
; per inch (12/72)
;
^9 RTS
;
; Bit lookup tables
;
PBITS8 HEX 80
PBITS7 HEX 40201008040201
;-----------
;
; Check for <ESC>, if yes then
; show pausing message and allow
; another <ESC> to abort.
;
CHECKESC JSR POLEKEY
CMP #ESC
BNE <9
JSR DEVICEON
JSR MPAUSE
PHP
JSR DEVICEOF
PLP
BCC <9
JMP PFABORT
;-----------
ACODE = *-TAILORG
DPH
;-----------
;
;
;
USR "FOEDIT,S4",ORGLOAD
LST
MAINLEN = MCODE
ALTLEN = ACODE
ICL "S:COMMONEDIT"

View File

@ -0,0 +1,3 @@
NLS
; S:GREDIT
ICL "S:GREDIT1"

View File

@ -0,0 +1,817 @@
TTL "S:GREDIT"
; S:GREDIT1
NOG
;
ORG = $4000
OBJ = $800
;
; 04/11/85
; 09/11/85 last mod
; (removed ESC)
;
; Graphic Editor main control
;
; The Print Shop Companion Disk
;
; by Roland Gustafsson
;
XSCRNMAX = 192
YSCRNMAX = 140
;
PICTBUFF = $6000
;-----------
ORG ORG
OBJ OBJ
;-----------
START JMP GREDIT
JMP TILEMAGC
JMP CRMAKER
;
ASC "COPYRIGHT 1985 "
ASC "ROLAND GUSTAFSSON"
;
; Graphic Editor main entry point
;
GREDIT JSR SETMAX
JSR BUFFSAVE
;
; Graphic Editor entry point from
; Tile Magic and Creature Maker
;
GREDIT2:
;
; Draw Graphic Editor main screen
;
MAINSCRN JSR CLSCREEN
JSR PRINT
BYT RTOSWITE,0,0,25,16
BYT PRCNTR,PRINVR
.DA #PRLOC,88,#4
.DA #PRSTR,TXTGEDIT,#CR
BRK
;
JSR SHOWGR
JSR SHOWRITE
;
; Main loop
;
^0 JSR EDITLOOP
JSR >1
BCC <0
JMP MAINSCRN
;
^1 JSR PARSE
.DA #'L',CMDLINES
.DA #'R',CMDRAYS
.DA #'B',CMDBOX
.DA #'O',CMDOVAL
.DA #'T',CMDTEXT
;
.DA #'S'-$40,CMDSAVE
.DA #'G'-$40,CMDGET
.DA #'P'-$40,CMDPRINT
.DA #'D'-$40,CMDDEVIC
.DA #'C'-$40,CMDCLEAR
.DA #'Q'-$40,CMDQUIT
.DA #'T'-$40,CMDTILES
.DA #' ',CMDSPACE
TILEMOD .DA #$FF,ESC4TILE
CRMOD .DA #$FF,ESC4CR
BRK
CLC
RTS
;-----------
;
; Show graphic tiled
;
CMDTILES JSR CLSCREEN
JSR PRINT
BYT RTOSWITE,0,0,40,172
BYT PRINVR
BYT PRSPC,52
BYT PRCSPACE,0
.DA #PRLOC,8,#8
BYT '@@@',CR
BYT '@@@',CR
BYT '@@@',CR,0
JMP ANYKEY2
;-----------
;
; Save the graphic
;
CMDSAVE LDY #EDITBUFF
LDA /EDITBUFF
JSR SETADR
JSR SAVEFILE
SEC
^9 RTS
;-----------
;
; Get a graphic
;
CMDGET JSR LOADUNDO
BCS >1
JSR CHKBUFF
BEQ >0
JSR SUPERIMP
BCS CMDGET
DEY
BEQ >0
JSR CLRBUFF
^0 JSR ORBUFF
JSR BUFFSAVE
^1 LSR SCALING
SEC
RTS
;
; Ask question about superimposing:
;
SUPERIMP JSR GETTEXT
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#60
BYT 'WOULD YOU LIKE TO SUPERIMPOSE',CR
BYT 'THE '
.DA #PRSTR,TXTGR,' THAT YOU JUST',#CR
BYT 'SELECTED OVER THE '
.DA #PRSTR,TXTGR,#CR
BYT 'ALREADY IN THE EDIT WINDOW ?',CR
BYT CR,'NO',CR,'YES',CR,0
LDY #0
JSR SELECT
BYT 17,6,99,2
ADR >0
^0 RTS
;
; Load the UNDO buffer with graphic
; that user selects from any of many
; different places! SEC=ESC pressed
;
TXTFRM BYT 'FROM ',0
LOADUNDO JSR GETTEXT
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#52
BYT 'CHOOSE A '
.DA #PRSTR,TXTGR,':',#CR
BYT CR,CR
.DA #PRSTR,TXTFRM,'PRINT SHOP DISK',#CR
.DA #PRSTR,TXTFRM,'COMPANION DISK',#CR
.DA #PRSTR,TXTFRM,'OTHER DISK',#CR
.DA #PRSTR,TXTFRM,#PRSTR,TXTSCRN,' MEMORY',#CR
.DA #PRSTR,TXTFRM,#PRSTR,TXTSCRN,' FILE',#CR
BRK
^0 LDY #00
LOADFROM = *-1
JSR SELECT
BYT 6,28,75,5
ADR RTS
BCS >2
;
STY LOADFROM
JSR >1
BCC >2
JMP LOADUNDO
;
^1 JSR JMPVECTS
ADR >3
ADR GETCDISK
ADR GETODISK
ADR FRAMGRAB
ADR PICTLOAD
;
^2 RTS
;---
;
; Get graphic from PS disk
;
^3 LDA #00
LDX #UNDOBUFF
LDY /UNDOBUFF
JSR GETPDISK
BCS >4
STA <3+1
LDA #$FF
STA CRMOD
^4 RTS
;---
;
; Get graphic from Companion Disk
; SIDE 2 !!!
;
GETCDISK LDA #2
CLC
HEX 24
;
; Get graphic from other disk
;
GETODISK SEC
PHP
LDY #UNDOBUFF
LDA /UNDOBUFF
JSR SETADR
PLP
JMP GETFILE
;
; Load a new hires picture file
;
PICTLOAD JSR SWAPD000
;
JSR SETTYPE
TXTSCRN BYT 'SCREEN',0
BYT 'SCREEN',0
BYT 0
BYT 34
^0 ADR PICTBUFF
ADR $1FF8
;
SEC
JSR GETFILE
PHP
JSR SWAPD000
PLP
BCS >2
JMP FRAMGRAB
;
; Swap $6000.7FFF with $D000 banks
;
SWAPD000 LDY #0
LDA /PICTBUFF
STY TMP0
STA TMP1
LDX #$03
JSR >0
LDX #$0B
;
^0 LDA $C080,X
LDA $C080,X
STY TMP2
LDA #$D0
STA TMP3
LDX #16
;
^1 LDA (TMP0),Y
PHA
LDA (TMP2),Y
STA (TMP0),Y
PLA
STA (TMP2),Y
INY
BNE <1
INC TMP1
INC TMP3
DEX
BNE <1
^2 RTS
;-----------
;
; GET text window
;
GETTEXT JSR WITEBORD
JSR PRINT
BYT PRINVR,PRRITE
.DA #PRLOC,149,#4
.DA #PRSTR,TXTGEDIT
BYT ':',CR
BYT PRBIG,PRLEFT
.DA #PRLOC,160,#1
BYT 'GET',CR,0
JMP ESCBACK
;
; Set type info with correct
; address for load/save
;
SETADR STY >0+0
STA >0+1
JSR SETTYPE
TXTGR BYT 'GRAPHIC',0
TXTGEDIT BYT 'GRAPHIC EDITOR+',0
BYT 0
BYT 4
^0 ADR UNDOBUFF
ADR $240
RTS
;-----------
;
; Print current EDITBUFF to printer
;
CMDPRINT JSR BLAKBOTM
JSR PRINT
.DA #PRLOC,140,#185
BRK
LDA #'-'
JSR CHKPRINT
BCS >0
JSR PRINT
BYT PRCNTR
.DA #PRSTR,TXTPRET
BYT ' TO PRINT '
.DA #PRSTR,TXTGR,#CR,#0
JSR GETKEY
CMP #CR
BNE >0
JSR PRINTGR
^0 JMP SHOWBOTM
;-----------
;
; Change input device
;
CMDDEVIC JSR DEVICECH
JMP SHOWBOTM
;-----------
;
; Clear buffer
;
CMDCLEAR JSR BLAKBOTM
JSR PRINT
.DA #PRLOC,140,#185
BYT PRCNTR
.DA #PRSTR,TXTRET
BYT ' TO CLEAR '
.DA #PRSTR,TXTGR
BYT ' AREA',CR,0
JSR GETKEY
CMP #CR
BNE >0
JSR BUFFSAVE
JSR SETMAX
JSR SHOWGR
^0 JMP SHOWBOTM
;-----------
;
; Quit the editor
;
CMDQUIT JSR CMDQUIT2
JSR SHOWBOTM
QUITRTS RTS
;
CMDQUIT2 JSR BLAKBOTM
JSR PRINT
.DA #PRLOC,140,#185
BYT PRCNTR
.DA #PRSTR,TXTPRET,' TO '
.DA #PRSTR,TXTGTMM,#NOCR,#0
JSR GETKEY
CMP #CR
BNE QUITRTS
JMP MAINMENU
TXTGTMM BYT 'GO TO MAIN MENU',0
TXTPRET BYT 'PRESS '
TXTRET BYT '<RETURN>',0
;-----------
;
; Text in graphic
;
CMDTEXT LDA #4
JSR SHAPHELP
JSR DRAWTEXT
JMP SHOWRITE
;-----------
;
; Shape handlers
;
CMDLINES LDA #0
HEX 2C
CMDRAYS LDA #1
HEX 2C
CMDBOX LDA #2
HEX 2C
CMDOVAL LDA #3
JSR SHAPHELP
JSR SHOWCOOR
;
LDA SHAPETYP
AND #7
STA >0+1
CLC
;
^0 LDX #00
JSR DOSHAPE
BCS >1
LDA #00
SHAPETYP = *-1
ASL
BMI <0
;
; Fix up screen when done
;
^1 JMP SHOWRITE
;-----------
;
; Print help screen
;
HY1 = 2
HY2 = 36
HY3 = 105
HY4 = 164
;
HELPTEMP BRK
;
SHAPHELP STA TMP0
ASL
ADC TMP0
ASL
TAX
LDY SHAPHLP9+0,X
LDA SHAPHLP9+1,X
STY >0+1
STA >0+2
LDA SHAPHLP9+2,X
STA SHAPETYP
;
LDY SHAPHLP9+3,X
LDA SHAPHLP9+4,X
STY >4+1
STA >4+2
;
LDA SHAPHLP9+5,X
STA HELPTEMP
;
JSR SETPLOTX
JSR BUFFSAVE
;
JSR BLAKBOTM
JSR PRINT
BYT RTOSBLAK,26,0,14,192
BYT PRBIG,PRCNTR
.DA #PRLOC,XCENT,#HY1
^0 .DA #PRSTR,$FFFF,#NOCR,#0
;
LSR HELPTEMP
BCC >1
;
LDX #26
LDY #HY2
LDA #0
JSR SHOWAROW
JSR PRINT
.DA #PRLOC,227,#HY2+3
BYT 'MOVE',CR
BYT 'CURSOR',CR
BYT 'TO',CR
BYT 'DRAW',CR
.DA #PRLOC,XCENT,#HY2+48
BYT PRCNTR
BYT PRCSPACE,1
.DA 'N ',#PRSTR,TXTNEGA,#CR
BRK
;
^1 LSR HELPTEMP
BCC >2
JSR PRINT
BYT PRCNTR
.DA #PRLOC,XCENT,#HY2+26
BYT 'USE',CR
BYT 'KEYBOARD',CR
BYT 'TO ENTER',CR,0
JMP >3
;
^2 JSR PRINT
BYT PRCNTR
.DA #PRLOC,XCENT,#HY3
BYT 'PRESS',CR
.DA #PRSTR,TXTRET,#CR
BYT 'TO PLACE',CR,0
;
^3 JSR PRINT
BYT PRCNTR
^4 .DA #PRSTR,$FFFF,#CR
BYT RTOSWITE,26,HY4-6,14,2
BYT PRVTAB,HY4
BYT 'PRESS <ESC>',CR,0
;
LSR HELPTEMP
BCC >5
JSR PRINT
BYT PRCNTR
.DA #PRSTR,TXTWD,#CR,#0
JMP >6
;
^5 JSR PRINT
BYT PRCNTR
BYT 'TO GO BACK',CR,0
;
^6 RTS
;
TXTWD BYT 'WHEN DONE',0
;
; 64 means stay in shape routine
; until ESC is pressed. 128 means
; don't re-initialize X1,Y1 each time
; the remaining number is the shape
; number used by DOSHAPE
;
SHAPHLP9 .DA TXTLINES,#0+64
.DA TXTLINE,#%101
;
.DA TXTRAYS,#0+64+128
.DA TXTLINE,#%101
;
.DA TXTBOX,#2
.DA TXTBOX,#%001
;
.DA TXTOVAL,#4
.DA TXTOVAL,#%001
;
.DA TXTTEXT,#0
.DA TXTTEXT,#%110
;
TXTLINE BYT 'LINE',0
TXTLINES BYT 'LINES',0
TXTRAYS BYT 'RAYS',0
TXTBOX BYT 'BOX',0
TXTOVAL BYT 'OVAL',0
TXTTEXT BYT 'TEXT',0
;-----------
;
; Show next page
;
CMDSPACE INC PAGENUM
LDA PAGENUM
EOR #4
BNE SHOWPAGE
STA PAGENUM
;
; Show help screen
;
SHOWPAGE JSR BLAKPAGE
JSR >0
CLC
RTS
;
^0 LDY #0
PAGENUM = *-1
JSR JMPVECTS
ADR PAGE1
ADR PAGE2
ADR PAGE3
ADR PAGE4
;
XCENT = 231
XEDGE = 182
XR1 = 13
XR2 = 24
;
PG1Y = 68
PAGE1 JSR PRINT
BYT PRCSPACE,1
BYT PRSPC,14
.DA #PRLOC,XEDGE,#PG1Y
.DA #PRSTR,TXTCTRL,'S',#CR
.DA #PRSTR,TXTCTRL,'G',#CR
.DA #PRSTR,TXTCTRL,'P',#CR
.DA #PRSTR,TXTCTRL,'C',#CR
.DA #PRSTR,TXTCTRL,'D',#CR
.DA #PRSTR,TXTCTRL,'Q',#CR
.DA #PRSTR,TXTCTRL,'L',#CR
.DA #PRSTR,TXTCTRL,'T',#CR
.DA #PRLOC,279,#PG1Y
BYT PRRITE
BYT 'SAVE',CR
BYT 'GET',CR
BYT 'PRINT',CR
BYT 'CLEAR',CR
BYT 'DEVICE',CR
BYT 'QUIT',CR
BYT 'LOCK',CR
.DA #PRSTR,TXTTILE,#CR
BRK
RTS
;
TXTCTRL BYT 'CTRL-',0
;-----------
PAGE2 JSR PRINT
BYT PRSPC,14
BYT PRCSPACE,1
.DA #PRLOC,XEDGE,#66
;
BYT 'D - DRAW',CR
BYT 'E',PRRTAB,XR1,'- ERASE',CR
BYT '1',PRRTAB,XR1,'- INSERT ROW',CR
BYT '2',PRRTAB,XR1,'- DELETE ROW',CR
;
BYT PRSPC,8
BYT '3',PRRTAB,XR1,'- INSERT',CR
BYT PRSPC,14,PRRTAB,XR2
.DA #PRSTR,PAGE2COL,#CR
;
BYT PRSPC,8
BYT '4',PRRTAB,XR1,'- DELETE',CR
BYT PRSPC,14,PRRTAB,XR2
.DA #PRSTR,PAGE2COL,#CR
;
BYT 'F',PRRTAB,XR1,'- FLOOD FILL',CR
BRK
RTS
;
PAGE2COL BYT 'COLUMN',0
;-----------
P3SPC = 15
;
PAGE3 JSR PRINT
BYT PRCSPACE,1
.DA #PRLOC,XEDGE,#66
;
BYT 'H - FLIP',CR
BYT PRSPC,P3SPC,PRRTAB,XR2
BYT 'HORIZONTAL',CR
;
BYT PRSPC,8
BYT 'V',PRRTAB,XR1,'- FLIP',CR
BYT PRSPC,P3SPC,PRRTAB,XR2
BYT 'VERTICAL',CR
;
BYT 'N',PRRTAB,XR1
.DA #PRSTR,TXTNEGA,#CR
;;;;;;;; BYT 'ESC - GO BACK',CR
BRK
LDX #26
LDY #133
LDA #1
JSR SHOWAROW
JSR PRINT
BYT PRRITE
.DA #PRLOC,279,#148
BYT 'SCROLL',CR,0
RTS
TXTNEGA BYT '- NEGATIVE',0
;-----------
PAGE4Y = 101
Z1 = 15
Z2 = PAGE4Y-1
;
PAGE4 JSR PRINT
.DA #PRLOC,XCENT,#66
BYT PRCNTR
BYT 'POSITION',CR
BYT 'CURSOR',CR
BYT '& PRESS:',CR
; BYT RTOSWITE,26,92,14,2
BYT PRLEFT,PRSPC,Z1
BYT PRVTAB,PAGE4Y
.DA #PRHTAB,XEDGE
;
BYT 'L',PRRTAB,XR1,'- '
.DA #PRSTR,TXTLINES,#CR
BYT PRPIC,37,Z2,2,9
HEX 813E70230F2081208123602018200620
HEX C13F
;
BYT 'R',PRRTAB,XR1,'- '
.DA #PRSTR,TXTRAYS,#CR
BYT PRPIC,37,Z2+Z1,2,9
HEX 218131811181191809064D0135810F81
HEX C13F
;
BYT 'B',PRRTAB,XR1,'- '
.DA #PRSTR,TXTBOX,#CR
BYT PRPIC,37,Z2+Z1*2,2,9
HEX C13F0120012001200120012001200120
HEX C13F
;
BYT 'O',PRRTAB,XR1,'- '
.DA #PRSTR,TXTOVAL,#CR
BYT PRPIC,37,Z2+Z1*3,2,9
HEX 70030C0C021001200120012002100C0C
HEX 7003
;
LISABUG0 = Z2+Z1*4
BYT 'T',PRRTAB,XR1,'- '
.DA #PRSTR,TXTTEXT,#CR
BYT PRPIC,37,LISABUG0-1,2,11
HEX 1E1F33333F1F3333331F821E1F033303
HEX 3303331E1F
BRK
RTS
;-----------
;
; Erase right side of screen
;
BLAKRITE JSR PRINT
BYT RTOSBLAK,26,0,14,192
BYT RTOSWITE,26,61,14,2
BYT RTOSWITE,26,177,14,2,0
;
; Erase bottom of screen
;
BLAKBOTM JSR PRINT
BYT RTOSBLAK,0,181,40,11,0
RTS
;
; Erase help page area
;
BLAKPAGE JSR PRINT
BYT RTOSBLAK,26,63,14,114,0
RTS
;-----------
;
; Show right part of screen
;
SHOWRITE JSR BLAKRITE
LDX #26
LDY #0
TYA
JSR SHOWAROW
JSR PRINT
.DA #PRLOC,227,#11
BYT 'MOVE',CR
BYT 'CURSOR',CR
.DA #PRLOC,182,#39
BYT PRSPC,11
BYT PRCSPACE,1
BYT 'P - PATTERN',CR
BYT 'X',PRRTAB,XR1,'- MIRRORS',CR
BRK
JSR SHOWBOXS
JSR SHOWPAGE
;
; Display bottom help stuff
;
SHOWBOTM JSR BLAKBOTM
JSR SHOWCOOR
JSR PRINT
.DA #PRHTAB,169
BYT PRRITE,PRCSPACE,1
BYT 'U - UNDO',NOCR,0
;
LDA #XEDGE/7
JSR SPACEBAR
;
CLC
RTS
;-----------
;
; Show coordinates X= Y=
;
SHOWCOOR JSR PRINT
.DA #PRLOC,7,#185
BYT 'X=',NOCR
.DA #PRHTAB,49
BYT 'Y=',NOCR,0
RTS
;-----------
;
; Set parameters for EDIT routines
; and clear EDITBUFF
;
SETMAX LDX #88
LDY #52
JSR EDITINIT
JMP CLRBUFF
;-----------
;
; Save special graphic
; enter with A: 0=Tile Magic
; 1=Creature Maker
;
SAVESP0 ADR TXTTM
ADR TXTCMAKE
SAVESP1 ADR TXTTILE
ADR TXTCREAT
;
TXTTILE BYT 'TILE',0
TXTCREAT BYT 'CREATURE',0
;
SAVESPY0 = 32
SAVESPY1 = 108
;
SAVESPEC ASL
TAX
LDA SAVESP0,X
STA >0+1
LDA SAVESP0+1,X
STA >0+2
LDA SAVESP1,X
STA >1+1
LDA SAVESP1+1,X
STA >1+2
;
JSR WITEBORD
JSR ESCBACK
JSR PRINT
BYT PRCNTR,PRBIG,PRINVR
.DA #PRLOC,140,#1
^0 .DA #PRSTR,0000,#CR
BYT RTOSWITE,13,SAVESPY0,14,60
BYT PRVTAB,SAVESPY0+4
BYT PRSMAL,'@',CR
BYT PRVTAB,SAVESPY1
BYT PRNORM
BYT 'MAKE A CHOICE:',CR
BYT CR,CR
BYT 'SAVE '
^1 .DA #PRSTR,0000,#CR
.DA 'GO TO ',#PRSTR,TXTGEDIT,#CR
.DA #PRSTR,TXTGTMM,#CR
BRK
^2 LDY #00
JSR SELECT
BYT 6,28,SAVESPY1+23,3
ADR RTS
BCS >3
STY <2+1
^3 RTS
;
;
;
ICL "S:GREDIT2"

View File

@ -0,0 +1,405 @@
;
; S:GREDIT2
;
FZ EPZ $80
;
FGXCOOR EPZ FZ
FGYCOOR EPZ FZ+1
FGHIRES EPZ FZ+2 ; 3
FGBYTE EPZ FZ+4
FGBCOUNT EPZ FZ+5
FGRAMCRD EPZ FZ+6
FGHIRES2 EPZ FZ+8
FGWIDTH EPZ FZ+10
;
; Frame grabber CAPTURE
;
FRAMGRAB JSR FRAMPICT
SEC
ROR SCALING
LDX #96
LDY #70
STX FGXCOOR
STY FGYCOOR
;
; Invert current position and
; set countdown timer
;
FRAMLOOP ASL KEEPTRAK
LDX FGXCOOR
LDY FGYCOOR
JSR DEVICEST
FRAMLOP2 JSR FLSHINIT
JSR DRAWBOX
INC KEEPTRAK
;
^0 LDY #2
JSR DEVICERD
BCS >1
ASL
BMI >1
BCS FRAMDON2
JSR FRAMDEV
;
^1 JSR POLEKEY
BMI >3
;
^2 DEC FLASHLO
BNE <0
DEC FLASHHI
BPL <0
BMI FRAMLOP2
;
FRAMDONE PLA
PLA
FRAMDON2 JSR RESTSCRN
JSR CAPBOX
CLC
RTS
;
^3 PHA
JSR RESTSCRN
PLA
LDX FGXCOOR
LDY FGYCOOR
JSR >1
STX FGXCOOR
STY FGYCOOR
JMP FRAMLOOP
;
^1 JSR PARSE
.DA #'I',FRAMUP
.DA #$0B,FRAMUP
.DA #'M',FRAMDOWN
.DA #$0A,FRAMDOWN
.DA #'J',FRAMLEFT
.DA #$08,FRAMLEFT
.DA #'K',FRAMRITE
.DA #$15,FRAMRITE
;
.DA #'N',FRAMNEG
;
.DA #'D',FRAMDUBL
.DA #'A',FRAM2LFT
.DA #'S',FRAM2RIT
;
.DA #$1B,FRAMESC
.DA #$0D,FRAMDONE
;
BRK
RTS
;
FRAMESC PLA
PLA
SEC
RTS
;
; Invert screen
;
FRAMNEG LDA FRAMIMD0
EOR #$7F
STA FRAMIMD0
STA FRAMIMD1
STA FRAMIMD2
;
; Pop stack, draw screen and return
; to main loop
;
FRAMWERD JSR FRAMPICT
FRAMWRD2 PLA
PLA
JMP FRAMLOOP
;-----------
;
; Toggle double-hires option
;
; If not 128k, then ignore
;
FRAMDUBL LDA HAS128K
BPL FRAMWERD
;
LDA FRAM2FLG
EOR #$80
STA FRAM2FLG
BNE FRAMWERD
;
; Move double hires picture right
;
FRAM2RIT LDX FRAM2POS
DEX
BPL FRAM2ST
;
FRAM2ERR JSR BOOP
JMP FRAMWRD2
;
; Move double hires left
;
FRAM2LFT LDX FRAM2POS
INX
CPX #21
BGE FRAM2ERR
;
FRAM2ST STX FRAM2POS
JMP FRAMWERD
;
FRAM2FLG HEX 01
FRAM2POS HEX 00
;-----------
;
; Up
;
FRAMUP DEY
CPY #$FF
BNE >0
LDY #YSCRNMAX-1
;
; Down
;
FRAMDOWN INY
CPY #YSCRNMAX+1
BLT >0
LDY #0
^0 RTS
;
; Left
;
FRAMLEFT DEX
CPX #$FF
BNE >0
LDX #XSCRNMAX-1
;
; Right
;
FRAMRITE INX
CPX #XSCRNMAX+1
BLT >0
LDX #0
^0 RTS
;------------
;
; Check to see if device moved
;
FRAMDEV CPX FGXCOOR
BNE >0
CPY FGYCOOR
BNE >0
FRAMRTS RTS
;
; Device moved
;
^0 STX >1+1
STY >2+1
JSR RESTSCRN
^1 LDX #00
^2 LDY #00
;
; Device input clamping
;
BIT FRAMRTS
CPX #XSCRNMAX+1
BLT >3
CLV
LDX #XSCRNMAX
^3 CPY #YSCRNMAX+1
BLT >4
CLV
LDY #YSCRNMAX
^4 STX FGXCOOR
STY FGYCOOR
BVS FRAMRTS
JMP DEVICEST
;
KEEPTRAK BRK
;
; Remove box if necessary
;
RESTSCRN LSR KEEPTRAK
ROR
ASL KEEPTRAK
ROL
BCC FRAMRTS
;-----------
;
; Draw box
;
DRAWBOX LDY FGYCOOR
STY TMP1
LDY #0
;
DRAWBOXL JSR YBASCALC
LDX #0
^0 JSR BITCALC
EOR (FGHIRES),Y
STA (FGHIRES),Y
CPX #87
BEQ >2
LDA TMP0
BEQ >1
CMP #51
BEQ >1
LDX #86
^1 INX
BNE <0
;
^2 LDY TMP0
INY
CPY #52
BLT DRAWBOXL
RTS
;
; Capture box into UNDOBUFF
;
CAPBOX LDY #UNDOBUFF
LDA /UNDOBUFF
STY TMP2
STA TMP3
;
LDY FGYCOOR
STY TMP1
LDY #0
STY FGBCOUNT
;
CAPBOXL JSR YBASCALC
LDX #0
^0 JSR BITCALC
AND (FGHIRES),Y
CMP #1
LDA #0
ROL
EOR #1
LSR
ROL FGBYTE
INC FGBCOUNT
LDA FGBCOUNT
EOR #8
BNE >1
;
STA FGBCOUNT
LDA FGBYTE
LDY #0
STA (TMP2),Y
INC TMP2
BNE >1
INC TMP3
;
^1 INX
CPX #88
BLT <0
;
^2 LDY TMP0
INY
CPY #52
BLT CAPBOXL
RTS
;
; Calc Ybase
;
YBASCALC STY TMP0
LDY TMP1
INC TMP1
LDA YBASELO,Y
STA FGHIRES
LDA YBASEHI,Y
STA FGHIRES+1
RTS
;
; Calculate hires X coor
;
BITCALC TXA
CLC
ADC FGXCOOR
TAY
BCC >1
;
LDA XBIT+256,Y
PHA
LDA XBYTE+256,Y
TAY
PLA
BNE >2
;
^1 LDA XBIT,Y
PHA
LDA XBYTE,Y
TAY
PLA
^2 RTS
;-----------
;
; Get picture from RAMcard
;
FRAMPICT LDA #0
FRAMPCT2 PHA
;
; Transfer line
;
TAY
LDA YBASELO,Y
STA FGHIRES
STA FGHIRES2
STA FGRAMCRD
LDA YBASEHI,Y
STA FGHIRES+1
STA FGHIRES2+1
LDY #0
AND #$10
BEQ >0
LDY #8
^0 LDA $C083,Y
LDA $C083,Y
LDA FGHIRES+1
AND #$0F
ORA #$D0
STA FGRAMCRD+1
;
LDA #39
BIT FRAM2FLG
BMI >2
;
; Regular hires
;
TAY
^1 LDA (FGRAMCRD),Y
EOR #00
FRAMIMD0 = *-1
STA (FGHIRES),Y
DEY
BPL <1
BMI >4
;
; Double hires
;
^2 LSR
STA FGWIDTH
LDY FRAM2POS
LDX #0
STA $C001
^3 BIT $C055
LDA (FGHIRES2),Y
BIT $C054
EOR #00
FRAMIMD1 = *-1
STA (FGHIRES,X)
INC FGHIRES
LDA (FGRAMCRD),Y
EOR #00
FRAMIMD2 = *-1
STA (FGHIRES,X)
INC FGHIRES
INY
DEC FGWIDTH
BPL <3
STA $C000
;
; Next line
;
^4 PLA
CLC
ADC #1
CMP #$C0
BLT FRAMPCT2
RTS
;
;
;
ICL "S:GREDIT3"

View File

@ -0,0 +1,433 @@
;
; S:GREDIT3
;
; Print Shop Companion
;
; Tile Magic
;
; by Roland Gustafsson
; Copyright 1985
;
TZ EPZ $80
;
TMXSTART EPZ TZ
TMYSTART EPZ TZ+1
TMXPOS EPZ TZ+2
TMYPOS EPZ TZ+3
TMXQTR EPZ TZ+4
TMYQTR EPZ TZ+5
TMCOLOR EPZ TZ+6
TMCOUNT EPZ TZ+7
TMBCOUNT EPZ TZ+8
;
TILEXMAX = 88
TILEYMAX = 52
;
;
TILEMAGC LDA #ESC
STA TILEMOD
JSR SETMAX
;
JSR CLSCREEN
JSR PRINT
BYT RTOSWITE,0,0,25,16
BYT PRCNTR,PRINVR
.DA #PRLOC,88,#4
.DA #PRSTR,TXTTM
BYT CR,0
JSR DOMAGIC
;
ESC4TILE LDA #0
JSR SAVESPEC
BCC >0
JMP TILEMAGC
;
^0 JSR JMPVECTS
ADR TILESAVE
ADR GREDIT2
ADR MAINMENU
;-----------
;
; Save the Tile
;
TILESAVE JSR SETTYPE
BYT 'GRAPHIC',0
TXTTM BYT 'TILE MAGIC',0
BYT 0
BYT 4
ADR EDITBUFF
ADR $240
JSR SAVEFILE
JMP ESC4TILE
;-----------
;
; Helpful instructions for our
; favorite person, the consumer.
;
DOMAGIC JSR BLAKRITE
JSR PRINT
BYT RTOSWITE,26,0,14,2
BYT PRBIG,PRCNTR
BYT PRSPC,16
.DA #PRLOC,231,#16
BYT 'TILE',CR
BYT 'MAGIC',CR,0
;
JSR PRINT
BYT PRCNTR
.DA #PRLOC,231,#83
.DA #PRSTR,TXTRET,#CR
BYT 'TO CHANGE',CR
BYT 'PATTERN',CR,CR,CR
BYT '<ESC>',CR
BYT 'TO "FREEZE"',CR
BYT 'TILE',CR
BRK
;
; Do the fireworks
;
; Same as Kaleidoscope 1 from
; the original Print Shop.
;
JSR BUFFSAVE
NEXTTILE JSR SETTRP
JSR CLRBUFF
JSR SHOWGR
;
LTRP LDA #$40
STA TMXSTART
LDA #0
STA TMYSTART
STA TMCOLOR
LDA #12
STA STRTFLAG
LTRP2 LDA $C05F
ADC $C059
ADC $C05D
ADC TMXSTART
STA TMXSTART
STA TMXPOS
LDA TMYPOS
ROL
EOR TMXPOS
STA TMYPOS
STA TMYSTART
DEC TMCOLOR
LDX #26
LDA STRTFLAG
BEQ LTRP2A
LDX #2
DEC STRTFLAG
LTRP2A STX TMCOUNT
LTRP2B INC TMCOLOR
LDA TMCOLOR
AND #3
CMP #3
BEQ LTRP2B
CMP #0
BNE LTRP2C
LDA STRTFLAG
BNE LTRP2B
LTRP2C DEC TMCOUNT
BEQ LTRP2
JSR SETC
LTRP3 JSR PUT4
JSR BTNCHK
BPL LTRP8
CMP #$0D
BEQ NEXTTILE
RTS
;
LTRP8 LDA TMYPOS
;
YTRIP DFS 6,0
;
STA TMYQTR
LDA TMXPOS
SEC
SBC TMYQTR
STA TMXPOS
;
XTRIP DFS 6,0
;
CLC
ADC TMYPOS
STA TMYPOS
CMP TMYSTART
BNE LTRP3
LDA TMXPOS
CMP TMXSTART
BNE LTRP3
BEQ LTRP2B
;
PUT4 LDA TMXPOS
LSR
LSR
TAX
LDA RANGE44,X
STA TMXQTR
;
LDA TMYPOS
LSR
LSR
LSR
TAX
LDA RANGE26,X
STA TMYQTR
;
LDA #TILEXMAX/2
CLC
ADC TMXQTR
TAX
LDA #TILEYMAX/2
CLC
ADC TMYQTR
TAY
JSR XYPLOT
LDA #TILEXMAX/2
SEC
SBC TMXQTR
TAX
JSR XYPLOT
LDA #TILEYMAX/2
SEC
SBC TMYQTR
TAY
JSR XYPLOT
LDA #TILEXMAX/2
CLC
ADC TMXQTR
TAX
;
XYPLOT CPY #TILEYMAX
BGE XYDONE
CPX #TILEXMAX
BGE XYDONE
;
STX XCOOR
STY YCOOR
TMXYMOD JSR $FFFF
LDX XCOOR
LDY YCOOR
XYDONE RTS
;-----------
;
; Check for CR
;
BTNCHK DEC TMBCOUNT
LDA TMBCOUNT
AND #$7F
BNE >0
JMP POLEBTN
^0 LDA #0
RTS
;
; Set color
;
SETC LDX #SETBIT
LDY /SETBIT
LDA TMCOLOR
AND #2
BNE >0
LDX #CLRBIT
LDY /CLRBIT
;
^0 STX TMXYMOD+1
STY TMXYMOD+2
RTS
;
; Set trip format
;
SETTRP LDA TRIPN
ASL
ADC TRIPN
ASL
TAX
LDY #0
^0 LDA XTRPS,X
STA XTRIP,Y
LDA YTRPS,X
STA YTRIP,Y
INX
INY
CPY #6
BLT <0
LDX TRIPN
INX
CPX #11
BNE >1
LDX #0
^1 STX TRIPN
RTS
;X1
XTRPS LSR
LSR
LSR
NOP
NOP
NOP
;X2
LSR
LSR
NOP
NOP
NOP
NOP
;X3
LSR
NOP
NOP
NOP
NOP
NOP
;X4
LSR
NOP
NOP
NOP
NOP
NOP
;X5
NOP
NOP
NOP
NOP
NOP
NOP
;X6
LSR
LSR
LSR
CLC
ADC TMXPOS
;X7
LSR
LSR
NOP
CLC
ADC TMXPOS
;X8
LSR
NOP
NOP
CLC
ADC TMXPOS
;X9
LSR
LSR
LSR
SEC
SBC TMXPOS
;X10
LSR
LSR
NOP
SEC
SBC TMXPOS
;X11
LSR
NOP
NOP
SEC
SBC TMXPOS
;Y1
YTRPS LSR
LSR
LSR
NOP
NOP
NOP
;Y2
LSR
LSR
NOP
NOP
NOP
NOP
;Y3
LSR
NOP
NOP
NOP
NOP
NOP
;Y4
NOP
NOP
NOP
NOP
NOP
NOP
;Y5
LSR
NOP
NOP
NOP
NOP
NOP
;Y6
LSR
LSR
LSR
CLC
ADC TMYPOS
;Y7
LSR
LSR
NOP
CLC
ADC TMYPOS
;Y8
LSR
NOP
NOP
CLC
ADC TMYPOS
;Y9
LSR
LSR
LSR
SEC
SBC TMYPOS
;Y10
LSR
LSR
NOP
SEC
SBC TMYPOS
;Y11
LSR
NOP
NOP
SEC
SBC TMYPOS
;
;----------
;
TRIPN HEX 03
STRTFLAG HEX 00
;
; Lookup tables for getting
; range
;
; X= 0-44
;
RANGE44 HEX 0001010203030405
HEX 0606070808090A0A
HEX 0B0C0C0D0E0F0F10
HEX 1111121313141515
HEX 16171718191A1A1B
HEX 1C1C1D1E1E1F2020
HEX 2122232324252526
HEX 27272829292A2B2C
;
; X= 0-26
;
RANGE26 HEX 0001020303040506
HEX 070808090A0B0C0C
HEX 0D0E0F1011111213
HEX 141515161718191A
;
;
;
ICL "S:GREDIT4"

View File

@ -0,0 +1,376 @@
;
; S:GREDIT4
;
; Print Shop Companion
;
; Creature Maker
;
; by Roland Gustafsson
; Copyright 1985
;
;
YPOS1 = 93
YPOS2 = 121
YPOS3 = 149
;
CRPART1 = 18
CRPART2 = 17
CRPART3 = 17
;
CREATURS = $6000
CRCOUNT = CREATURS
;
;
CRMAKER LDA #ESC
STA CRMOD
JSR SETMAX
JSR CLSCREEN
LDX #26
LDY #13
LDA #0
JSR SHOWAROW
;
JSR PRINT
BYT RTOSWITE,0,0,25,16
BYT PRCNTR,PRINVR
.DA #PRLOC,88,#4
.DA #PRSTR,TXTCMAKE,#CR
;
BYT PRNORM,PRRITE
BYT RTOSWITE,26,0,14,2
.DA #PRLOC,279,#11
BYT PRCSPACE,1,PRSPC,11
BYT 'USE UP &',CR
BYT 'DOWN TO',CR
BYT 'SELECT',CR
BYT 'PART. USE',CR
.DA #PRHTAB,231
BYT PRCSPACE,2
BYT PRCNTR
BYT 'LEFT & RIGHT',CR
BYT 'TO SELECT',CR
BYT 'CREATURE.',CR
;
BYT PRINVR
;
BYT RTOSWITE,26,YPOS1,14,2+11
BYT PRVTAB,YPOS1+3
BYT 'HEAD',CR
;
BYT RTOSWITE,26,YPOS2,14,2+11
BYT PRVTAB,YPOS2+3
BYT 'BODY',CR
;
BYT RTOSWITE,26,YPOS3,14,2+11
BYT PRVTAB,YPOS3+3
BYT 'LEGS',CR
;
BYT RTOSWITE,26,177,14,2
BRK
;
LDA PART
PHA
LDA #0
STA PART
JSR MOVEPIEC
INC PART
JSR MOVEPIEC
INC PART
JSR MOVEPIEC
PLA
STA PART
;
; Do the creature selection stuff
;
CRMAKER2 JSR BLAKBOTM
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#185
.DA #PRSTR,TXTPRET
BYT ' '
.DA #PRSTR,TXTWD,#CR
BRK
JSR CRSELECT
;
ESC4CR LDA #1
JSR SAVESPEC
BCC >0
JMP CRMAKER
;
^0 JSR JMPVECTS
ADR CRSAVE
ADR GREDIT2
ADR MAINMENU
;-----------
;
; Save the creature!
;
CRSAVE JSR SETTYPE
BYT 'GRAPHIC',0
TXTCMAKE BYT 'CREATURE MAKER',0
BYT 0
BYT 4
ADR EDITBUFF
ADR $240
JSR SAVEFILE
JMP ESC4CR
;-----------
;
; Build a creature
;
CRSELECT JSR SHOWGR
CRSELEC1 LSR CRARROWF
;
CRSELEC2 JSR CRARROWT
JSR FLSHINIT
;
^0 JSR POLEBTN
BMI >1
DEC FLASHLO
BNE <0
DEC FLASHHI
BPL <0
BMI CRSELEC2
;
^1 PHA
JSR CRARROW0
PLA
LDX PART
LDY PART1,X
JSR >2
BCS CRSELECT
BCC CRSELEC1
;
^2 JSR PARSE
.DA #'I',CRUP
.DA #$0B,CRUP
.DA #'M',CRDOWN
.DA #$0A,CRDOWN
.DA #'J',CRLEFT
.DA #$08,CRLEFT
.DA #'K',CRRITE
.DA #$15,CRRITE
;
.DA #CR,CRDONE
.DA #ESC,CRESC
;
BRK
CLC
RTS
;
CRESC PLA
PLA
PLA
PLA
JSR CMDQUIT2
JMP CRMAKER2
;
CRDONE PLA
PLA
RTS
;
CRUP DEX
BPL >0
LDX #1
;
CRDOWN INX
CPX #3
BLT >0
LDX #0
^0 STX PART
CLC
RTS
;
CRLEFT DEY
BPL >0
LDY CRCOUNT
DEY
DEY
;
CRRITE INY
CPY CRCOUNT
BLT >0
LDY #0
^0 TYA
STA PART1,X
JSR MOVEPIEC
SEC
RTS
;-----------
;
; Move piece from CRDATA to EDITBUFF
; and print it's name.
;
; PART is given in PART
; PIECE 0-9 is given in PART1,2 or 3
;
MOVEPIEC LDY PART
LDA PART1,Y
ASL
TAX
LDA CRADR,X
ADC CROFFSTL,Y
STA TMP0
LDA CRADR+1,X
ADC CROFFSTH,Y
STA TMP1
;
LDA #EDITBUFF
ADC CROFFSTL,Y
STA TMP2
LDA /EDITBUFF
ADC CROFFSTH,Y
STA TMP3
;
LDA CRLENGTH,Y
TAY
;
; Move piece over to EDITBUFF
;
^0 DEY
CPY #$FF
BEQ >1
LDA (TMP0),Y
STA (TMP2),Y
BLT <0
;
; Now print name of that piece
;
; First get address of text
;
^1 LDA CRCOUNT
ASL
TAY
LDA CRADR,Y
STA TMP0
LDA CRADR+1,Y
STA TMP1
;
LDY PART
LDX PART1,Y
;
LDY #0
;
; Find text location
;
^0 DEX
BMI >2
^1 LDA (TMP0),Y
PHA
INC TMP0
BNE *+4
INC TMP1
PLA
BNE <1
BEQ <0
;
^2 LDY TMP0
LDA TMP1
STY >5+0
STA >5+1
;
JSR GETYPOS
ADC #17
STA >3+0
STA >4+0
JSR PRINT
BYT RTOSBLAK,29
^3 BYT 0,11,7
.DA #PRLOC,203
^4 HEX 00
BYT PRSTR
^5 .DA 0000,#CR,#0
RTS
;-----------
CRARROWF HEX 00
;
; Toggle arrow on or off
;
CRARROWT LDA CRARROWF
EOR #$80
STA CRARROWF
BMI CRARROW1
;
; Erase arrow
;
CRARROW0 JSR GETYPOS
ADC #16
STA >0+0
JSR PRINT
BYT RTOSBLAK
BYT 26
^0 BYT 0,3,9,0
RTS
;
; Draw arrow
;
CRARROW1 JSR GETYPOS
ADC #16
STA >0+0
JSR PICDRAW
BYT 26
^0 BYT 0,3,9
HEX 810E8238826001C207C21FC207816001
HEX 8138820E00
RTS
;-----------
;
; LOOKUP TABLES....
;
CLEN = 11*52
;
C = CREATURS+1
;
; Address of each piece
;
CRADR ADR C+0*CLEN
ADR C+1*CLEN
ADR C+2*CLEN
ADR C+3*CLEN
ADR C+4*CLEN
ADR C+5*CLEN
ADR C+6*CLEN
ADR C+7*CLEN
ADR C+8*CLEN
ADR C+9*CLEN
ADR C+10*CLEN
;-----------
;
; Offsets for each of the 3 parts
;
CROFF1 = 0
CROFF2 = 11*CRPART1
CROFF3 = 11*CRPART1+CRPART2
;
CROFFSTL BYT CROFF1,CROFF2,CROFF3
CROFFSTH HBY CROFF1,CROFF2,CROFF3
;
; Length of each part
;
CRLENGTH BYT 11*CRPART1
BYT 11*CRPART2
BYT 11*CRPART3
;-----------
;
; Y position for each part
;
GETYPOS LDY PART
LDA YPOS,Y
CLC
RTS
;
YPOS BYT YPOS1,YPOS2,YPOS3
;-----------
;
; DATA
;
PART HEX 00
PART1 BRK
PART2 BRK
PART3 BRK
;
;
;
USR "GREDIT,S4",ORG
;
ICL "S:COMMONEDIT"

View File

@ -0,0 +1,663 @@
NLS
TTL "S:SUPPGET"
NOG
ORG = $4000
;
SWAPRAM = $2C0
;
; 02/10/85
; 09/09/85 last mod
;
; Routine that sits in RAMcard and
; moves itself down to $4000 when
; it is used.
;
; Constants:
;
MAXFLEN = 15
;
ESC = 27
;
; Zero page
;
PRLO EPZ $3A
PRHI EPZ $3B
LOADLO EPZ $FA
LOADHI EPZ $FB
TMP0 EPZ $FC
TMP1 EPZ $FD
TMP2 EPZ $FE
TMP3 EPZ $FF
;
TMPLO EPZ TMP0
TMPHI EPZ TMP1
;
; Existing routines:
;
DATADRIV = $95F4
MENUSEL = $95F5
;
SOUND = $6FCC
;
BLOAD = $0809
PSDQ = $7019
ANYKEY = $8005
CATERR = $8008
STRPUT = $8E06
RTOS = $8E09
STRGET = $8E12
STRGETPM = $8E15
;
STROUT = $8A00
SPARM = STROUT+3
PRINBUFF = $BB00
;-----------
ORG ORG
OBJ $800
;-----------
JSR SETTYPE
;
; Access normal catalog
;
LDA #0
STA $B00D
LDA DATADRIV
STA $AA68
STA $B7EA
ORA #'0'
CMP #'1'
BNE *+4
LDA #' '
STA DRIVENUM
;
MAINLOOP JSR CLS
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#52
BYT 'CHOOSE A '
.DA #PRSTR,TXTTYPE
BYT ':',CR
;
BYT PRLEFT
.DA #PRLOC,15,#92
BYT 'PLACE DATA DISK IN DRIVE '
DRIVENUM BYT '2',CR,CR,CR
BYT 'TYPE IN NAME OF '
.DA #PRSTR,TXTTYPE
BYT ' OR',CR
BYT 'PRESS <RETURN> FOR '
.DA #PRSTR,TXTTYPE
BYT ' LIST',CR,CR
BYT '>',NOCR,0
;
JSR INPUTNAM
;
; <ESC> pressed?
;
LDA $C000
STA $83FF
BCS QUIT
;
; Make sure that data disk is
; in the drive.
;
JSR PSDQ
BNE >0
;
JSR CLS
;
LDA NAMEBUFF
BEQ CATALOG
;
JSR LOADFILE
BCC QUIT
^0 JMP MAINLOOP
;
QUIT LDA #1
STA $AA68
JSR CLS
JMP SWAPRAM
;-----------
;
; CATALOG disk
;
CATALOG JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#20
BYT 'LIST OF '
.DA #PRSTR,TXTTYPE
BYT 'S ON THIS DISK:',CR,0
;
LDA #$FF
STA CATPAGE
STA CATCOUNT
JSR CATINIT
;
^0 INC CATCOUNT
JSR CATFILE
BCS CATDONE
STA CATFLMOD
STY CATFLMOD+1
INC CATPAGE
LDA CATPAGE
EOR #15
BNE >1
STA CATPAGE
JSR ANYKEY
AND #$7F
CMP #ESC
BEQ CATDONE2
JSR CLS2
;
^1 LDA #00
CATPAGE = *-1
ASL
ASL
ASL
ADC #36
STA CATYMOD
JSR PRINT
BYT PRLEFT
.DA #PRLOC,64
CATYMOD HEX FF
.DA #PRSTR
CATFLMOD ADR $FFFF
BYT CR,0
JMP <0
;
CATDONE LDA #00
BNE >0
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#64
BYT 'NONE',CR,0
;
^0 JSR ANYKEY
CATDONE2 JMP MAINLOOP
;
CATCOUNT = CATDONE+1
;-----------
;
; Input file name
;
INPUTNAM LDX #INPUTNM2
LDY /INPUTNM2
LDA #MAXFLEN
STX STRGETPM
STY STRGETPM+1
STA STRGETPM+2
LDA #0
STA NAMEBUFF
JMP STRGET
;
INPUTNM2 HEX 0200
ADR 27
ADR 140
HEX 000200
ADR NAMEBUFF
HEX 02
;-----------
;
; Load in file
;
LOADFILE LDY #MAXFLEN
LDA #' '
^0 DEY
STA FILENAME+5,Y
BNE <0
;
^1 LDA NAMEBUFF,Y
BEQ >2
STA FILENAME+5,Y
INY
BNE <1
;
^2 LDX #FILENAME
LDY /FILENAME
JSR BLOAD
BNE ERROR
;
; If FONT, then transfer info
; to $816-$821
;
LDA #00
TYPE = *-1
BNE >5
;
; Turn off hi bits (done flags)
;
BIT $C083
BIT $C083
LDY #$00+$0C
^3 LDA (LOADLO),Y
AND #$7F
STA (LOADLO),Y
INY
CPY #$3B+$0C
BLT <3
;
; Fix "@" pointers in font
;
LDY #$00+$2C
LDA #88
STA (LOADLO),Y
LDY #$3B+$2C
LDA #52
STA (LOADLO),Y
LDY #$76+$2C
LDA #$00
STA (LOADLO),Y
LDY #$B1+$2C
LDA #$58
STA (LOADLO),Y
;
LDY #$0B
^4 LDA (LOADLO),Y
STA $816,Y
DEY
BPL <4
LDA $C082
;
^5 CLC
RTS
;-----------
;
; Handle DOS errors. Only handles
;
; FILE NOT FOUND and I/O ERROR!
;
ERROR CMP #6
BEQ >0
;
; I/O error message
;
JSR $A316
JSR CATERR
SEC
RTS
;
; File not found message
;
^0 JSR CLS
JSR SOUND
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#48
BYT 'CANNOT FIND',CR,CR
.DA #PRSTR,NAMEBUFF,#CR,#CR
BYT 'ON THIS DISK',CR,0
;
^1 JSR ANYKEY
SEC
RTS
;-----------
;
; PRINT routine
;
PRLOC = 1
PRSTR = 2
PRLEFT = 3
PRCNTR = 4
CR = 5
NOCR = 6
;
; WARNING!!! the "CR" defined here is
; for PRINT purposes only, as you can
; see, it is 5, not the normal 13!
;
PRINT PLA
STA PRLO
PLA
STA PRHI
;
LDA #2
STA SPARM
STA SPARM+7
;
PRINT1 LDX #0
PRINT2 JSR PRINTGET
CMP #' '
BLT PRINT3
STA PRINBUFF,X
INX
BNE PRINT2
;
PRINT3 ASL
TAY
LDA PRINT5,Y
STA PRINT4+1
LDA PRINT5+1,Y
STA PRINT4+2
CLC
PRINT4 JSR $FFFF
BCC PRINT2
BCS PRINT1
;
PRINT5 ADR PRZZDONE
ADR PRZZLOC
ADR PRZZSTR
ADR PRZZLEFT
ADR PRZZCNTR
ADR PRZZCR
ADR PRZZNOCR
;-0-
PRZZDONE PLA
PLA
JSR PRINTGET
JMP (PRLO)
;-1-
PRZZLOC JSR PRINTGET
STA SPARM+2
STA PRNTXLO
JSR PRINTGET
STA SPARM+3
STA PRNTXHI
JSR PRINTGET
STA SPARM+4
RTS
;-2-
PRZZSTR JSR PRINTGET
STA >0+1
JSR PRINTGET
STA >0+2
LDY #0
^0 LDA $FFFF,Y
BEQ >2
CMP #' '
BLT >1
STA PRINBUFF,X
INX
^1 INY
BNE <0
^2 CLC
RTS
;-3-
PRZZLEFT LDA #0
HEX 2C
;-4-
PRZZCNTR LDA #2
STA SPARM+1
RTS
;-5-
PRZZCR JSR PRZZNOCR
LDY #00
PRNTXLO = *-1
LDA #00
PRNTXHI = *-1
STY SPARM+2
STA SPARM+3
LDA SPARM+4
CLC
ADC #8
STA SPARM+4
SEC
RTS
;-6-
PRZZNOCR LDA #0
STA PRINBUFF,X
LDY #PRINBUFF
LDA /PRINBUFF
STY SPARM+9
STA SPARM+10
JSR STROUT
SEC
RTS
;---
PRINTGET INC PRLO
BNE >0
INC PRHI
^0 LDY #0
LDA (PRLO),Y
RTS
;-----------
;
; Clear screen routines
;
CLSDATA BYT 1,17,38,165
BYT 1,28,38,154
;
CLS LDX #3
HEX 2C
CLS2 LDX #7
LDY #3
^0 LDA CLSDATA,X
STA RTOS+3,Y
DEX
DEY
BPL <0
LDA #1
JMP RTOS
;-----------
;
; Given A=TYPE (0:font, 1:border)
; initialize all the type variables
; text, load address, etc...
;
SETTRAM BYT $81,$89
SETTTYP BYT TXTYPE0-TXTYPES
BYT TXTYPE1-TXTYPES
;
; Text type and load addresses
;
TXTYPES:
TXTYPE0 BYT 'FONT',0
HEX D0E8
;
TXTYPE1 BYT 'BORDER',0
HEX DEDF
;---
;
; First set 16k RAMcard
;
SETTYPE STA TYPE
TAY
LDX SETTRAM,Y
LDA $C000,X
LDA $C000,X
LDX SETTTYP,Y
;
LDY #0
;
; Set type text
;
^0 LDA TXTYPES,X
STA TXTTYPE,Y
BEQ >2
;
; Set file prefix
;
CPY #4
BGE >1
STA FILENAME,Y
;
^1 INX
INY
BNE <0
;---
;
; Check page byte
;
; If 2 (SIGN) or 4 (BANNER) then
; skip page check.
; If 1 (GC) then don't invert
; If 3 (LH) then invert
;
^2 LDA MENUSEL
LSR
BCC >1
EOR $8300
CMP #1
BNE >1
INX
;
^1 LDA TXTYPES+1,X
LDY #0
STY LOADLO
STA LOADHI
;
; Store text equivalent in FILEADR
;
PHA
LSR
LSR
LSR
LSR
JSR >2
STA FILEADR
PLA
;
^2 AND #$0F
ORA #'0'
CMP #'9'+1
BLT >3
ADC #6
^3 STA FILEADR+1
RTS
;-----------
;
; Filename used during loading
;
FILENAME ASC 'XXXX.'
DFS MAXFLEN,0
ASC ',A$'
FILEADR ASC 'XX'
ASC '00'
HEX 00
;-----------
;
; Read CATALOG routine
;
; JSR CATINIT to initialize
;
; JSR CATFILE to get a filename
;
; SEC=no more files
;
; CLC=found a file
; A=lo byte\
; Y=hi byte-address of text
;
CATINIT LDA #0
STA TMP2
LDY #17
JSR READSECT
CATEND SEC
RTS
;
CATFILE LDA TMPLO
CLC
ADC #$23
STA TMPLO
BCC >0
INC TMPHI
^0 DEC TMP2
BPL >1
;
LDY SECTBUFF+1
LDA SECTBUFF+2
BEQ CATEND
JSR READSECT
LDY #SECTBUFF-24
LDA /SECTBUFF-24
STY TMPLO
STA TMPHI
LDA #7
STA TMP2
BNE CATFILE
;
; Check filename
;
; Deleted? end of cat?
;
^1 LDY #0
LDA (TMPLO),Y
BMI CATFILE
BEQ CATEND
;
; Binary file?
;
INY
INY
LDA (TMPLO),Y
AND #$7F
CMP #4
BNE CATFILE
;
LDX #0
^0 INY
LDA (TMPLO),Y
AND #$7F
CMP FILENAME,X
BNE CATFILE
INX
CPX #5
BLT <0
;
LDY #$20
^1 LDA (TMPLO),Y
EOR #$A0
BNE >2
STA (TMPLO),Y
DEY
BPL <1
;
^2 LDA (TMPLO),Y
AND #$7F
STA (TMPLO),Y
DEY
BNE <2
;
LDA TMPLO
LDY TMPHI
CLC
ADC #8
BCC >3
INY
^3 CLC
RTS
;---
IOB = $B7E8
;
; Read a sector
; A=sector, Y=track
;
READSECT STA IOB+5
STY IOB+4
LDA #0
STA IOB+3
LDY #SECTBUFF
LDA /SECTBUFF
STY IOB+8
STA IOB+9
LDA #1
STA IOB+12
JSR $3E3
JSR $3D9
BCS >0
RTS
;
^0 PLA
PLA
PLA
PLA
LDA #8
JSR ERROR
JMP MAINLOOP
;-----------
;
; Don't need to save all the storage
; areas
;
USR "O:SUPPGET",ORG
;-----------
TXTTYPE BYT 'BORDER',0
;
; Filename that user enters
;
NAMEBUFF:
SECTBUFF:
END:
;
;
;
END

View File

@ -0,0 +1,181 @@
NLS
TTL "S:SUPPHEADER"
;
ORG = $6300
;
; FIXLOC needs $3C+$1F
; Make sure it doesn't walk over
; the RESET routine at $280
;
SPECLEN = $3C+$1F
FIXLOC = $280-SPECLEN
;
; First time through SUPP file header
;
CLS1 = $B53
;
DATADRIV = $95F4
CHECKPS1 = $7815
CHECKPS2 = $77F9
;
TMP0 EPZ $3A
TMP1 EPZ $3B
TMP2 EPZ $3C
;-----------
ORG ORG
OBJ $800
;-----------
PHA
;
; Move program to RAMcard
;
BIT $C08B
BIT $C08B
LDX #8
LDY #0
^0 LDA PROGRAM,Y
^1 STA $D000,Y
INY
BNE <0
INC <0+2
INC <1+2
DEX
BNE <0
;
; Make patches to Print Shop
;
^2 LDA PATCHES,X
BEQ >5
LDY #0
^3 LDA PATCHES,X
INX
STA TMP0,Y
INY
CPY #3
BLT <3
LDY #0
^4 LDA PATCHES,X
INX
STA (TMP1),Y
INY
DEC TMP0
BNE <4
BEQ <2
;
^5 PLA
JSR $D003
;
; Now reload MENULIB
;
LDY #FIXLEN-1
^6 LDA FIXIT,Y
STA FIXLOC,Y
DEY
BPL <6
JMP FIXLOC
;-----------
PATCHES:
BYT 9
ADR $B8B
BIT $C08B
BIT $C08B
JMP $D003
;
BYT 28
ADR $88D0
SEC
ROR $4E
SEC
SBC #$20
TAX
LDA $6000,X
CMP $4E
BGE *+4
STA $4E
JMP $8C76
LDA $4E
CLC
ADC $8A0A
STA $D9
RTS
;
BYT 2
ADR $8C10
ADR $88D0
;
BYT 2
ADR $8C28
ADR $88D3
;
BYT 4
ADR $8C3F
JSR $88E3
NOP
;
BRK
;-----------
;
; Remember MENULIB variables, then
; reload it and restore the vars.
;
FIXIT:
PHS FIXLOC
;
; Save vars and check for PS disk
;
CLC
JSR SWAP7000
FIXIT1 JSR FIXIT2
;
; Load MENULIB
;
LDX #$27
LDY #$0B
JSR $CD2
BNE FIXIT1
;
; Restore vars and exit
;
SEC
JSR SWAP7000
PLA
PLA
JMP CLS1
;---
;
; Make sure that PS disk in drive.
;
FIXIT2 LDA DATADRIV
CMP #2
BEQ FIXIT3
JMP CHECKPS1
FIXIT3 JMP CHECKPS2
;---
;
; SEC:copy save area to $7000
; CLC:copy $7000 to save area
;
SWAP7000 LDY #$1E
;
SWAP7001 BCS SWAP7002
LDA $7000,Y
STA SWAPSAVE,Y
BCC SWAP7003
;
SWAP7002 LDA SWAPSAVE,Y
STA $7000,Y
;
SWAP7003 DEY
BPL SWAP7001
RTS
SWAPSAVE:
DPH
FIXLEN = *-FIXIT
;-----------
PROGRAM:
;-----------
;
;
;
USR "O:SUPPHEADER",ORG
END

View File

@ -0,0 +1,874 @@
6300- 48 PHA
6301- 2C 8B C0 BIT $C08B rw:LCBANK1
6304- 2C 8B C0 BIT $C08B rw:LCBANK1
6307- A2 08 LDX #$08
6309- A0 00 LDY #$00
630B- B9 CA 63 LDA $63CA,Y
630E- 99 00 D0 STA $D000,Y
6311- C8 INY
6312- D0 F7 BNE $630B
6314- EE 0D 63 INC $630D
6317- EE 10 63 INC $6310
631A- CA DEX
631B- D0 EE BNE $630B
631D- BD 51 63 LDA $6351,X
6320- F0 1D BEQ $633F
6322- A0 00 LDY #$00
6324- BD 51 63 LDA $6351,X
6327- E8 INX
6328- 99 3A 00 STA $003A,Y
632B- C8 INY
632C- C0 03 CPY #$03
632E- 90 F4 BCC $6324
6330- A0 00 LDY #$00
6332- BD 51 63 LDA $6351,X
6335- E8 INX
6336- 91 3B STA ($3B),Y
6338- C8 INY
6339- C6 3A DEC $3A
633B- D0 F5 BNE $6332
633D- F0 DE BEQ $631D
633F- 68 PLA
6340- 20 03 D0 JSR $D003
6343- A0 3B LDY #$3B
6345- B9 8E 63 LDA $638E,Y
6348- 99 25 02 STA $0225,Y
634B- 88 DEY
634C- 10 F7 BPL $6345
634E- 4C 25 02 JMP $0225
6351- 09 8B ORA #$8B
6353- 0B ???
6354- 2C 8B C0 BIT $C08B rw:LCBANK1
6357- 2C 8B C0 BIT $C08B rw:LCBANK1
635A- 4C 03 D0 JMP $D003
635D- 1C D0 88 TRB $88D0
6360- 38 SEC
6361- 66 4E ROR $4E
6363- 38 SEC
6364- E9 20 SBC #$20
6366- AA TAX
6367- BD 00 60 LDA $6000,X
636A- C5 4E CMP $4E
636C- B0 02 BCS $6370
636E- 85 4E STA $4E
6370- 4C 76 8C JMP $8C76
6373- A5 4E LDA $4E
6375- 18 CLC
6376- 6D 0A 8A ADC $8A0A
6379- 85 D9 STA $D9
637B- 60 RTS
637C- 02 ???
637D- 10 8C BPL $630B
637F- D0 88 BNE $6309
6381- 02 ???
6382- 28 PLP
6383- 8C D3 88 STY $88D3
6386- 04 3F TSB $3F
6388- 8C 20 E3 STY $E320
638B- 88 DEY
638C- EA NOP
638D- 00 BRK
638E- 18 CLC
638F- 20 4B 02 JSR $024B
6392- 20 3E 02 JSR $023E
6395- A2 27 LDX #$27
6397- A0 0B LDY #$0B
6399- 20 D2 0C JSR $0CD2
639C- D0 F4 BNE $6392
639E- 38 SEC
639F- 20 4B 02 JSR $024B
63A2- 68 PLA
63A3- 68 PLA
63A4- 4C 53 0B JMP $0B53
63A7- AD F4 95 LDA $95F4
63AA- C9 02 CMP #$02
63AC- F0 03 BEQ $63B1
63AE- 4C 15 78 JMP $7815
63B1- 4C F9 77 JMP $77F9
63B4- A0 1E LDY #$1E
63B6- B0 08 BCS $63C0
63B8- B9 00 70 LDA $7000,Y
63BB- 99 61 02 STA $0261,Y
63BE- 90 06 BCC $63C6
63C0- B9 61 02 LDA $0261,Y
63C3- 99 00 70 STA $7000,Y
63C6- 88 DEY
63C7- 10 ED BPL $63B6
63C9- 60 RTS
63CA- 4C 4B D0 JMP $D04B
63CD- AA TAX
63CE- A0 3F LDY #$3F
63D0- B9 19 D0 LDA $D019,Y
63D3- 99 C0 02 STA $02C0,Y
63D6- 88 DEY
63D7- 10 F7 BPL $63D0
63D9- A9 3F LDA #$3F
63DB- 48 PHA
63DC- A9 FF LDA #$FF
63DE- 48 PHA
63DF- 8A TXA
63E0- 4C C0 02 JMP $02C0
63E3- 48 PHA
63E4- 2C 8B C0 BIT $C08B rw:LCBANK1
63E7- 2C 8B C0 BIT $C08B rw:LCBANK1
63EA- A2 08 LDX #$08
63EC- A0 07 LDY #$07
63EE- A9 D2 LDA #$D2
63F0- 84 3A STY $3A
63F2- 85 3B STA $3B
63F4- A0 00 LDY #$00
63F6- A9 40 LDA #$40
63F8- 84 3C STY $3C
63FA- 85 3D STA $3D
63FC- B1 3A LDA ($3A),Y
63FE- 48 PHA
63FF- B1 3C LDA ($3C),Y
6401- 91 3A STA ($3A),Y
6403- 68 PLA
6404- 91 3C STA ($3C),Y
6406- C8 INY
6407- D0 F3 BNE $63FC
6409- E6 3B INC $3B
640B- E6 3D INC $3D
640D- CA DEX
640E- D0 EC BNE $63FC
6410- 2C 81 C0 BIT $C081 rw:ROMIN
6413- 68 PLA
6414- 60 RTS
6415- A9 00 LDA #$00
6417- A0 DE LDY #$DE
6419- AE 00 83 LDX $8300
641C- E0 01 CPX #$01
641E- D0 01 BNE $6421
6420- C8 INY
6421- 85 86 STA $86
6423- 84 87 STY $87
6425- 20 64 D1 JSR $D164
6428- A5 88 LDA $88
642A- 0A ASL
642B- 69 20 ADC #$20
642D- 85 83 STA $83
642F- A9 00 LDA #$00
6431- 85 82 STA $82
6433- A0 24 LDY #$24
6435- 91 82 STA ($82),Y
6437- 88 DEY
6438- 10 FB BPL $6435
643A- A9 25 LDA #$25
643C- 85 82 STA $82
643E- A6 88 LDX $88
6440- E4 89 CPX $89
6442- F0 2C BEQ $6470
6444- CA DEX
6445- E4 89 CPX $89
6447- F0 27 BEQ $6470
6449- A2 02 LDX #$02
644B- A9 00 LDA #$00
644D- 20 31 D1 JSR $D131
6450- A9 00 LDA #$00
6452- 20 DE D0 JSR $D0DE
6455- A9 C3 LDA #$C3
6457- 85 82 STA $82
6459- E6 83 INC $83
645B- A9 02 LDA #$02
645D- 20 DE D0 JSR $D0DE
6460- A0 0A LDY #$0A
6462- A9 00 LDA #$00
6464- 91 82 STA ($82),Y
6466- 88 DEY
6467- 10 FB BPL $6464
6469- E6 88 INC $88
646B- C6 8A DEC $8A
646D- D0 B9 BNE $6428
646F- 60 RTS
6470- A9 01 LDA #$01
6472- A6 89 LDX $89
6474- E0 18 CPX #$18
6476- F0 02 BEQ $647A
6478- A9 00 LDA #$00
647A- 85 3C STA $3C
647C- A2 00 LDX #$00
647E- A5 3C LDA $3C
6480- 20 31 D1 JSR $D131
6483- 20 DC D0 JSR $D0DC
6486- A2 01 LDX #$01
6488- A5 3C LDA $3C
648A- 20 31 D1 JSR $D131
648D- A2 11 LDX #$11
648F- 20 DC D0 JSR $D0DC
6492- CA DEX
6493- D0 FA BNE $648F
6495- E6 3C INC $3C
6497- E6 3C INC $3C
6499- A2 00 LDX #$00
649B- A5 3C LDA $3C
649D- 20 31 D1 JSR $D131
64A0- 20 DC D0 JSR $D0DC
64A3- 4C 96 D0 JMP $D096
64A6- A5 3C LDA $3C
64A8- A0 00 LDY #$00
64AA- 84 3A STY $3A
64AC- 31 86 AND ($86),Y
64AE- 4A LSR
64AF- 66 3D ROR $3D
64B1- 4A LSR
64B2- 90 02 BCC $64B6
64B4- A0 16 LDY #$16
64B6- 84 3B STY $3B
64B8- A4 3A LDY $3A
64BA- B1 84 LDA ($84),Y
64BC- 24 3D BIT $3D
64BE- 10 04 BPL $64C4
64C0- A8 TAY
64C1- B9 80 90 LDA $9080,Y
64C4- A4 3B LDY $3B
64C6- 31 82 AND ($82),Y
64C8- 8D 0E D1 STA $D10E
64CB- A4 3A LDY $3A
64CD- B1 80 LDA ($80),Y
64CF- 24 3D BIT $3D
64D1- 10 04 BPL $64D7
64D3- A8 TAY
64D4- B9 80 90 LDA $9080,Y
64D7- 09 00 ORA #$00
64D9- A4 3B LDY $3B
64DB- 91 82 STA ($82),Y
64DD- B0 02 BCS $64E1
64DF- C8 INY
64E0- C8 INY
64E1- E6 3A INC $3A
64E3- 88 DEY
64E4- 84 3B STY $3B
64E6- A5 3A LDA $3A
64E8- 49 17 EOR #$17
64EA- D0 CC BNE $64B8
64EC- A9 17 LDA #$17
64EE- 18 CLC
64EF- 65 82 ADC $82
64F1- 85 82 STA $82
64F3- 90 02 BCC $64F7
64F5- E6 83 INC $83
64F7- 60 RTS
64F8- 04 34 TSB $34
64FA- 64 A0 STZ $A0
64FC- 00 BRK
64FD- 31 86 AND ($86),Y
64FF- 45 88 EOR $88
6501- 4A LSR
6502- B0 02 BCS $6506
6504- A0 18 LDY #$18
6506- A5 86 LDA $86
6508- 85 80 STA $80
650A- A5 87 LDA $87
650C- 85 81 STA $81
650E- 98 TYA
650F- 18 CLC
6510- 7D 2E D1 ADC $D12E,X
6513- 8D 5B D1 STA $D15B
6516- 18 CLC
6517- 65 80 ADC $80
6519- 85 80 STA $80
651B- 90 02 BCC $651F
651D- E6 81 INC $81
651F- A9 00 LDA #$00
6521- A0 BB LDY #$BB
6523- 18 CLC
6524- 69 00 ADC #$00
6526- 85 84 STA $84
6528- 90 01 BCC $652B
652A- C8 INY
652B- 84 85 STY $85
652D- 60 RTS
652E- 20 FC D1 JSR $D1FC
6531- A0 00 LDY #$00
6533- B1 86 LDA ($86),Y
6535- 29 04 AND #$04
6537- D0 01 BNE $653A
6539- 60 RTS
653A- A2 02 LDX #$02
653C- A0 00 LDY #$00
653E- 20 3C D1 JSR $D13C
6541- 20 81 D1 JSR $D181
6544- 20 CB D1 JSR $D1CB
6547- CA DEX
6548- 10 F2 BPL $653C
654A- 60 RTS
654B- E0 02 CPX #$02
654D- F0 41 BEQ $6590
654F- A0 2E LDY #$2E
6551- 84 3B STY $3B
6553- A0 16 LDY #$16
6555- 84 3A STY $3A
6557- A9 7F LDA #$7F
6559- 85 3C STA $3C
655B- 31 80 AND ($80),Y
655D- F0 07 BEQ $6566
655F- A5 3C LDA $3C
6561- 0A ASL
6562- 29 7F AND #$7F
6564- 10 F3 BPL $6559
6566- A5 3C LDA $3C
6568- 91 84 STA ($84),Y
656A- D0 04 BNE $6570
656C- E0 00 CPX #$00
656E- F0 20 BEQ $6590
6570- C9 7F CMP #$7F
6572- D0 15 BNE $6589
6574- A9 7F LDA #$7F
6576- A4 3B LDY $3B
6578- 85 3C STA $3C
657A- 31 80 AND ($80),Y
657C- F0 07 BEQ $6585
657E- A5 3C LDA $3C
6580- 0A ASL
6581- 29 7F AND #$7F
6583- 10 F3 BPL $6578
6585- A5 3C LDA $3C
6587- 91 84 STA ($84),Y
6589- C6 3B DEC $3B
658B- A4 3A LDY $3A
658D- 88 DEY
658E- 10 C5 BPL $6555
6590- 60 RTS
6591- 31 84 AND ($84),Y
6593- 29 FF AND #$FF
6595- E0 01 CPX #$01
6597- F0 F7 BEQ $6590
6599- BD C7 D1 LDA $D1C7,X
659C- 8D ED D1 STA $D1ED
659F- BD C8 D1 LDA $D1C8,X
65A2- 8D EE D1 STA $D1EE
65A5- A0 2E LDY #$2E
65A7- A9 7F LDA #$7F
65A9- 85 3C STA $3C
65AB- B1 80 LDA ($80),Y
65AD- 25 3C AND $3C
65AF- F0 04 BEQ $65B5
65B1- 45 3C EOR $3C
65B3- 85 3C STA $3C
65B5- A5 3C LDA $3C
65B7- 11 84 ORA ($84),Y
65B9- 91 84 STA ($84),Y
65BB- 88 DEY
65BC- 30 07 BMI $65C5
65BE- C0 17 CPY #$17
65C0- D0 E9 BNE $65AB
65C2- 88 DEY
65C3- D0 E2 BNE $65A7
65C5- 60 RTS
65C6- A0 90 LDY #$90
65C8- A9 00 LDA #$00
65CA- 88 DEY
65CB- 99 00 BB STA $BB00,Y
65CE- D0 FA BNE $65CA
65D0- 60 RTS
65D1- 20 F3 42 JSR $42F3
65D4- A9 00 LDA #$00
65D6- 8D 0D B0 STA $B00D
65D9- AD F4 95 LDA $95F4
65DC- 8D 68 AA STA $AA68
65DF- 8D EA B7 STA $B7EA
65E2- 09 30 ORA #$30
65E4- C9 31 CMP #$31
65E6- D0 02 BNE $65EA
65E8- A9 20 LDA #$20
65EA- 8D 53 40 STA $4053
65ED- 20 C9 42 JSR $42C9
65F0- 20 FF 41 JSR $41FF
65F3- 04 01 TSB $01
65F5- 8C 00 34 STY $3400
65F8- 43 ???
65F9- 48 PHA
65FA- 4F ???
65FB- 4F ???
65FC- 53 ???
65FD- 45 20 EOR $20
65FF- 41 20 EOR ($20,X)
6601- 02 ???
6602- 0C 44 3A TSB $3A44
6605- 05 03 ORA $03
6607- 01 0F ORA ($0F,X)
6609- 00 BRK
660A- 5C ???
660B- 50 4C BVC $6659
660D- 41 43 EOR ($43,X)
660F- 45 20 EOR $20
6611- 44 ???
6612- 41 54 EOR ($54,X)
6614- 41 20 EOR ($20,X)
6616- 44 ???
6617- 49 53 EOR #$53
6619- 4B ???
661A- 20 49 4E JSR $4E49
661D- 20 44 52 JSR $5244
6620- 49 56 EOR #$56
6622- 45 20 EOR $20
6624- 32 05 AND ($05)
6626- 05 05 ORA $05
6628- 54 ???
6629- 59 50 45 EOR $4550,Y
662C- 20 49 4E JSR $4E49
662F- 20 4E 41 JSR $414E
6632- 4D 45 20 EOR $2045
6635- 4F ???
6636- 46 20 LSR $20
6638- 02 ???
6639- 0C 44 20 TSB $2044
663C- 4F ???
663D- 52 05 EOR ($05)
663F- 50 52 BVC $6693
6641- 45 53 EOR $53
6643- 53 ???
6644- 20 3C 52 JSR $523C
6647- 45 54 EOR $54
6649- 55 52 EOR $52,X
664B- 4E 3E 20 LSR $203E
664E- 46 4F LSR $4F
6650- 52 20 EOR ($20)
6652- 02 ???
6653- 0C 44 20 TSB $2044
6656- 4C 49 53 JMP $5349
6659- 54 ???
665A- 05 05 ORA $05
665C- 3E 06 00 ROL $0006,X
665F- 20 41 41 JSR $4141
6662- AD 00 C0 LDA $C000 r:KBD w:CLR80COL
6665- 8D FF 83 STA $83FF
6668- B0 15 BCS $667F
666A- 20 19 70 JSR $7019
666D- D0 0D BNE $667C
666F- 20 C9 42 JSR $42C9
6672- AD 13 44 LDA $4413
6675- F0 13 BEQ $668A
6677- 20 64 41 JSR $4164
667A- 90 03 BCC $667F
667C- 4C 1C 40 JMP $401C
667F- A9 01 LDA #$01
6681- 8D 68 AA STA $AA68
6684- 20 C9 42 JSR $42C9
6687- 4C C0 02 JMP $02C0
668A- 20 FF 41 JSR $41FF
668D- 04 01 TSB $01
668F- 8C 00 14 STY $1400
6692- 4C 49 53 JMP $5349
6695- 54 ???
6696- 20 4F 46 JSR $464F
6699- 20 02 0C JSR $0C02
669C- 44 ???
669D- 53 ???
669E- 20 4F 4E JSR $4E4F
66A1- 20 54 48 JSR $4854
66A4- 49 53 EOR #$53
66A6- 20 44 49 JSR $4944
66A9- 53 ???
66AA- 4B ???
66AB- 3A DEC
66AC- 05 00 ORA $00
66AE- A9 FF LDA #$FF
66B0- 8D 10 41 STA $4110
66B3- 8D 2A 41 STA $412A
66B6- 20 65 43 JSR $4365
66B9- EE 2A 41 INC $412A
66BC- 20 70 43 JSR $4370
66BF- B0 39 BCS $66FA
66C1- 8D 22 41 STA $4122
66C4- 8C 23 41 STY $4123
66C7- EE 10 41 INC $4110
66CA- AD 10 41 LDA $4110
66CD- 49 0F EOR #$0F
66CF- D0 0F BNE $66E0
66D1- 8D 10 41 STA $4110
66D4- 20 05 80 JSR $8005
66D7- 29 7F AND #$7F
66D9- C9 1B CMP #$1B
66DB- F0 32 BEQ $670F
66DD- 20 CC 42 JSR $42CC
66E0- A9 00 LDA #$00
66E2- 0A ASL
66E3- 0A ASL
66E4- 0A ASL
66E5- 69 24 ADC #$24
66E7- 8D 20 41 STA $4120
66EA- 20 FF 41 JSR $41FF
66ED- 03 ???
66EE- 01 40 ORA ($40,X)
66F0- 00 BRK
66F1- FF ???
66F2- 02 ???
66F3- FF ???
66F4- FF ???
66F5- 05 00 ORA $00
66F7- 4C E8 40 JMP $40E8
66FA- A9 00 LDA #$00
66FC- D0 0E BNE $670C
66FE- 20 FF 41 JSR $41FF
6701- 04 01 TSB $01
6703- 8C 00 40 STY $4000
6706- 4E 4F 4E LSR $4E4F
6709- 45 05 EOR $05
670B- 00 BRK
670C- 20 05 80 JSR $8005
670F- 4C 1C 40 JMP $401C
6712- A2 58 LDX #$58
6714- A0 41 LDY #$41
6716- A9 0F LDA #$0F
6718- 8E 15 8E STX $8E15
671B- 8C 16 8E STY $8E16
671E- 8D 17 8E STA $8E17
6721- A9 00 LDA #$00
6723- 8D 13 44 STA $4413
6726- 4C 12 8E JMP $8E12
6729- 02 ???
672A- 00 BRK
672B- 1B ???
672C- 00 BRK
672D- 8C 00 00 STY $0000
6730- 02 ???
6731- 00 BRK
6732- 13 ???
6733- 44 ???
6734- 02 ???
6735- A0 0F LDY #$0F
6737- A9 20 LDA #$20
6739- 88 DEY
673A- 99 4E 43 STA $434E,Y
673D- D0 FA BNE $6739
673F- B9 13 44 LDA $4413,Y
6742- F0 06 BEQ $674A
6744- 99 4E 43 STA $434E,Y
6747- C8 INY
6748- D0 F5 BNE $673F
674A- A2 49 LDX #$49
674C- A0 43 LDY #$43
674E- 20 09 08 JSR $0809
6751- D0 3E BNE $6791
6753- A9 00 LDA #$00
6755- D0 38 BNE $678F
6757- 2C 83 C0 BIT $C083 rw:LCBANK2
675A- 2C 83 C0 BIT $C083 rw:LCBANK2
675D- A0 0C LDY #$0C
675F- B1 FA LDA ($FA),Y
6761- 29 7F AND #$7F
6763- 91 FA STA ($FA),Y
6765- C8 INY
6766- C0 47 CPY #$47
6768- 90 F5 BCC $675F
676A- A0 2C LDY #$2C
676C- A9 58 LDA #$58
676E- 91 FA STA ($FA),Y
6770- A0 67 LDY #$67
6772- A9 34 LDA #$34
6774- 91 FA STA ($FA),Y
6776- A0 A2 LDY #$A2
6778- A9 00 LDA #$00
677A- 91 FA STA ($FA),Y
677C- A0 DD LDY #$DD
677E- A9 58 LDA #$58
6780- 91 FA STA ($FA),Y
6782- A0 0B LDY #$0B
6784- B1 FA LDA ($FA),Y
6786- 99 16 08 STA $0816,Y
6789- 88 DEY
678A- 10 F8 BPL $6784
678C- AD 82 C0 LDA $C082
678F- 18 CLC
6790- 60 RTS
6791- C9 06 CMP #$06
6793- F0 08 BEQ $679D
6795- 20 16 A3 JSR $A316
6798- 20 08 80 JSR $8008
679B- 38 SEC
679C- 60 RTS
679D- 20 C9 42 JSR $42C9
67A0- 20 CC 6F JSR $6FCC
67A3- 20 FF 41 JSR $41FF
67A6- 04 01 TSB $01
67A8- 8C 00 30 STY $3000
67AB- 43 ???
67AC- 41 4E EOR ($4E,X)
67AE- 4E 4F 54 LSR $544F
67B1- 20 46 49 JSR $4946
67B4- 4E 44 05 LSR $0544
67B7- 05 02 ORA $02
67B9- 13 ???
67BA- 44 ???
67BB- 05 05 ORA $05
67BD- 4F ???
67BE- 4E 20 54 LSR $5420
67C1- 48 PHA
67C2- 49 53 EOR #$53
67C4- 20 44 49 JSR $4944
67C7- 53 ???
67C8- 4B ???
67C9- 05 00 ORA $00
67CB- 20 05 80 JSR $8005
67CE- 38 SEC
67CF- 60 RTS
67D0- 68 PLA
67D1- 85 3A STA $3A
67D3- 68 PLA
67D4- 85 3B STA $3B
67D6- A9 02 LDA #$02
67D8- 8D 03 8A STA $8A03
67DB- 8D 0A 8A STA $8A0A
67DE- A2 00 LDX #$00
67E0- 20 B6 42 JSR $42B6
67E3- C9 20 CMP #$20
67E5- 90 06 BCC $67ED
67E7- 9D 00 BB STA $BB00,X
67EA- E8 INX
67EB- D0 F3 BNE $67E0
67ED- 0A ASL
67EE- A8 TAY
67EF- B9 32 42 LDA $4232,Y
67F2- 8D 2C 42 STA $422C
67F5- B9 33 42 LDA $4233,Y
67F8- 8D 2D 42 STA $422D
67FB- 18 CLC
67FC- 20 FF FF JSR $FFFF
67FF- 90 DF BCC $67E0
6801- B0 DB BCS $67DE
6803- 40 RTI
6804- 42 ???
6805- 48 PHA
6806- 42 ???
6807- 61 42 ADC ($42,X)
6809- 81 42 STA ($42,X)
680B- 84 42 STY $42
680D- 8A TXA
680E- 42 ???
680F- A2 42 LDX #$42
6811- 68 PLA
6812- 68 PLA
6813- 20 B6 42 JSR $42B6
6816- 6C 3A 00 JMP ($003A)
6819- 20 B6 42 JSR $42B6
681C- 8D 05 8A STA $8A05
681F- 8D 8E 42 STA $428E
6822- 20 B6 42 JSR $42B6
6825- 8D 06 8A STA $8A06
6828- 8D 90 42 STA $4290
682B- 20 B6 42 JSR $42B6
682E- 8D 07 8A STA $8A07
6831- 60 RTS
6832- 20 B6 42 JSR $42B6
6835- 8D 70 42 STA $4270
6838- 20 B6 42 JSR $42B6
683B- 8D 71 42 STA $4271
683E- A0 00 LDY #$00
6840- B9 FF FF LDA $FFFF,Y
6843- F0 0B BEQ $6850
6845- C9 20 CMP #$20
6847- 90 04 BCC $684D
6849- 9D 00 BB STA $BB00,X
684C- E8 INX
684D- C8 INY
684E- D0 F0 BNE $6840
6850- 18 CLC
6851- 60 RTS
6852- A9 00 LDA #$00
6854- 2C A9 02 BIT $02A9
6857- 8D 04 8A STA $8A04
685A- 60 RTS
685B- 20 A2 42 JSR $42A2
685E- A0 00 LDY #$00
6860- A9 00 LDA #$00
6862- 8C 05 8A STY $8A05
6865- 8D 06 8A STA $8A06
6868- AD 07 8A LDA $8A07
686B- 18 CLC
686C- 69 08 ADC #$08
686E- 8D 07 8A STA $8A07
6871- 38 SEC
6872- 60 RTS
6873- A9 00 LDA #$00
6875- 9D 00 BB STA $BB00,X
6878- A0 00 LDY #$00
687A- A9 BB LDA #$BB
687C- 8C 0C 8A STY $8A0C
687F- 8D 0D 8A STA $8A0D
6882- 20 00 8A JSR $8A00
6885- 38 SEC
6886- 60 RTS
6887- E6 3A INC $3A
6889- D0 02 BNE $688D
688B- E6 3B INC $3B
688D- A0 00 LDY #$00
688F- B1 3A LDA ($3A),Y
6891- 60 RTS
6892- 01 11 ORA ($11,X)
6894- 26 A5 ROL $A5
6896- 01 1C ORA ($1C,X)
6898- 26 9A ROL $9A
689A- A2 03 LDX #$03
689C- 2C A2 07 BIT $07A2
689F- A0 03 LDY #$03
68A1- BD C1 42 LDA $42C1,X
68A4- 99 0C 8E STA $8E0C,Y
68A7- CA DEX
68A8- 88 DEY
68A9- 10 F6 BPL $68A1
68AB- A9 01 LDA #$01
68AD- 4C 09 8E JMP $8E09
68B0- 81 89 STA ($89,X)
68B2- 00 BRK
68B3- 07 ???
68B4- 46 4F LSR $4F
68B6- 4E 54 00 LSR $0054
68B9- D0 E8 BNE $68A3
68BB- 42 ???
68BC- 4F ???
68BD- 52 44 EOR ($44)
68BF- 45 52 EOR $52
68C1- 00 BRK
68C2- DE DF 8D DEC $8DDF,X
68C5- 83 ???
68C6- 41 A8 EOR ($A8,X)
68C8- BE DF 42 LDX $42DF,Y
68CB- BD 00 C0 LDA $C000,X
68CE- BD 00 C0 LDA $C000,X
68D1- BE E1 42 LDX $42E1,Y
68D4- A0 00 LDY #$00
68D6- BD E3 42 LDA $42E3,X
68D9- 99 0C 44 STA $440C,Y
68DC- F0 0B BEQ $68E9
68DE- C0 04 CPY #$04
68E0- B0 03 BCS $68E5
68E2- 99 49 43 STA $4349,Y
68E5- E8 INX
68E6- C8 INY
68E7- D0 ED BNE $68D6
68E9- AD F5 95 LDA $95F5
68EC- 4A LSR
68ED- 90 08 BCC $68F7
68EF- 4D 00 83 EOR $8300
68F2- C9 01 CMP #$01
68F4- D0 01 BNE $68F7
68F6- E8 INX
68F7- BD E4 42 LDA $42E4,X
68FA- A0 00 LDY #$00
68FC- 84 FA STY $FA
68FE- 85 FB STA $FB
6900- 48 PHA
6901- 4A LSR
6902- 4A LSR
6903- 4A LSR
6904- 4A LSR
6905- 20 3B 43 JSR $433B
6908- 8D 60 43 STA $4360
690B- 68 PLA
690C- 29 0F AND #$0F
690E- 09 30 ORA #$30
6910- C9 3A CMP #$3A
6912- 90 02 BCC $6916
6914- 69 06 ADC #$06
6916- 8D 61 43 STA $4361
6919- 60 RTS
691A- 58 CLI
691B- 58 CLI
691C- 58 CLI
691D- 58 CLI
691E- 2E 00 00 ROL $0000
6921- 00 BRK
6922- 00 BRK
6923- 00 BRK
6924- 00 BRK
6925- 00 BRK
6926- 00 BRK
6927- 00 BRK
6928- 00 BRK
6929- 00 BRK
692A- 00 BRK
692B- 00 BRK
692C- 00 BRK
692D- 00 BRK
692E- 2C 41 24 BIT $2441
6931- 58 CLI
6932- 58 CLI
6933- 30 30 BMI $6965
6935- 00 BRK
6936- A9 00 LDA #$00
6938- 85 FE STA $FE
693A- A0 11 LDY #$11
693C- 20 DD 43 JSR $43DD
693F- 38 SEC
6940- 60 RTS
6941- A5 FC LDA $FC
6943- 18 CLC
6944- 69 23 ADC #$23
6946- 85 FC STA $FC
6948- 90 02 BCC $694C
694A- E6 FD INC $FD
694C- C6 FE DEC $FE
694E- 10 19 BPL $6969
6950- AC 14 44 LDY $4414
6953- AD 15 44 LDA $4415
6956- F0 E7 BEQ $693F
6958- 20 DD 43 JSR $43DD
695B- A0 FB LDY #$FB
695D- A9 43 LDA #$43
695F- 84 FC STY $FC
6961- 85 FD STA $FD
6963- A9 07 LDA #$07
6965- 85 FE STA $FE
6967- D0 D8 BNE $6941
6969- A0 00 LDY #$00
696B- B1 FC LDA ($FC),Y
696D- 30 D2 BMI $6941
696F- F0 CE BEQ $693F
6971- C8 INY
6972- C8 INY
6973- B1 FC LDA ($FC),Y
6975- 29 7F AND #$7F
6977- C9 04 CMP #$04
6979- D0 C6 BNE $6941
697B- A2 00 LDX #$00
697D- C8 INY
697E- B1 FC LDA ($FC),Y
6980- 29 7F AND #$7F
6982- DD 49 43 CMP $4349,X
6985- D0 BA BNE $6941
6987- E8 INX
6988- E0 05 CPX #$05
698A- 90 F1 BCC $697D
698C- A0 20 LDY #$20
698E- B1 FC LDA ($FC),Y
6990- 49 A0 EOR #$A0
6992- D0 05 BNE $6999
6994- 91 FC STA ($FC),Y
6996- 88 DEY
6997- 10 F5 BPL $698E
6999- B1 FC LDA ($FC),Y
699B- 29 7F AND #$7F
699D- 91 FC STA ($FC),Y
699F- 88 DEY
69A0- D0 F7 BNE $6999
69A2- A5 FC LDA $FC
69A4- A4 FD LDY $FD
69A6- 18 CLC
69A7- 69 08 ADC #$08
69A9- 90 01 BCC $69AC
69AB- C8 INY
69AC- 18 CLC
69AD- 60 RTS
69AE- 8D ED B7 STA $B7ED
69B1- 8C EC B7 STY $B7EC
69B4- A9 00 LDA #$00
69B6- 8D EB B7 STA $B7EB
69B9- A0 13 LDY #$13
69BB- A9 44 LDA #$44
69BD- 8C F0 B7 STY $B7F0
69C0- 8D F1 B7 STA $B7F1
69C3- A9 01 LDA #$01
69C5- 8D F4 B7 STA $B7F4
69C8- 20 E3 03 JSR $03E3
69CB- 20 D9 03 JSR $03D9
69CE- B0 01 BCS $69D1
69D0- 60 RTS
69D1- 68 PLA
69D2- 68 PLA
69D3- 68 PLA
69D4- 68 PLA
69D5- A9 08 LDA #$08
69D7- 20 C0 41 JSR $41C0
69DA- 4C 1C 40 JMP $401C

View File

@ -0,0 +1,12 @@
10 LL = - 21920:LH = - 21919: DEF FN L(A) = PEEK (LL) + 256 * PEEK (LH): PRINT "MONC"
20 READ F$,A,A: PRINT "BLOAD "F$",A$4000":BF = 16384 + FN L(0)
30 READ F$,AL,AH: POKE BF,AL: POKE BF + 1,AH:BF = BF + 2: IF AH THEN PRINT "BLOAD "F$",A"BF + 2: POKE BF, PEEK (LL): POKE BF + 1, PEEK (LH):BF = BF + 2 + FN L(0): GOTO 30
40 EX$ = ".TOO BIG,V13": GOSUB 100
45 REM EX$=",S4":GOSUB100
50 END
100 PRINT "BSAVE "F$EX$",A16384,L"BF - 16384: RETURN
1000 DATA "UCAL",0,64: REM $4000
1005 DATA "PCAL",0,15: REM $0F00
1010 DATA "ICAL",0,123: REM $7B00
1015 DATA "CALEN",,
63999 PRINT "SAVE MCAL"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,327 @@
NLS
; S:COMMON
;
; Common equates for Calendar
; source files.
;
GOOFBALL = *
;-----------
;
; Monthly data margins
;
DTCXMAX = 126
DTCYMAX = 90
DTCXMARG = 6
DTCYMARG = 24
;-----------
;
; Common zero page
;
CLZ EPZ $D0
;
XOFFLO EPZ CLZ
XOFFHI EPZ CLZ+1
YOFF EPZ CLZ+2
TMP0 EPZ CLZ+3
TMP1 EPZ CLZ+4
TMP2 EPZ CLZ+5
TMP3 EPZ CLZ+6
TMP4 EPZ CLZ+7
TMP5 EPZ CLZ+8
;
DATE EPZ CLZ+9
;
CRLINE EPZ CLZ+10
;
;-----------
UFONT = $8500
UFONTW = UFONT
CLFONT = $6000
CFONTH = CLFONT+$3B
;-----------
;
; Constants:
;
GRBUFF = $7800
FONTBUFF = $5FF4
ESC = 27
;------
;
; Temporary buffer for text
;
TEMPTEXT = $7A40
;
MONTHTXT = TEMPTEXT
; worst:SEPTEMBER (9+1)
WEEKTEXT = MONTHTXT+10
; worst:WEDNESDAY (9+1)
DATETEXT = WEEKTEXT+10
; worst:31 (2+1)
;-----------
;
; Common buffer
;
COBUFF = $D000
;
ORG COBUFF
;--
CLTYPE DFS 1 ; Calendar type
;--
GRSEL DFS 1 ; Graphic selection
NOGR = 3
GRNUM DFS 1 ; # from PSD
GROPTION DFS 1 ; Position option
;--
YEARTEXT DFS 5
;--
MONTH DFS 1 ; 0-11
MNDATE DFS 1 ; mini-calen default
MNWDATE DFS 1 ; mini-week default
MNFDAY DFS 1 ; day of week 0-6
MNLAST DFS 1 ; # days in month
;--
FONTSEL DFS 1 ; Font selection
NOFONT = 3
FONTPSD DFS 1 ; # from PSD
FONTCD DFS 1 ; # from CD
;--
PRSEL DFS 1 ; printer item
PRCOPIES DFS 1 ; # copies to print
;--
;
; 0-30:monthly data (DATE-1)
; 0-27:weekly date in groups of 4
; 31 :top line
; 32 :second line
; 33 :credit line
;
DBUFCONT = 34 ; # strings
;
DBUFENDL DFS 1 ; EOF pointer
DBUFENDH DFS 1
;
DBUFPNTL DFS DBUFCONT ; pointers
DBUFPNTH DFS DBUFCONT ; to the text
;
; If COLORFLG=$FF then next 4
; are colors for:
; 0:Font
; 1:Graphics
; 2:Lines
; 3:Highlites
;
COLORFLG DFS 1 ; $FF=color follows
DCOLOR0 DFS 1
DCOLOR1 DFS 1
DCOLOR2 DFS 1
DCOLOR3 DFS 1
;
DBUFFER DFS 1 ; first byte of buffer
;-----------
;
; Z-page
;
FLASHLO EPZ $4E
FLASHHI EPZ $4F
;-----------
;
; MAIN MENU routines
;
MM = $0800
;
MAINMENU = MM
FGETMAIN = MM+3
FGETPSD = MM+6
FGETCD = MM+9
;
HAS128K = $27F
CONFIG = $95F0
COLORPR = CONFIG+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
TESTPAPR = SP+132
GETANUMB = SP+135
ANYKEY2 = SP+138
;
WITE = $FF
GRAY = $AA
GRAY2 = $55
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
PRPIC = 19
PRRTAB = 20
PRRTAB2 = 21
PRKERN = 22
RTOSINV = 23
;-----------
;
; Monitor routines
;
WAIT = $FCA8
RTS = $FF58
;-----------
;
; PRCOMS locations
;
COUT1 = $1800
CRLF = $1803
SENDGC = $1806
GCOUT = $1809
MTHINK = $180C
MPRINT = $180F
MPAUSE = $1812
COPYCONT = $1815
UPLRK = $1816
COLORCHG = $181D
;-----------
;
; Buffer handler routines
;
TEXTBUFF = $9600
EDITBUFF = $9700
;
BF = $7B00
;
; Credit line info
;
CRXB = 4
CRXMAXB = 32
CRX = CRXB*7
CRXMAX = CRXMAXB*7
;
CRY1 = 78
;
.IF BF-ORG
CLRCOBUF = BF
GETTEXT = BF+3
PUTTEXT = BF+6
GETEDIT = BF+9
PUTEDIT = BF+12
MAKEDTXT = BF+15
MAKEWTXT = BF+18
;
TOPTEXT = BF+21
GTMTEXT = BF+24
GTWTEXT = BF+27
CREDIT = BF+30
;
DRAWBOX = BF+33
.FI
;-----------
;
; Print routines
;
PR = $F00
;
.IF PR-ORG
DOCALEN = PR
EDITDRAW = PR+3
EDITYOFF = PR+6
STRCROP = PR+9
.FI
;-----------
;
; MAIN code vectors
;
MN = $4000
;
.IF MN-ORG
CRBLAK = MN+6
CRDRAW = MN+9
.FI
;-----------
;
; Print buffer constants
;
BUFWIDTH = 1024
LMARGIN = 10
CLBUFFER = $2000
;-----------
;
; STROUT variables
;
STROUT = $8A00
SPARM = STROUT+3
CSIZE = STROUT+$0B
;
; STROUT mod routines
;
STINSTAL = STROUT+$0F
STSCREEN = STROUT+$12
FINSTALL = STROUT+$15
;
;-----------
PHS GOOFBALL
END

View File

@ -0,0 +1,3 @@
NLS
; S:ICAL
ICL "S:ICAL1"

View File

@ -0,0 +1,400 @@
TTL "S:ICAL"
; S:ICAL1
NOG
ORG = $7B00
;
; 09/13/85
; 12/05/85 last mod, full
; credit line
;
;-----------
BFZ EPZ $C0
;
ILINE EPZ BFZ
ICURFLAG EPZ BFZ+1
IEDYOFF EPZ BFZ+2
;-----------
;
; Common buffer routines.
;
; Print Shop Companion Calendar
;
; by Roland Gustafsson
; Copyright 1985
;
;-----------
ORG ORG
OBJ $800
;-----------
JMP CLRCOBUF
JMP GETTEXT
JMP PUTTEXT
JMP GETEDIT
JMP PUTEDIT
;
JMP MAKEDTXT
JMP MAKEWTXT
;
JMP TOPTEXT
JMP GTMTEXT
JMP GTWTEXT
JMP CREDIT
;
JMP DRAWBOX
;-----------
;
; Turn on the main bank of
; the $D000 area
; Clear the common buffer
;
CLRCOBUF LDY #0
TYA
^0 STA COBUFF,Y
INY
BNE <0
;
DEY
STY COLORFLG
;
LDY #DBUFFER
LDA /DBUFFER
STY DBUFENDL
STA DBUFENDH
RTS
;-----------
;
; Get pointer into DBUFFER
; BEQ if no data for this date
;
GETDPNT LDA DBUFPNTL,Y
STA TMP0
STA TMP2
LDA DBUFPNTH,Y
STA TMP1
STA TMP3
ORA TMP2
RTS
;-----------
;
; GETTEXT from DBUFFER into TEXTBUFF
; If empty, return CLC
;
GETTEXT JSR GETDPNT
BNE >0
STA TEXTBUFF
CLC
RTS
;
^0 LDY #0
^1 LDA (TMP2),Y
STA TEXTBUFF,Y
BEQ >2
INY
BNE <1
;
^2 SEC
RTS
;-----------
;
; PUTTEXT from TEXTBUFF to DBUFFER
;
PUTTEXT TYA
PHA
JSR REMTEXT
PLA
TAY
LDA TEXTBUFF
BNE >0
STA DBUFPNTL,Y
STA DBUFPNTH,Y
RTS
;
^0 LDA DBUFENDL
STA DBUFPNTL,Y
STA TMP0
LDA DBUFENDH
STA DBUFPNTH,Y
STA TMP1
;
LDY #0
^1 LDA TEXTBUFF,Y
STA (TMP0),Y
INC DBUFENDL
BNE >2
INC DBUFENDH
^2 INY
TAX
BNE <1
RTS
;-----------
;
; Remove data form DBUFFER, if any.
;
REMTEXT JSR GETDPNT
BEQ >9
;
; There is data, so calculate its
; length and then remove it.
;
; TMP0.1:start of text to be removed
; TMP2.3:next byte after text
; TMP4 :length (TMP2.3-TMP0.1)
;
LDA #0
STA TMP4
^0 LDY #0
LDA (TMP2),Y
INC TMP2
BNE *+4
INC TMP3
INC TMP4
TAY
BNE <0
;
; First fix pointers pointing above
; text just removed
;
LDX #DBUFCONT-1
^0 LDA DBUFPNTH,X
CMP TMP3
BNE >1
LDA DBUFPNTL,X
CMP TMP2
^1 BCC >2
LDA DBUFPNTL,X
SBC TMP4
STA DBUFPNTL,X
BCS >2
DEC DBUFPNTH,X
^2 DEX
BPL <0
;
; Now close up the space
;
^0 LDA TMP3
CMP DBUFENDH
BNE >1
LDA TMP2
CMP DBUFENDL
^1 BEQ >2
LDA (TMP2),Y
STA (TMP0),Y
INC TMP0
BNE *+4
INC TMP1
INC TMP2
BNE *+4
INC TMP3
BNE <0
;
; Update DBUFEND pointer
;
^2 SBC TMP4
STA DBUFENDL
BCS >9
DEC DBUFENDH
^9 RTS
;-----------
;
; Get EDITBUFF from DBUFFER.
;
; First get data into TEXTBUFF
;
GETEDIT JSR GETTEXT
;
; Clear EDITBUFF
;
LDY #0
^0 TYA
LDX #0
AND #%00011111
BNE *+4
LDX #$80
TXA
STA EDITBUFF,Y
INY
BNE <0
;
; Now unpack it into EDITBUFF
;
LDX #0-32
;
^1 LDA TEXTBUFF,Y
BEQ >4
BMI >3
^2 STA EDITBUFF,X
INX
INY
BNE <1
;
^3 PHA
TXA
CLC
ADC #32
AND #%11100000
TAX
PLA
BMI <2
;
^4 RTS
;-----------
;
; Move EDITBUFF into DBUFFER
;
PUTEDIT TYA
PHA
;
; First pack data into TEXTBUFF
;
LDX #0
LDY #0
^0 LDA EDITBUFF,X
STA TEXTBUFF,Y
BEQ >1
INX
INY
BNE <0
;
; Do next string
;
^1 TXA
CLC
ADC #32
AND #%11100000
TAX
BNE <0
;
; Now strip off trailing nulls.
;
^2 DEY
BMI >3
LDA TEXTBUFF,Y
BMI <2
;
; Store zero at end.
;
^3 INY
LDA #0
STA TEXTBUFF,Y
;
; Now do the actual move
;
PLA
TAY
JMP PUTTEXT
;-----------
;
; Convert date to decimal ASCII
;
MAKEDTXT LDY #0
STY DATETEXT+2
LDA DATE
CMP #10
BLT >1
LDX #$FF
;
^0 INX
SBC #10
BCS <0
ADC #10
ORA #'0'
TAY
TXA
^1 ORA #'0'
;
STA DATETEXT
STY DATETEXT+1
RTS
;-----------
;
; Given Y=0-6, make WEEKTEXT
;
MAKEWTXT LDX #$FF
^0 DEY
BMI >2
^1 INX
LDA MAKEWTX2,X
BNE <1
BEQ <0
;
^2 LDY #$FF
^3 INX
INY
LDA MAKEWTX2,X
STA WEEKTEXT,Y
BNE <3
RTS
;
MAKEWTX2 BYT 'SUNDAY',0
BYT 'MONDAY',0
BYT 'TUESDAY',0
BYT 'WEDNESDAY',0
BYT 'THURSDAY',0
BYT 'FRIDAY',0
BYT 'SATURDAY',0
;-----------
;
; Draw a box on the screen
; given X,Y: location (X is byte)
; A: height
;
; Automatically generates width based
; on X-coordinate.
;
DRAWBOX PHA
;
; W = 2*(20-X)
;
STX TMP0
LDA #20
SEC
SBC TMP0
ASL
STA TMP0
PLA
;---
;
; Enter here with TMP0=width
;
; H
DRAWBOX2 STA >0+5
STA >1+5
; X
STX >0+2
STX >2+1
STX >3+1
; X+W
DEX
TXA
CLC
ADC TMP0
STA >1+2
; Y
STY >0+3
STY >1+3
; Y-2
DEY
DEY
STY >2+2
; Y+H
TYA
ADC #2
ADC >0+5
STA >3+2
; W
LDA TMP0
STA >2+3
STA >3+3
;
JSR PRINT
^0 BYT RTOSANY,$07,0,0,1,0
^1 BYT RTOSANY,$70,0,0,1,0
^2 BYT RTOSWITE,0,0,0,2
^3 BYT RTOSWITE,0,0,0,2
BRK
RTS
;-----------
;
;
;
ICL "S:ICAL2"

View File

@ -0,0 +1,160 @@
;
; S:ICAL2
;
; String Edit routines
;
;
; SHOWEIAM: Show EI available message
;
; SHOWEI : Show EI screen
;
;-----------
TXTEI BYT 'EDIT INSTRUCTIONS',0
;
TXTOLINE BYT ' OF'
TXTLINE BYT ' LINE ',0
;-----------
;
; Show that CTRL-I for help is
; available. The "I" used here is
; not the normal "I" in UFONT. This
; "I" has a hat and shoes on.
;
SHOWEIAM JSR PRINT
.DA #PRLOC,12,#166
BYT '<CTRL- > TO SEE '
.DA #PRSTR,TXTEI,#CR
BYT PRPIC
BYT 9,166,1,7
HEX 0F06060606060F
;
BRK
RTS
;-----------
;
; Show help screen
;
; SEC:top text
; CLC:monthly date text
;
EIY = 22
EIY1 = 58
EIY2 = 68
EIY3 = 160
;
SHOWEI PHP
JSR CLS1
JSR PRINT
.DA #PRLOC,76,#EIY
.DA #PRSTR,TXTEI,#CR
BRK
PLP
BCS >0
;---
;
; Position message and size message
;
JSR PRINT
.DA #PRLOC,16,#EIY1
BYT '<CTRL-P>',NOCR
BYT PRRTAB,91
BYT 'POSITION'
.DA #PRSTR,TXTLINE
BYT 'OF TEXT',CR
.DA #PRLOC,122,#EIY1+11
BYT 'L',CR,'C',CR,'R',CR
.DA #PRLOC,148,#EIY1+11
BYT 'LEFT',CR
BYT 'CENTER',CR
BYT 'RIGHT',CR
;
.DA #PRLOC,16,#EIY1+42
BYT '<CTRL-S>',NOCR
BYT PRRTAB,91
BYT 'CHANGE SIZE'
.DA #PRSTR,TXTOLINE,#CR
BRK
JMP >1
;---
;
; Form message
;
^0 JSR PRINT
.DA #PRLOC,16,#EIY2
BYT '<CTRL-F>',NOCR
BYT PRRTAB,91
BYT 'CHANGE FORM'
.DA #PRSTR,TXTOLINE,#CR
.DA #PRLOC,148,#EIY2+11
BYT 'SOLID',CR
BYT 'OUTLINE',CR
BYT '3-D',CR
BRK
LDX #17
LDY #EIY2+11
JSR FSOLID
LDX #17
LDY #EIY2+19
JSR FOUTLINE
LDX #17
LDY #EIY2+27
JSR F3D
;---
;
; Erase message
;
^1 JSR ERASMESS
JMP ANYKEY
;---
;
ERASMES2 LDA #PRCNTR
LDX #140
BNE >0
;
ERASMESS LDA #PRLEFT
LDX #16
^0 STA >1+0
STX >2+1
JSR PRINT
^1 BYT PRLEFT
^2 .DA #PRLOC,0,#144
;
BYT '<CTRL-E> ERASE LINE',CR
BRK
RTS
;-----------
;
; Solid form
;
FSOLID STX >0+0
STY >0+1
JSR PICDRAW
^0 BYT 0,0,2,7
HEX 7C1F7C1F7C1F7C1F
HEX 7C1F7C1F7C1F
RTS
;
; Outline form
;
FOUTLINE STX >0+0
STY >0+1
JSR PICDRAW
^0 BYT 0,0,2,7
HEX 7C1F0C180C180C18
HEX 0C180C187C1F
RTS
;
; 3-D form
;
F3D STX >0+0
STY >0+1
JSR PICDRAW
^0 BYT 0,0,2,7
HEX 1C1F363330331833
HEX 303336331C1F
RTS
;-----------
;
;
;
ICL "S:ICAL3"

View File

@ -0,0 +1,231 @@
;
; S:ICAL3
;
; Edit a string. GIVEN:
;
; 1)*Routine to BLAK current string
; edit area. Must also return
; string address in TMP2.3
; 2) Routine to crop extra characters
; off the end of too-long strings.
; Used when the string will be
; printed using the loaded font.
; 3)*Routine to actually draw the
; string onto the screen.
;
; 4)*Maximum width on screen
; 5)*Maximum number of characters
; 6)*CSPACE on screen
; 7)*Kerning?
;
; * you must supply this parameter
;
;-----------
;
; Initialize TEDIT routine
;
TEINIT JSR GETINIT
JSR GETWORD
STY TBLAKMOD+1
STA TBLAKMOD+2
JSR GETWORD
STY TCROPMOD+1
STA TCROPMOD+2
JSR GETWORD
STY TDRAWMOD+1
STA TDRAWMOD+2
JSR GETWORD
STY TMAXWITH
STA TMAXCONT
JSR GETWORD
STY TCSPACE
STA TKERNING
RTS
;-----------
;
; Text edit routine
;
TEDIT:
TBLAKMOD JSR $FFFF
TCROPMOD JSR $FFFF
;
; Screen crop routine
;
; Set CSPACE and KERN
;
LDY TMP2
LDA TMP3
STY SPARM+9
STA SPARM+10
;
LDA #00
TCSPACE = *-1
STA SPARM+7
;
LDA #00
TKERNING = *-1
STA SPARM+11
;
LDX #00
TMAXWITH = *-1
BEQ TDRAWMOD
LDY #0
LDA /UFONT
JSR STRCROP
;
TDRAWMOD JSR $FFFF
;
; Main loop (sort of)
;
^0 JSR IGETKEY
PHA
;
; Calc length into Y
;
LDY #$FF
^1 INY
LDA (TMP2),Y
BNE <1
;
PLA
LDX #1
JSR PARSE
.DA #'H'-$40,INPCTRLH
.DA #127,INPCTRLH
.DA #'E'-$40,INPCTRLE
;
; Return the following commands to
; the calling program.
;
.DA #CR,INPCR
.DA #'J'-$40,INPCR
.DA #ESC,INPESC
.DA #'K'-$40,INPESC
;
.DA #'I'-$40,INPCTRLI
.DA #'S'-$40,INPCTRLS
.DA #'P'-$40,INPCTRLP
.DA #'F'-$40,INPCTRLF
;
.DA #'@',<0+0
BRK
CMP #' '
BLT <0
CMP #'Z'+1
BGE <0
;
; Too many letters?
;
CPY #00
TMAXCONT = *-1
BGE <0
;
; Store char into buffer
;
STA (TMP2),Y
INY
LDA #0
STA (TMP2),Y
;
; If left justify, then don't need
; to black out old string.
;
LDA SPARM+1
BEQ TCROPMOD
BNE TBLAKMOD
;-----------
;
; Erase line
;
INPCTRLE LDY #1
;-----------
;
; Backspace
;
INPCTRLH DEY
BMI <0
LDA #0
STA (TMP2),Y
JMP TEDIT
;-----------
INPCTRLF INX
INPCTRLP INX
INPCTRLS INX
INPCTRLI INX
INPESC INX
INPCR TXA
RTS
;-----------
;
; Get a key with flashing cursor
;
IGETKEY ASL ICURFLAG
^0 JSR ICURSOR
INC ICURFLAG
JSR FLSHINIT
;
^1 JSR POLEBTN
BMI >2
DEC FLASHLO
BNE <1
DEC FLASHHI
BPL <1
BMI <0
;
^2 PHA
LSR ICURFLAG
BCC >3
JSR ICURSOR
^3 PLA
RTS
;
; EOR cursor onto screen
;
ICURSOR LDA #4
STA SPARM+0
;
; SAVE: XOPTION,X,CSPACE
;
LDA SPARM+1
PHA
LDA SPARM+2
PHA
LDA SPARM+3
PHA
LDA SPARM+7
PHA
;
LDA #0
STA SPARM+1
STA SPARM+7
LDY #ICURSTXT
LDA /ICURSTXT
STY SPARM+9
STA SPARM+10
JSR STROUT
;
PLA
STA SPARM+7
PLA
STA SPARM+3
PLA
STA SPARM+2
PLA
STA SPARM+1
;
; Set option back to OR
; (4/2 = 2!!!)
;
LSR SPARM+0
RTS
;
ICURSTXT BYT 'II',0
;-----------
GETWORD JSR GETBYTE
TAY
JMP GETBYTE
;-----------
;
;
;
ICL "S:ICAL4"

View File

@ -0,0 +1,254 @@
;
; S:ICAL4
;
; GTMTEXT
;
; Get text for monthly calendar
;
MCXOFF = 71
MCYOFF = 54
MCWIDTH = 126
;
; Initialize everything!
;
GTMTEXT STX DATE
LDA #0
STA ILINE
;
; Get text for this day
;
LDY DATE
DEY
JSR GETEDIT
;
; Configure TEDIT routine
;
JSR TEINIT
ADR GTMBLAK
ADR RTS
ADR GTMDRAW
BYT 126,30,2,0
;
LDX #MCXOFF
LDY /MCXOFF
STX XOFFLO
STY XOFFHI
LDY #MCYOFF
STY YOFF
;-----------
;
; Draw the initial screen
;
GTMDATE2 JSR GTTOP
JSR SHOWEIAM
LDX #10
LDY #MCYOFF
LDA #90
JSR DRAWBOX
LDY #$FF
JSR EDITDRAW
;
; Show all the attributes
;
LDY #0
^0 JSR GTMSTUFF
INY
BCC <0
;
LDY ILINE
;
; Now edit one of the strings
;
GTMDNEXT STY ILINE
GTMDGET JSR TEDIT
PHA
LDY ILINE
JSR EDITYOFF
PLA
JSR PARSE
.DA #1,GTMCR
.DA #2,GTMESC
.DA #3,GTMCTRLI
.DA #4,GTMCTRLS
.DA #5,GTMCTRLP
.DA #6,GTMDGET
;---
GTMCR INY
JSR EDITYOFF
BCC GTMDNEXT
BCS >0
;---
GTMESC DEY
BPL GTMDNEXT
;---
;
; Room?
;
^0 JSR GTMBCHEK
BCS >9
;
; Put it into buffer
;
LDY DATE
DEY
JSR PUTEDIT
;
; Fall into the check routine
;
;---
;
; Check to see if data goes to
; far into buffer.
; If it won't fit, then erase it
; and return with SEC
;
; COBUFFER+(4096-300)
; 58 for pointers
; 64*3 for three strings
; 50 for good luck
;
GTMOMAX = $D000+3796
;
GTMBCHEK LDA DBUFENDL
CMP #GTMOMAX
LDA DBUFENDH
SBC /GTMOMAX
BCC >9
LDA #0
STA TEXTBUFF
LDY DATE
DEY
JSR PUTTEXT
SEC
^9 RTS
;---
GTMCTRLP LDA EDITBUFF,X
PHA
AND #6
CLC
ADC #2
CMP #6
BNE *+4
LDA #0
STA TMP0
PLA
AND #%11111001
ORA TMP0
STA EDITBUFF,X
JSR GTMSTUFF
JMP GTMDGET
;-----------
;
; Show text position and
; box on left edge.
;
GTMSTUFF STY >9+1
JSR GTMYCALC
BCS >9
LDA EDITBUFF,X
LSR
AND #3
TAY
LDA GTMPOSIT,Y
STA >2+0
LDY IEDYOFF
STY >0+2
STY >1+3
JSR PRINT
^0 BYT RTOSBLAK,30,0,2,8
^1 .DA #PRLOC,216,#0
^2 BYT ' ',CR
BRK
LDX #8
LDY IEDYOFF
JSR FSOLID
CLC
^9 LDY #00
RTS
;
GTMPOSIT BYT 'LCR'
;---
GTMCTRLI CLC
JSR SHOWEI
JMP GTMDATE2
;---
GTMCTRLS LDA EDITBUFF,X
EOR #1
STA EDITBUFF,X
;---
;
; Redraw from Y down
;
LDA ILINE
PHA
SEC
^0 STY ILINE
PHP
JSR GTMBLAK
PLP
BCS >1
JSR GTMDRAW
^1 LDY IEDYOFF
STY >2+2
STY >3+2
JSR PRINT
^2 BYT RTOSBLAK,8,0,2,16
^3 BYT RTOSBLAK,30,0,2,16
BRK
LDY ILINE
JSR GTMSTUFF
;
LDY ILINE
INY
JSR EDITYOFF
BCC <0
PLA
STA ILINE
JMP GTMDGET
;-----------
;
; Routine to erase current line
;
GTMBLAK LDY ILINE
JSR GTMYCALC
STA >0+2
PHA
LDA TMP1
STA >0+4
JSR PRINT
^0 BYT RTOSBLAK,11,0,18,0
BRK
PLA
RTS
;-----------
;
; Calculate Yoffset and X index
;
GTMYCALC JSR EDITYOFF
BCS >0
LDA TMP0
CLC
ADC #MCYOFF+DTCYMARG
STA IEDYOFF
^0 RTS
;-----------
GTMDRAW LDY ILINE
JMP EDITDRAW
;-----------
;
; Show top of events and reminders
; screen input.
;
GTTOP JSR CLS1
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#26
BYT 'NOW TYPE IN YOUR',CR
BYT 'EVENTS AND REMINDERS:',CR
BRK
RTS
;-----------
;
;
;
ICL "S:ICAL5"

View File

@ -0,0 +1,191 @@
;
; S:ICAL5
;
; GTWTEXT
;
; Get text for weekly calendar
;
WCXOFF = 21
WCYOFF = 76
WCWIDTH = 238
;
WBOXX = 2
WBOXY = WCYOFF-5
WBOXH = 9+4*8
;
; Initialize everything!
;
; Compute string offset
;
GTWTEXT TXA
ASL
ASL
STA GTWSBOFF
;
; Compute day of week
;
CLC
TXA
ADC MNFDAY
CMP #7
BLT >0
SBC #7
^0 TAY
;
; Compute date
;
TXA
CLC
ADC MNDATE
CMP MNLAST
BLT >1
BEQ >1
SBC MNLAST
NOP
NOP
^1 STA DATE
JSR MAKEWTXT
JSR MAKEDTXT
;
JSR TEINIT
ADR GTWBLAK
ADR RTS
ADR GTWDRAW
BYT WCWIDTH,100,1,1
;
; Draw the initial screen
;
JSR GTTOP
;
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#WCYOFF-18
.DA #PRSTR,WEEKTEXT,' '
.DA #PRSTR,DATETEXT,#CR
BRK
LDX #WBOXX
LDY #WBOXY
LDA #WBOXH
JSR DRAWBOX
;
JSR ERASMES2
;
; Draw all four strings
;
LDY #3
^0 STY ILINE
JSR GTWGET
JSR GTWBLAK
JSR GTWDRAW
LDY ILINE
DEY
BNE <0
;
; Now edit one of the strings
;
GTWDNEXT STY ILINE
JSR GTWGET
^0 JSR TEDIT
JSR PARSE
.DA #1,GTWCR
.DA #2,GTWESC
BRK
JMP <0
;---
GTWCR CLC
HEX 24
;---
GTWESC SEC
PHP
JSR GTWPUT
PLP
LDY ILINE
BCC >0
DEY
BPL GTWDNEXT
RTS
;
^0 INY
CPY #4
BLT GTWDNEXT
CLC
RTS
;---
;
; Get text from buffer
;
GTWGET CLC
HEX 24
;
; Put text into buffer
;
GTWPUT SEC
PHP
LDA #00
GTWSBOFF = *-1
CLC
ADC ILINE
TAY
PLP
BCS >0
JMP GETTEXT
^0 JMP PUTTEXT
;---
;
; Routine to erase current line
;
GTWBLAK JSR GTWYCALC
GTWBLAK2 STA >0+2
JSR PRINT
^0 BYT RTOSBLAK,3,0,34,7
BYT PRKERN,1
BYT PRCSPACE,1
BRK
;
SETTMP2 LDY #TEXTBUFF
LDA /TEXTBUFF
STY TMP2
STA TMP3
RTS
;-----------
;
; Calculate Y position
;
GTWYCALC LDA ILINE
ASL
ASL
ASL
ADC #WCYOFF
RTS
;-----------
;
; Draw current string
;
GTWDRAW JSR GTWYCALC
LDX #WCXOFF
LDY #0
;---
;
; Common draw routine
; X:X-coordinate
; Y:XOPTION
; A:Y-coordinate
; TMP2.3:string address
;
COMMDRAW STX SPARM+2
LDX #0
STX SPARM+3
INX
STX SPARM+7
STY SPARM+1
STA SPARM+4
LDY TMP2
LDA TMP3
STY SPARM+9
STA SPARM+10
JMP STROUT
;-----------
;
;
;
ICL "S:ICAL6"

View File

@ -0,0 +1,229 @@
;
; S:ICAL6
;
; TOPTEXT:edit text for the top of the
; calendar.
;
; CREDIT:edit text for credit line.
;
TTY1 = 60
TTY2 = 107
;
;-----------
;
; Edit text for top of screen
;
TOPTEXT LDA FONTSEL
EOR #NOFONT
BEQ >1
;---
;
; Initialze toptext input
;
JSR TEINIT
ADR TPBLAK
ADR TPCROP
ADR TPDRAW
BYT 238,62,1,1
;
JSR SHOWTOP
^0 LDY #31
JSR TOPEDIT
BCS >1
LDY #32
JSR TOPEDIT
BCS <0
^1 RTS
;---
;
; Show top of screen
;
SHOWTOP JSR CLS1
LDY #TTY1-4
LDA #31
JSR SHOWTOP1
LDY #TTY2-4
LDA #32
JSR SHOWTOP1
;
JSR PRINT
BYT PRCNTR,PRBIG
.DA #PRLOC,140,#TTY1-23
BYT 'LINE 1',CR
BYT PRSMAL
BYT PRVTAB,TTY2-16
BYT 'LINE 2',CR
BRK
JMP SHOWEIAM
;---
;
; Y for box
; A is string number
;
SHOWTOP1 STA ILINE
LDX #2
LDA #15
JSR DRAWBOX
LDY ILINE
JSR GETTEXT
JSR TPFORM
JSR TPBLAK
; JSR TPCROP <<<<<<
JMP TPDRAW
;-----------
;
; Now edit one of the strings
;
TOPEDIT STY ILINE
LDY ILINE
JSR GETTEXT
TOPEDIT2 JSR TEDIT
PHA
LDY ILINE
JSR PUTTEXT
PLA
JSR PARSE
.DA #1,TPCR
.DA #2,TPESC
.DA #3,TPCTRLI
.DA #6,TPCTRLF
BRK
JMP TOPEDIT2
;---
TPCTRLI LDA ILINE
PHA
SEC
JSR SHOWEI
JSR SHOWTOP
PLA
TAY
JMP TOPEDIT
;---
TPCR CLC
RTS
;
TPESC SEC
RTS
;---
;
; Change form
;
TPCTRLF LDX TEXTBUFF
INX
CPX #$83
BNE >0
LDX #$80
^0 STX TEXTBUFF
JSR TPFORM
JMP TOPEDIT2
;---
;
; Show current form
;
TPFORM JSR TPCALC
SEC
SBC #14
TAY
LDX #2
LDA TEXTBUFF
CMP #$81
BEQ >1
CMP #$82
BEQ >2
;
JMP FSOLID
^1 JMP FOUTLINE
^2 JMP F3D
;---
;
; Returns X,Y:maximum width
; A:Y position
;
TPCALC LDY ILINE
LDA TPYCALC7-31,Y
PHA
LDA TPYCALC8-31,Y
TAX
LDA TPYCALC9-31,Y
TAY
PLA
RTS
;
TPYCALC7 BYT TTY1,TTY2
TPYCALC8 BYT 470,940
TPYCALC9 HBY 470,940
;---
;
; Routine to erase current line
;
TPBLAK JSR TPCALC
JSR GTWBLAK2
INC TMP2
RTS
;---
;
; Crop off extra characters based
; on selected font.
;
TPCROP LDA #3
STA SPARM+7
LDY TMP2
LDA TMP3
STY SPARM+9
STA SPARM+10
JSR TPCALC
LDA /CLFONT
JSR STRCROP
LDA /UFONT
JMP FINSTALL
;---
;
; Draw current string
;
TPDRAW JSR TPCALC
LDX #140
LDY #2
JMP COMMDRAW
;-----------
;-----------
;
; Edit credit line
;
CREDIT JSR TEINIT
ADR CRBLAK
ADR RTS
ADR CRDRAW
BYT 0,128,2,0
;
JSR ERASMES2
LDY #33
JSR GETTEXT
;
LDY #0
STY CRLINE
;
; TEDIT time
;
^0 JSR TEDIT
JSR PARSE
.DA #1,CRYCR
.DA #2,CRYESC
BRK
JMP <0
;---
CRYCR CLC
HEX 24
;---
CRYESC SEC
PHP
LDY #33
JSR PUTTEXT
PLP
RTS
;-----------
;
;
;
USR "ICAL",ORG
;
ICL "S:COMMON"

View File

@ -0,0 +1,3 @@
NLS
; S:PCAL
ICL "S:PCAL1"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,586 @@
;
; S:PCAL2
;
; Low-level print buffer routines
; -------------------------------
;
; Install calendar buffer hooks:
;
; INSCFONT : install calendar font
; INSUFONT : install user font
; -------------------------------
; CLRPBUFF : clear print buffer
; PRINBUFF : print buffer to printer
; -------------------------------
;
ROWBUF = $8E00-32
;
STRZ EPZ $50
;
PIXAD EPZ STRZ
XCUR EPZ STRZ+2
WCOUNT EPZ STRZ+4
PBUFLO EPZ STRZ+5
PBUFHI EPZ STRZ+6
XBYTE EPZ STRZ+7
COLORTMP EPZ STRZ+8
; thru 12 available!
YCUR EPZ STRZ+16
;
;PIXAD :pointer into font data
;XCUR :16 bit x-coordinate
;WCOUNT :starts as bit width of line
; but is converted to bytes.
;PBUF :pointer into planes
;XBYTE :byte offset into plane
;COLORTMP:color to use for current line
; (each line different for rainbow)
;
;-----------
;
; Install calendar line draw routine
;
; Calendar font
;
INSCFONT JSR STINSTAL
ADR CLOPTION
ADR CLLINDRW
HBY CLFONT
RTS
;
; User font
;
INSUFONT JSR STINSTAL
ADR CLOPTION
ADR CLLINDRW
HBY UFONT
RTS
;-----------
;
; Clear calendar buffer
;
CLRPBUFF JSR MTHINK
LDY #0
LDA /CLBUFFER
LDX #$40
STA >0+2
TYA
^0 STA CLBUFFER,Y
INY
BNE <0
INC <0+2
DEX
BNE <0
STA LORESH
RTS
;-----------
;
; SMC for OPTION
;
; If normal, Y=00
; erase , Y=FF
; So if erase is desired, then
; set mask to #$00
;
CLOPTION TYA
EOR #$FF
STA CLINVR
;
; Only useful when we exit from
; the linedraw routine.
;
INCPIXAD LDA WCOUNT
CLC
ADC PIXAD
STA PIXAD
BCC >0
INC PIXAD+1
^0 RTS
;-----------
;
; Calendar LINEDRAW routine
;
; Compute byte width of font data
; INT((bits-1)/8)+1
;
CLLINDRW LDX WCOUNT
DEX
TXA
LSR
LSR
LSR
TAX
INX
STX WCOUNT
;
; Now, should we bother with the
; line draw routine?
;
TYA
CLC
ADC CSIZE
SEC
SBC YCLIP
CMP YMAX
BEQ >0
BGE INCPIXAD
;
; Update lores screen?
;
^0 LDA LORESL
ADC WCOUNT
STA LORESL
BCC >0
INC LORESH
LDA LORESH
EOR #4
BNE >0
STA LORESH
JSR CHECKESC
JSR UPLRK
;---
;
; Move data into ROWBUF
;
^0 LDY WCOUNT
DEY
^1 LDA (PIXAD),Y
STA ROWBUF,Y
DEY
BPL <1
;
JSR INCPIXAD
;---
;
; Double size of buffer?
;
LDA CSIZE
BEQ >3
;
; NOTE:XBYTE is used as TEMP var
;
LDX WCOUNT
^2 TXA
ASL
STA XBYTE
;
LDA ROWBUF-1,X
AND #$0F
TAY
LDA DBLTBL,Y
LDY XBYTE
STA ROWBUF-1,Y
;
LDA ROWBUF-1,X
LSR
LSR
LSR
LSR
TAY
LDA DBLTBL,Y
LDY XBYTE
STA ROWBUF-2,Y
DEX
BNE <2
ASL WCOUNT
;---
;
; Rotate buffer to the right if
; necessary.
;
^3 LDA XCUR
AND #7
TAY
BEQ >6
;
; Rotate (XCUR & 7) times
;
LDX WCOUNT
LDA #0
STA ROWBUF,X
INC WCOUNT
^4 LDX #0
CLC
^5 ROR ROWBUF,X
INX
TXA
EOR WCOUNT
BNE <5
DEY
BNE <4
;
; Starting X-byte offset = XCUR/8
;
^6 LDA XCUR+1
STA XBYTE
LDA XCUR
LSR XBYTE
ROR
LSR XBYTE
ROR
LSR
STA XBYTE
;
; Now draw ROWBUF into buffer
;
LDY YCUR
JSR PUTROW
LDA CSIZE
BEQ PUTROWX
LDY YCUR
INY
;---
;
; Draw ROWBUF into buffers
;
; $2000.2FFF yellow (black in B/W)
; 3000.3FFF red
; 4000.4FFF blue
; 5000.5FFF black
;
; Set PBUF pointer to yellow plane
;
PUTROW TYA
STA RAINY
SEC
SBC YCLIP
CMP YMAX
BGE PUTROWX
;
LSR
TAY
LDA #0
ROR
ORA XBYTE
STA PBUFLO
TYA
ADC /CLBUFFER
STA PBUFHI
;
; Set color plane
; NOTE:if erasing, then CLINVR will
; be set to #$00, causing all 4
; planes to be erased.
;
LDY COLOR
^0 LDA COLORTBL,Y
AND #$FF ; smc
CLINVR = *-1
STA COLORTMP
BPL >1
;
; If rainbow, go back and get new color!
;
LDA #00
RAINY = *-1
AND #$0F
TAX
LDY RBTBL,X
BPL <0
;---
;
; Now determine whether or not to
; turn bits on or off!
;
^1 LDA #$19 ; ORA ABS,Y
LSR COLORTMP
BCS *+4
LDA #$59 ; EOR ABS,Y
STA >3+0
LDY WCOUNT
DEY
^2 LDA (PBUFLO),Y
ORA ROWBUF,Y
^3 ORA ROWBUF,Y ; (EOR ROWBUF,Y)
STA (PBUFLO),Y
DEY
BPL <2
;
; Point to next color plane
;
LDA PBUFHI
CLC
ADC #$10
STA PBUFHI
CMP /CLBUFFER+$4000
BGE PUTROWX
;
; If color, go back and do it!
;
LDA COLORPR
BNE <1
;
PUTROWX RTS
;-----------
;
; ----- RIBBON COLOR -----
;
; bit 0 yellow
; bit 1 red
; bit 2 blue
; bit 3 black
;
; BLACK,RED,ORANGE,YELLOW,GREEN
; BLUE,PURPLE,RAINBOW,CLEAR
;
COLORTBL BYT 8,2,3,1,5,4,6
RAINBOW BYT $80,0
;
; Black ribbon mod
;
; 1 color,4 color,3 color
; 1 only draws to yellow plane!!!
;
BLACKTBL BYT 1,8,7
;
; Rainbow colors
;
RBTBL BYT 1,1,1,2,2,3,3,3
BYT 4,4,4,5,5,5,6,6
;
; Double 4 bits to 8 bits
;
DBLTBL HEX 00030C0F
HEX 30333C3F
HEX C0C3CCCF
HEX F0F3FCFF
;-----------
******** *************************
;-----------
;
PRZ EPZ $80
;
PYEND EPZ PRZ
PXCOOR EPZ PRZ+1
PYCOOR EPZ PRZ+2
PYCOORSV EPZ PRZ+3
;
PXCOUNT EPZ PRZ+4
PYCOUNT EPZ PRZ+5
;
PBUILD EPZ PRZ+6
PYSPACE EPZ PRZ+7
;
PBUFSAVL EPZ PRZ+8
PBUFSAVH EPZ PRZ+9
PBUFL EPZ PRZ+10
PBUFH EPZ PRZ+11
PBUFOFF EPZ PRZ+12
PRRIBBON EPZ PRZ+13
;
; Print buffer A=# of scan lines
; to print.
;
; Returns: SEC=ESC pressed
; CLC=entire buffer printed
;
PRINBUFF STA PYEND
;
JSR MPRINT
;
LDA #0
;
; Print single line of buffer
;
CLPRLOP1 STA PYCOORSV
;
; Calculate buffer address
;
LSR
TAY
LDA #0
ROR
STA PBUFSAVL
TYA
ADC /CLBUFFER
STA PBUFSAVH
;
; COLOR?
;
LDA COLORPR
BEQ >0
LDA #3
^0 STA PRRIBBON
BEQ >1
;---
;
; Loop here for color
;
CLPRCOL1 LDX PRRIBBON
JSR COLORCHG
;
; Check to see if all zeros
;
^1 JSR CLBUFZER
BEQ CLPRSKP1
;
; Tell printer how many bytes
;
LDX #BUFWIDTH
LDY /BUFWIDTH
JSR SENDGC
;
LDX #0
;
; Output line of data
;
CLPRLOP2 STX PXCOOR
LDX #0
;
; Output 8 bytes
;
CLPRLOP3 STX PXCOUNT
LDX PBUFSAVL
LDA PBUFSAVH
STX PBUFL
STA PBUFH
LDX #0
STX PBUILD
LDY PYCOORSV
;
; Output 1 byte
;
; X=counter, 0-6
; Y=Y-coordinate
;
CLPRLOP4 STX PYCOUNT
STY PYCOOR
;
LDY PXCOOR
LDA (PBUFL),Y
LDX PXCOUNT
AND PBITS8,X
BEQ >1
;
LDY PYCOUNT
LDA PBITS7,Y
ORA PBUILD
STA PBUILD
;
^1 LDA PBUFL
EOR #$80
STA PBUFL
BNE *+4
INC PBUFH
;
LDY PYCOOR
INY
LDX PYCOUNT
INX
CPY PYEND
BEQ >2
CPX #7
BLT CLPRLOP4
;
^2 STX PYSPACE
LDA PBUILD
JSR GCOUT
;
LDX PXCOUNT
INX
CPX #8
BLT CLPRLOP3
;
LDX PXCOOR
INX
CPX #BUFWIDTH/8
BLT CLPRLOP2
;
; CR without LF
;
CLPRSKP1 LDA #CR
JSR COUT1
;
; If color then go to next plane
;
LDA COLORPR
BEQ >0
LDA PBUFSAVH
CLC
ADC #$10
STA PBUFSAVH
DEC PRRIBBON
BMI >0
JMP CLPRCOL1
;
; Now do LF
;
^0 LDX PYSPACE
LDY #1
JSR CRLF
;
JSR CHECKESC
;
LDA PYCOORSV
CLC
ADC PYSPACE
CMP PYEND
CLC
BEQ >9
JMP CLPRLOP1
^9 RTS
;
; Bit lookup tables
;
PBITS8 HEX 80
PBITS7 HEX 40201008040201
;-----------
;
; Check current buffer for zeros
;
; BEQ=this line is all zeros
; BNE=this line contains data
;
CLBUFZER LDY PBUFSAVL
LDA PBUFSAVH
STY PBUFL
STA PBUFH
;
; Calculate how many lines to check
;
LDA PYEND
SEC
SBC PYCOORSV
CMP #7
BLT *+4
LDA #7
STA PYSPACE
TAX
;
^0 LDY #0
^1 LDA (PBUFL),Y
BNE >2
INY
BPL <1
LDA PBUFL
EOR #$80
STA PBUFL
BNE *+4
INC PBUFH
DEX
BNE <0
^2 RTS
;-----------
;
; Check for <ESC>, if yes then
; show pausing message and allow
; another <ESC> to abort.
;
CHECKESC JSR POLEKEY
CMP #ESC
BNE <2
JSR DEVICEON
JSR MPAUSE
SEI
PHP
JSR DEVICEOF
PLP
BCC <2
JMP ABORT
;-----------
;
;
;
USR "PCAL",ORG
;
ICL "S:COMMON"

View File

@ -0,0 +1,3 @@
NLS
; S:UCAL
ICL "S:UCAL1"

View File

@ -0,0 +1,252 @@
TTL "S:UCAL"
; S:UCAL1
NOG
ORG = $4000
;
; 09/13/85
; 12/05/85
;
; Print Shop Companion Calendar
; by Roland Gustafsson
; Copyright 1985
;
; User interface module, menus,
; screens, etc...
;
;-----------
ORG ORG
OBJ $800
;-----------
JMP START
JMP START
;
JMP CRBLAK
JMP CRDRAW
;-----------
;
ASC "COPYRIGHT 1985 "
BYT "ROLAND GUSTAFSSON"
;
; Initialize external routines
;
START BIT $C083
BIT $C083
JSR INITCAL
;-----------
;-----------
;
; Clear variables START FRESH
;
START1 JSR CLRCOBUF
;-----------
;
; Enter here to leave data intact
;
START2 JSR TPTITLE2
;
; If no printer setup, then quit.
;
JSR PRINT
.DA #PRLOC,140,#70
BRK
LDA #CR
JSR CHKPRINT
BCC MENUSCT0
JMP MAINMENU
;-----------
;
; Select calendar type
;
MENUSCT0 JSR SELTYPE
BCC MENUSGR0
JSR ESCMAIN
BCS MENUSCT0
;-----------
;
; Select graphic
;
MENUSGR0 JSR SELGR
BCS MENUSCT0
;
; Graphic position
;
MENUSGR1 JSR SELGRPOS
BCS MENUSGR0
;-----------
;
; Select YEAR
;
MENUSYR0 JSR SELYEAR
BCS MENUSGR1
;-----------
;
; Select MONTH
;
MENUSMN0 JSR SELMONTH
BCS MENUSYR0
;-----------
;
; Select FONT
;
MENUSFN0 JSR SELFONT
BCS MENUSMN0
;
; Enter text for top of page
;
MENUSFN1 JSR TPTITLE
JSR TOPTEXT
BCS MENUSFN0
;-----------
;
; Enter data for CENTER of calendar
;
MENUCTR0 JSR CRTITLE
JSR CENTER
BCS MENUSFN1
;-----------
;
; Credit line for bottom of page
;
MENUCRL0 JSR BMTITLE
JSR CREDIT2
BCS MENUCTR0
;-----------
;
; Select colors
;
MENUCOLR JSR SELCOLOR
BCS MENUCRL0
;-----------
;
; PRINT MENU
;
; SEC=<esc> pressed
; CLC=start fresh
;
JSR PRINMENU
BCS MENUCOLR
BCC START1
;-----------
;
; TOP
;
TPTITLE BCC >0
TPTITLE2 PHP
JSR TITLE
JSR PRINT
BYT PRBIG,PRINVR
BYT 'TOP',CR,0
PLP
^0 RTS
;
; CENTER
;
CRTITLE PHP
JSR TITLE
JSR PRINT
BYT PRBIG,PRINVR
BYT 'CENTER',CR,0
PLP
RTS
;
; BOTTOM
;
BMTITLE JSR TITLE
JSR PRINT
BYT PRBIG,PRINVR
BYT 'BOTTOM',CR,0
RTS
;---
;
; Print menu
;
PRTITLE BCS >0
PRTITLE2 PHP
JSR TITLE
JSR PRINT
BYT PRBIG,PRINVR
BYT 'PRINT',CR
BRK
PLP
^0 RTS
;---
;
; TITLE
;
TITLE JSR WITEBORD
JSR ESCBACK
JSR PRINT
.DA #PRLOC,136,#4
BYT PRRITE,PRINVR
.DA #PRSTR,TXTCAL
BYT ':',CR
.DA #PRLOC,146,#1,#0
RTS
;-----------
;
; Center of calendar handler
;
CENTER LDA CLTYPE
BNE GTWEEKLY
;-----------
;
; Menus for monthly calendar.
;
GTMONTH JSR SELDATE
BCS >9
; DONE?
CPX MNLAST
BEQ >0
BGE >8
;
; Type in text for date
;
^0 JSR GTMTEXT
BCC GTMONTH
;
; Out of memory!
;
JSR CLS1
JSR MUSIC
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#66
BYT 'SORRY, OUT OF MEMORY',CR
BYT CR
BYT 'UNABLE TO STORE...',CR
BRK
JSR ANYKEY
JMP GTMONTH
;
^8 CLC
^9 RTS
;-----------
;
; Menus for weekly calendar.
;
; First, select starting date
;
GTWEEKLY BCS >1
^0 JSR SELDATE
BCS <9
;
; Calculate day of week!
;
LDY MNDATE
JSR CALCDAY
;
; Now select which day to edit
;
^1 JSR SELWDATE
BCS <0
; DONE?
CPX #7
BEQ <8
;
JSR GTWTEXT
JMP <1
;-----------
;
;
;
ICL "S:UCAL2"

View File

@ -0,0 +1,523 @@
;
; S:UCAL2
;
; Calendar user interface menus
;
; SELGRPOS:select graphic position
; SELYEAR :type in year for calendar
; SELMONTH:select month
; CALCDAY :calculate day of week
; given Y=date 1-31,
; MONTH=0-11 and YEARTEXT
;
;-----------
;
; Select graphic position option
;
LCTXT BYT 'LEFT CORNER',0
RCTXT BYT 'RIGHT CORNER',0
BCTXT BYT 'BOTH CORNERS',0
ROTXT BYT 'ROW OF ',0
;
SGPY = 28
SGBXY = 136
;
SELGRPOS LDA GRSEL
EOR #NOGR
BEQ >0
;
JSR CLS1
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#SGPY
BYT 'SELECT '
.DA #PRSTR,TXTGR
BYT ' POSITION:',CR
BYT CR
.DA #PRSTR,LCTXT,#CR
.DA #PRSTR,RCTXT,#CR
.DA #PRSTR,BCTXT,#CR
.DA #PRSTR,ROTXT
BYT 'SIX',CR
BYT 'TILED',CR
;
.DA #PRSTR,LCTXT,#CR
.DA #PRSTR,RCTXT,#CR
.DA #PRSTR,BCTXT,#CR
.DA #PRSTR,ROTXT
BYT 'THREE',CR
BYT 'TILED',CR
;
; Draw box for position information:
;
BYT RTOSANY,$60,8,SGBXY,1,30
BYT RTOSANY,$03,31,SGBXY,1,30
BYT RTOSWITE,9,SGBXY,22,1
BYT RTOSWITE,9,SGBXY+29,22,1
BRK
;
LDY GROPTION
JSR SELECT
BYT 10,20,SGPY+15,10
ADR SGBOX
STY GROPTION
^0 RTS
;---
;
; Show position on screen
;
SGBOX PHA
JSR PRINT
BYT RTOSBLAK,9,SGBXY+1,22,21,0
PLA
;
LSR
TAX
;
LDY #SGBXSMAL
LDA /SGBXSMAL
CPX #5
BLT >0
LDY #SGBXBIG
LDA /SGBXBIG
^0 STY SGBOX1+1
STA SGBOX1+2
;
LDA SGBXSTRT,X
STA TMP0
LDA SGBXNUMB,X
STA TMP1
LDA SGBXINC,X
STA TMP2
;
^1 LDX TMP0
SGBOX1 JSR $FFFF
LDA TMP0
CLC
ADC TMP2
STA TMP0
DEC TMP1
BNE <1
RTS
;
; Xstart,Xcount,Xinc
;
SGBXSTRT BYT 9,29,9,9,10
BYT 9,27,9,10,10
SGBXNUMB BYT 1,1,2,6,10
BYT 1,1,2,3,5
SGBXINC BYT 0,0,20,4,2
BYT 0,0,18,8,4
;
; Small
;
SGBXSMAL STX >0+2
INX
STX >1+2
JSR PRINT
^0 BYT RTOSANY,$7E,00,SGBXY+7,1,10
^1 BYT RTOSANY,$3F,01,SGBXY+7,1,10
BRK
RTS
;
; Big
;
SGBXBIG STX >0+2
INX
STX >1+1
INX
INX
STX >2+2
JSR PRINT
^0 BYT RTOSANY,$7E,00,SGBXY+2,1,20
^1 BYT RTOSWITE,01,SGBXY+2,2,20
^2 BYT RTOSANY,$3F,03,SGBXY+2,1,20
BRK
RTS
;-----------
;
; Select year for calendar
;
SYX = 61
SYY = 69
;
SELYEAR JSR CLS1
JSR PRINT
.DA #PRLOC,SYX,#SYY
BYT 'WHAT YEAR IS THIS',CR
.DA #PRSTR,TXTCAL,' FOR ?',#CR
BYT CR,'>',CR,CR
BYT '(1753-9999)',CR,0
;
^0 JSR INPUT
ADR YEARTEXT
BYT 4
.DA SYX+9
BYT SYY+24
BCS >9
;
JSR CALCYEAR
LDY #32
LDX #YEARTEXT
LDA /YEARTEXT
STX TMP4
STA TMP5
BCC STORE?
;
JSR BOOP
JMP <0
;-----------
;
; Given TMP4.5: source buffer
; Y : dest string #
; (X,A): dest buffer
;
; If there is no data for the string,
; store the text pointed to by X,A.
;
STORE? STX STOREADR+1
STA STOREADR+2
STY >1+1
JSR GETTEXT
;
; Move the text to buffers
;
LDA #$80
STA TEXTBUFF
LDY #$FF
^0 INY
LDA (TMP4),Y
STOREADR STA $FFFF,Y
STA TEXTBUFF+1,Y
BNE <0
BCS >2
;
^1 LDY #00
JSR PUTTEXT
;
^2 CLC
^9 RTS
;-----------
;
; Get month for calendar
;
SMY = 34
;
SELMONTH JSR CLS1
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#SMY
.DA #PRSTR,TXTCHOO
BYT 'A MONTH:',CR,CR,0
;
JSR PRINTGRP
BYT PRCNTR
BYT 12
ADR TXTJAN
;
LDY MONTH
JSR SELECT
BYT 13,14,SMY+15,12
ADR RTS
STY MONTH
BCS <9
;
LDX MONTHADL,Y
LDA MONTHADH,Y
STX TMP4
STA TMP5
;
LDX #MONTHTXT
LDA /MONTHTXT
LDY #31
BCC STORE?
;-----------
MONTHADL BYT TXTJAN,TXTFEB,TXTMAR
BYT TXTAPR,TXTMAY,TXTJUN
BYT TXTJUL,TXTAUG,TXTSEP
BYT TXTOCT,TXTNOV,TXTDEC
;
MONTHADH HBY TXTJAN,TXTFEB,TXTMAR
HBY TXTAPR,TXTMAY,TXTJUN
HBY TXTJUL,TXTAUG,TXTSEP
HBY TXTOCT,TXTNOV,TXTDEC
;
; Text for all the months
;
TXTJAN BYT 'JANUARY',0
TXTFEB BYT 'FEBRUARY',0
TXTMAR BYT 'MARCH',0
TXTAPR BYT 'APRIL',0
TXTMAY BYT 'MAY',0
TXTJUN BYT 'JUNE',0
TXTJUL BYT 'JULY',0
TXTAUG BYT 'AUGUST',0
TXTSEP BYT 'SEPTEMBER',0
TXTOCT BYT 'OCTOBER',0
TXTNOV BYT 'NOVEMBER',0
TXTDEC BYT 'DECEMBER',0
;-----------
;
; Given YEARTEXT, compute CDYRLO.HI
; If SEC, then not a valid year.
;
MINYEAR = 1753
;
CALCYEAR LDY #0
STY CDYRLO
STY CDYRHI
^0 LDA YEARTEXT,Y
CMP #'0'
BCC >2
CMP #'9'+1
BCS >2
AND #$0F
PHA
;
; Multiply by 10
;
LDX CDYRHI
LDA CDYRLO
ASL
ROL CDYRHI
ASL
ROL CDYRHI
ADC CDYRLO
STA CDYRLO
TXA
ADC CDYRHI
STA CDYRHI
ASL CDYRLO
ROL CDYRHI
;
; Add in new digit
;
PLA
ADC CDYRLO
STA CDYRLO
BCC *+4
INC CDYRHI
INY
CPY #4
BLT <0
;
LDY CDYRLO
LDA CDYRHI
CMP /MINYEAR
BNE >1
CPY #MINYEAR
^1 BLT >2
CLC
RTS
;
^2 SEC
RTS
;-----------
;
; Given YEARTEXT:1753-9999
; MONTH:0-11
; Y:date 1-31
;
; Calculate which day of the week this
; month starts on and # days in month.
;
; 0:Sunday 1:Monday 2:Tuesday
; 3:Wednesday 4:Thursday 5:Friday
; 6:Saturday
;
; Uses the following weird formula
; invented by Roland
;
; DAY= (YEAR
; +INT((YEAR-1)/4)
; -INT((YEAR-1)/100)
; +INT((YEAR-1)/400)
; +(#days in previous months) (0 for JAN, 31 for FEB)
; +(DATE-1)
; ) MOD 7
;---
CDZ EPZ $70
;
CDDAYLO EPZ CDZ
CDDAYHI EPZ CDZ+1
CDYRLO EPZ CDZ+2
CDYRHI EPZ CDZ+3
CDLPFLG EPZ CDZ+4
;
ACCUMLO EPZ CDZ+5
ACCUMHI EPZ CDZ+6
ACCUM2LO EPZ CDZ+7
ACCUM2HI EPZ CDZ+8
REMAINLO EPZ CDZ+9
REMAINHI EPZ CDZ+10
;---
CALCDAY DEY
STY DATE
JSR CALCYEAR
LDY CDYRLO
LDA CDYRHI
STY CDDAYLO
STA CDDAYHI
;
; Modify February if leap year
;
JSR CDLEAP?
LDA #28
ADC #0
STA DYSINMON+1
;
; Set YR=(YEAR-1)
;
LDX CDYRLO
BNE >0
DEC CDYRHI
^0 DEC CDYRLO
;
; Now do mathematics
;
JSR DIVYR4
JSR CDDAYADD
;
JSR DIVYR100
JSR CDDAYSUB
;
JSR DIVYR400
JSR CDDAYADD
;
; Add in days for previous months
;
LDY #0
LDX MONTH
LDA DYSINMON,X
STA MNLAST
^0 DEX
BMI >1
LDA DYSINMON,X
JSR CDDAYADD
BCC <0
;
; Add in current date
;
^1 LDA DATE
JSR CDDAYADD
;
LDY CDDAYLO
LDA CDDAYHI
STY ACCUMLO
STA ACCUMHI
;
; Get DAY modulus 7
;
LDA #7
LDY #0
JSR DIV16
LDA REMAINLO
STA MNFDAY
RTS
;---
;
; Days in month
;
DYSINMON BYT 31,28,31,30,31,30
BYT 31,31,30,31,30,31
;---
;
; Subtract Y,A from DAY
;
CDDAYSUB EOR #$FF
PHA
TYA
EOR #$FF
TAY
PLA
SEC
HEX 24
;
; Add Y,A to DAY
;
CDDAYADD CLC
ADC CDDAYLO
STA CDDAYLO
TYA
ADC CDDAYHI
STA CDDAYHI
RTS
;---
;
; Return SEC if leap year
;
CDLEAP? ASL CDLPFLG
JSR DIVYR4
BCS >0
INC CDLPFLG
^0 JSR DIVYR100
BCS >1
DEC CDLPFLG
^1 JSR DIVYR400
BCS >2
INC CDLPFLG
^2 ROR CDLPFLG
RTS
;---
;
; Divide year routines:
; for 4,100 and 400
;
DIVYR4 LDA #4
HEX 2C
;
DIVYR100 LDA #100
LDY #0
BEQ >0
;
DIVYR400 LDA #400
LDY /400
;
; Divide YR by Y,A
;
^0 LDX CDYRLO
STX ACCUMLO
LDX CDYRHI
STX ACCUMHI
;
; Divide ACCUM by Y,A
;
; Return result in Y,A
; SEC means there was a remainder
;
DIV16 STA ACCUM2LO
STY ACCUM2HI
LDA #0
STA REMAINLO
STA REMAINHI
;
LDY #16
^0 ASL ACCUMLO
ROL ACCUMHI
ROL REMAINLO
ROL REMAINHI
SEC
LDA REMAINLO
SBC ACCUM2LO
TAX
LDA REMAINHI
SBC ACCUM2HI
BCC >1
STX REMAINLO
STA REMAINHI
INC ACCUMLO
^1 DEY
BNE <0
SEC
LDA REMAINLO
ORA REMAINHI
BNE >2
CLC
^2 LDA ACCUMLO
LDY ACCUMHI
RTS
;-----------
;
;
;
ICL "S:UCAL3"

View File

@ -0,0 +1,578 @@
;
; S:UCAL3
;
; More menus
;
; SELTYPE :select calendar type
; SELGR :select graphic
; SELFONT :select font
; CREDIT2 :type in credit line
; PRINMENU:print menu
; SELCOLOR:select colors
;
;-----------
;
TXTCHOO BYT 'CHOOSE ',0
TXTFROM BYT 'FROM ',0
TXTPS BYT 'PRINT SHOP',0
TXTC BYT 'COMPANION',0
;
TXTFOD BYT 'FROM OTHER'
TXTSD BYT ' '
TXTD BYT 'DISK',0
;
TXTGTMM BYT 'GO TO MAIN MENU',0
TXTRET BYT '<RETURN>',0
;-----------
STY = 64
;
; Select type of calendar
;
SELTYPE JSR CLS1
JSR PRINT
.DA #PRLOC,140,#STY
BYT PRCNTR
.DA #PRSTR,TXTCHOO
.DA #PRSTR,TXTCAL,':',#CR
BYT CR,CR
BYT 'MONTHLY',CR
BYT 'WEEKLY',CR
.DA #PRSTR,TXTFOD,#CR
BRK
^0 LDY CLTYPE
;
JSR SELECT
BYT 10,20,STY+23,3
ADR RTS
;
BCS >2
;
; If we are switching type
; of calendar, then you better
; erase the COBUFFER
;
TYA
PHA
CMP CLTYPE
BEQ >1
JSR CLRCOBUF
^1 CLC
PLA
STA CLTYPE
TAY
;
JSR JMPVECTS
ADR RTS
ADR RTS
ADR LOADCAL
^2 RTS
;---
;
; Load calendar from disk
;
LOADCAL JSR SETCAL
SEC
JSR GETFILE
JSR TPTITLE2
BCC <2
JMP SELTYPE
;-----------
SLMY = 50
;
; Select graphic
;
SELGR JSR CLS1
JSR PRINT
.DA #PRLOC,140,#SLMY
BYT PRCNTR
.DA #PRSTR,TXTCHOO,'A '
.DA #PRSTR,TXTGR,':',#CR
BYT CR,CR
.DA #PRSTR,TXTFROM,#PRSTR,TXTPS,#PRSTR,TXTSD,#CR
.DA #PRSTR,TXTFROM,#PRSTR,TXTC,#PRSTR,TXTSD,#CR
.DA #PRSTR,TXTFOD,#CR
.DA 'NO ',#PRSTR,TXTGR,#CR
BRK
LDY GRSEL
JSR SELECT
BYT 6,28,SLMY+23,4
ADR RTS
STY GRSEL
BCS >0
;
LDX #1
JSR FIXCOLOR
;
JSR JMPVECTS
ADR SGPSD
ADR SGCD
ADR SGOD
ADR RTS
^0 RTS
;
; From Print Shop disk
;
SGPSD LDA GRNUM
LDX #GRBUFF
LDY /GRBUFF
JSR GETPDISK
BCS >1
STA GRNUM
^0 RTS
;
; From Companion disk
;
SGCD LDA #2
CLC
HEX 24
;
; From other disk
;
SGOD SEC
PHP
JSR SETTYPE
TXTGR BYT 'GRAPHIC',0
TXTCAL BYT 'CALENDAR',0
BYT 0
BYT 4
ADR GRBUFF
ADR $240
PLP
JSR GETFILE
JSR TPTITLE2
BCC <0
^1 JMP SELGR
;-----------
;
; Select Font
;
SELFONT LDY FONTSEL
CLC
JSR FGETMAIN
STY FONTSEL
BCS >0
;
LDX #0
JSR FIXCOLOR
;
JSR >1
BCS SELFONT
^0 RTS
;
^1 JSR JMPVECTS
ADR SFPSD
ADR SFCD
ADR SFOD
ADR RTS
;
; Font from Print Shop disk
;
SFPSD LDY FONTPSD
JSR FGETPSD
STY FONTPSD
RTS
;
; Font from Companion disk
;
SFCD LDY FONTCD
JSR FGETCD
STY FONTCD
RTS
;
; Font from other disk
;
SFOD JSR SETTYPE
TXTFONT BYT 'FONT',0
BYT 'CALENDAR FONT',0
BYT 'FONT.',0
BYT 0
ADR FONTBUFF
ADR 0
SEC
JSR GETFILE
;
; Turn off list indicators from
; the Font Editor
;
LDY #'Z'-$20
^0 LDA FONTBUFF+12,Y
AND #$7F
STA FONTBUFF+12,Y
DEY
BPL <0
;
JMP TPTITLE2
;-----------
;
; Credit line
;
CREDIT2 JSR CLS1
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140
BYT CRY1-22
BYT 'TYPE ONE-LINER FOR',CR
BYT 'BOTTOM OF '
.DA #PRSTR,TXTCAL
BYT CR,0
LDX #CRXB-1
LDY #CRY1
LDA #19
JSR DRAWBOX
JMP CREDIT
;-----------
PRMY = 32
;
; Print menu
;
PRINMENC CLC
HEX B0
PRINMENU SEC
JSR PRTITLE
JSR CLS1
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#PRMY
BYT 'MAKE SURE PRINTER IS READY',CR
BYT 'AND CHOOSE OPTION(S):',CR
BYT CR,CR,CR
BYT 'SET NUMBER OF COPIES',CR
BYT 'TEST PAPER POSITION',CR
BYT '**** PRINT ****',CR
.DA 'SAVE THIS ',#PRSTR,TXTCAL,#CR
BYT 'START FROM SCRATCH',CR
.DA 'GOODBYE: ',#PRSTR,TXTGTMM,#CR
BRK
;
PRINMEN2 LDY PRSEL
JSR SELECT
BYT 5,30,PRMY+39,6
ADR RTS
STY PRSEL
BCS >0
;
JSR JMPVECTS
ADR PRSETNUM
ADR PRTESTP
ADR PRPRINT
ADR PRSAVE
ADR PSCRATCH
ADR PRGOMENU
;
^0 RTS
;---
;
; Set number of copies
;
PRSETNUM JSR PRINT
.DA #PRLOC,44,#136
BYT 'HOW MANY COPIES DO YOU',CR
BYT 'WISH TO PRINT?',CR,0
;
LDA #99
STA TMP0
LDX #165
LDY #144
LDA PRCOPIES
JSR GETANUMB
BCS >0
STA PRCOPIES
INC PRSEL
;
^0 JSR PRINT
BYT RTOSBLAK,1,136,38,16,0
JMP PRINMEN2
;---
;
; Test paper position
;
PRTESTP JSR DEVICEOF
JSR TESTPAPR
JSR DEVICEON
JMP PRINMEN2
;---
;
; Print the calendar
;
PRPRINT JSR DEVICEOF
;
LDA PRCOPIES
STA COPYCONT
JSR DOCALEN
;
JSR DEVICEON
JMP PRINMENC
;---
;
; Save calendar to data disk
;
PRSAVE JSR SETCAL
LDA #0
STA PRSEL
JSR SAVEFILE
LDA #3
STA PRSEL
JMP PRINMENC
;---
;
; Go back to main menu
;
PRGOMENU JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#167
.DA #PRSTR,TXTRET
BYT ' TO '
.DA #PRSTR,TXTGTMM,#CR
BYT 'OR',CR,0
JSR GETKEY
CMP #CR
BEQ >1
^0 JSR PRINT
BYT RTOSBLAK,1,167,38,16,0
JMP PRINMEN2
;
^1 JMP MAINMENU
;---
;
; Start from scratch
;
PSCRATCH JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#167
.DA #PRSTR,TXTRET
BYT ' TO START OVER',CR
BYT 'OR',CR,0
JSR GETKEY
CMP #CR
BNE <0
CLC
RTS
;-----------
;
; Set file info for calendar
;
SETCAL LDY DBUFENDL
LDA DBUFENDH
SEC
SBC /COBUFF
STY SETCALEN
STA SETCALEN+1
JSR SETTYPE
BYT 'CALENDAR',0
BYT 'CALENDAR',0
BYT 'CALE.',0
BYT 0
ADR COBUFF
SETCALEN ADR 0
^9 RTS
;-----------
;
; FIX color selections for
; graphics and fonts.
;
FIXCOLOR PHP
LDA COLORFLG
CMP #$FF
BNE >1
LDA #8
CPY #NOGR ; NOFONT
BEQ >0
EOR DCOLOR0,X
BNE >1
^0 STA DCOLOR0,X
^1 PLP
RTS
;-----------
;
; Color selection menu
;
SELCOLOR JSR PRTITLE
;
; Is this menu available???
;
LDY COLORPR
BEQ <9
LDY COLORFLG
INY
BNE <9
;
JSR CLS1
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#32
.DA #PRSTR,TXTCHOO
BYT 'COLORS:',CR
;
BYT PRLEFT
.DA #PRLOC,69,#56
.DA #PRSTR,TXTFONT,#CR
.DA #PRSTR,TXTGR,#CR
BYT 'LINES',CR
BYT 'NOTES',CR
BRK
;
; Display colors
;
LDA #3
^0 PHA
STA TMP0
JSR SLRSHOW
PLA
SEC
SBC #1
BPL <0
;
JSR SLRAROWS
JSR PRINT
.DA #PRLOC,44,#128
BYT 'USE',PRRTAB,68
BYT ' TO SELECT ITEM',CR
BYT CR
BYT 'PRESS <SPACE> TO CHANGE',CR
BYT 'COLORS OF SELECTED ITEM',CR
BYT CR
BYT 'PRESS '
.DA #PRSTR,TXTRET
BYT ' WHEN DONE',CR
BRK
;
^0 LDX #0
^1 STX TMP0
^2 JSR SLRHILIT
JSR GETKEY
PHA
JSR SLRHILIT
PLA
LDX TMP0
LDY DCOLOR0,X
JSR PARSE
.DA #CR,SLRDONE
.DA #ESC,SLRESC
.DA #$08,SLRUP
.DA #$0B,SLRUP
.DA #$15,SLRDOWN
.DA #$0A,SLRDOWN
.DA #$20,SLRSPACE
BRK
JMP <2
;
SLRUP DEX
BPL <1
LDX #2
SLRDOWN INX
CPX #4
BLT <1
BEQ <0
;
SLRSPACE CPY #8
BEQ <2
INY
TYA
CMP #8
BLT *+4
LDA #0
STA DCOLOR0,X
JSR SLRSHOW
JMP <2
;---
;
; Highlite current color item
;
SLRHILIT LDA TMP0
ASL
ASL
ASL
ADC #55
STA >0+2
JSR PRINT
^0 BYT RTOSINV,9,00,14,9
BRK
SLRESC SEC
RTS
SLRDONE CLC
RTS
;---
;
; Given A=color#, show current setting
;
SLRSHOW LDA TMP0
TAY
ASL
ASL
ASL
ADC #56
STA SCMOD0+2
STA SCMOD1+3
;
; Point to text
;
LDX DCOLOR0,Y
LDY #$FF
^0 DEX
BMI >2
^1 INY
LDA COLORTXT,Y
BNE <1
BEQ <0
^2 INY
TYA
CLC
ADC #COLORTXT
STA SCMOD2+1
LDA /COLORTXT
ADC #0
STA SCMOD2+2
;
; Erase and show color
;
JSR PRINT
SCMOD0 BYT RTOSBLAK,24,00,15,7
SCMOD1 .DA #PRLOC,169,#00
SCMOD2 .DA #PRSTR,$FFFF,#NOCR
BRK
RTS
;---
COLORTXT BYT 'BLACK',0
BYT 'RED',0
BYT 'ORANGE',0
BYT 'YELLOW',0
BYT 'GREEN',0
BYT 'BLUE',0
BYT 'PURPLE',0
BYT 'RAINBOW',0
BYT ' ----',0
;-----------
AROWX = 12
AROWY = 128
;
SLRAROWS LDA $FA68
CMP #$C0
BEQ ARROW2E
LDA $FBB3
CMP #$06
BEQ ARROW2E
;---
; LEFT
JSR PICDRAW
BYT AROWX,AROWY+1,1,5
HEX 0C06C1060C
; RIGHT
JSR PICDRAW
BYT AROWX+2,AROWY+1,1,5
HEX 1830C13018
RTS
;---
; DOWN
ARROW2E JSR PICDRAW
BYT AROWX,AROWY,1,7
HEX 0808086B3E1C08
; UP
JSR PICDRAW
BYT AROWX+2,AROWY,1,7
HEX 081C3E6B080808
RTS
;-----------
;
;
;
ICL "S:UCAL4"

View File

@ -0,0 +1,819 @@
;
; S:UCAL4
;
; Calendar user interface menus
;
;
; SELDATE : given MNDATE as default,
; draws miniature calendar
; and allows user to select
; new date. Returns new date
; in X and in MNDATE.
;
; SELWDATE: given MNWDATE as default,
; draws miniature weekly
; calendar and allows user
; to select which piece to
; edit. Returns # in X and
; in MNWDATE. 7=DONE
;
;-----------
;
; Select day of month
;
; Miniature calendar width, height
;
HBW = 3
HBW2 = HBW*7
HBH = 18
;
; Location of miniature calendar
;
HBM = 4
HBM2 = HBM*7
HBY = 61
;---
HBZ EPZ $80
;
HCALX EPZ HBZ
HCALY EPZ HBZ+1
HCLSTFLG EPZ HBZ+2
HCDAYOWK EPZ HBZ+3
HCMNLAST EPZ HBZ+4
HCGKFLAG EPZ HBZ+5
HCDVX EPZ HBZ+6
HCDVY EPZ HBZ+7
HCDWIDTH EPZ HBZ+8
HCMNLST7 EPZ HBZ+9
HWPIECE EPZ HBZ+10
HWSTRING EPZ HBZ+11
HWDONE EPZ HBZ+12
;-----------
;
; See above explanation
;
SELDATE JSR CLS1
LDY #1
JSR CALCDAY
LDX MNLAST
LDA CLTYPE
BNE >0
;-----------
;
; Monthly date selection,
; with DONE box.
;
INX
STX HCMNLAST
LDY #24
JSR SLDHELP1
JSR HCALEN
JMP HGETDATE
;-----------
;
; Weekly date selection
;
^0 STX HCMNLAST
JSR PRINT
BYT PRCNTR
.DA #PRLOC,140,#19
BYT 'SELECT THE FIRST DAY FOR',CR
BYT 'YOUR WEEKLY '
.DA #PRSTR,TXTCAL,#CR
BRK
JSR HCALEN
JSR SLDHELP
JSR PRINT
BYT PRCNTR
BYT 'WHEN DONE',CR,0
JMP HGETDATE
;-----------
;
; Show help information
;
HBHELPX = 32
;
SLDHELP1 STY >0+3
JSR PRINT
BYT PRCNTR
^0 .DA #PRLOC,140,#00
BYT 'HIGHLIGHT SPECIAL OCCASIONS',CR,0
JSR SLDHELP
JSR PRINT
BYT PRCNTR
BYT 'TO ENTER',CR
BYT 'TEXT',CR,0
RTS
;
SLDHELP LDX #HBHELPX-3
LDY #HBY-12
LDA #0
JSR SHOWAROW
JSR PRINT
BYT PRCNTR
.DA #PRLOC,HBHELPX*7,#HBY+36
BYT 'MOVE',CR
BYT 'CURSOR',CR
BYT 'TO SELECT',CR
BYT 'DATE',CR,CR
BYT 'PRESS',CR
.DA #PRSTR,TXTRET,#CR
BRK
RTS
;-----------
;
; Draw miniature calendar
;
HCALEN JSR PRINT
BYT PRSPC,9
BYT PRCNTR
.DA #PRLOC,HBM2+73,#HBY-18
.DA #PRSTR,MONTHTXT,', '
.DA #PRSTR,YEARTEXT,#CR
;
.DA #PRHTAB,HBM2+HBW2/2
BYT 'S',NOCR
BYT PRRTAB2,HBW2,'M',NOCR
BYT PRRTAB2,HBW2,'T',NOCR
BYT PRRTAB2,HBW2,'W',NOCR
BYT PRRTAB2,HBW2,'T',NOCR
BYT PRRTAB2,HBW2,'F',NOCR
BYT PRRTAB2,HBW2,'S',NOCR
BRK
;
; Draw all the dates
;
LDY #1
^0 STY DATE
JSR HCDATE
LDY DATE
INY
CPY HCMNLAST
BLT <0
BEQ <0
RTS
;---
HCDATE JSR HCXYCALC
STA HCALX
STY HCALY
LDA HCWX2,X
STA >0+1
STY >0+3
JSR PRINT
^0 .DA #PRLOC,0,#0,#0
;
; Draw the frame
;
LDA HCALX
JSR HCDVLIN
LDA HCALX
CLC
ADC HCDWIDTH
JSR HCDVLIN
;
LDA #14
SEC
SBC MNFDAY
CMP DATE
BLT >1
LDA HCALY
JSR HCDHLIN
^1 LDA HCALY
CLC
ADC #HBH
JSR HCDHLIN
;
; "DONE" box?
;
LDY DATE
CPY MNLAST
BLT >1
BEQ >1
;
LDA HCALY
JSR HCDHLIN
JSR PRINT
BYT PRSPC,5,CR
BYT PRRTAB2,5
BYT 'DONE',CR,0
RTS
;
; Check to see if any data
; if so, put * under date.
;
^1 LDA MNLAST
EOR HCMNLAST
BEQ >2
;
; BUT only for monthly !!!
;
LDA #'*'
LDX DBUFPNTH-1,Y
BNE >3
^2 LDA #NOCR
^3 STA >4+2
;
; Print number
;
JSR MAKEDTXT
JSR PRINT
BYT PRSPC,2,CR,PRSPC,8
BYT PRRTAB2,4
.DA #PRSTR,DATETEXT,#CR
^4 BYT PRRTAB,3,'?',NOCR
BRK
RTS
;---
;
; Draw horizontal line
;
HCDHLIN LDX HCALX
LDY HCDWIDTH
STX >0+1
STA >0+2
STA >1+2
STY >0+3
TXA
CLC
ADC HCDWIDTH
STA >1+1
JSR PRINT
^0 BYT RTOSWITE,00,00,HBW,1
BYT RTOSANY
^1 BYT $03,00,00,1,1,0
RTS
;---
;
; Draw vertical line
;
HCDVLIN LDY HCALY
INY
STY >0+2
STA >0+1
JSR PRINT
BYT RTOSANY
^0 BYT $03,00,01,1,HBH,0
RTS
;---
;
; Calculate screen address in X,Y
; given DATE
;
; returns A:X byte offset
; Y:Y byte offset
; X:lookup table index, 0-6
; (used for X-bit offset)
; HCWIDTH:width of box
;
HCXYCALC LDA DATE
CMP MNLAST
BEQ >0
BLT >0
;
; "DONE" box if DATE > MNLAST
;
LDA #HBW*2
STA HCDWIDTH
LDA #HBM+2+HBW*2
LDY #158
LDX #7
RTS
;
^0 LDY #HBW
STY HCDWIDTH
CLC
ADC MNFDAY
SBC #0
LDX #$FF
^1 INX
SEC
SBC #7
BCS <1
ADC #7
LDY HCWY,X
TAX
LDA HCWX,X
RTS
;---
;
; X-byte location
;
HCWX BYT HBM,HBM+HBW,HBM+HBW*2
BYT HBM+HBW*3,HBM+HBW*4
BYT HBM+HBW*5,HBM+HBW*6
;
; X-bit location
;
HCWX2 BYT HBM2,HBM2+HBW2,HBM2+HBW2*2
BYT HBM2+HBW2*3,HBM2+HBW2*4
BYT HBM2+HBW2*5,HBM2+HBW2*6
BYT HBM2+14+HBW2*2
;
; Y-byte location
;
HCWY BYT HBY,HBY+HBH,HBY+HBH*2
BYT HBY+HBH*3,HBY+HBH*4
BYT HBY+HBH*5
;-----------
;
; Move cursor around to select date
;
HGETDATE LDX MNDATE
BNE *+3
INX
CPX HCMNLAST
BLT *+4
LDX HCMNLAST
STX DATE
LDA HCMNLAST
CLC
ADC #7
STA HCMNLST7
HGETDAT2 ASL HCGKFLAG
JSR HGETDVRD
STX HCDVX
STY HCDVY
;
^0 INC HCGKFLAG
JSR HCCURSOR
JSR FLSHINIT
;
^1 JSR HGETDVRD
BCS >2
ASL
BMI >2
BCS >3
JSR HGETDEVC
;
^2 JSR POLEKEY
BMI >4
DEC FLASHLO
BNE <1
DEC FLASHHI
BPL <1
BMI <0
;
^3 LDA #CR
;
; Key pressed
;
^4 JSR HCCURSOF
LDX DATE
JSR PARSE
.DA #CR,HCGDCR
.DA #ESC,HCGDESC
.DA #'I',HCGDUP
.DA #$0B,HCGDUP
.DA #'M',HCGDDOWN
.DA #$0A,HCGDDOWN
.DA #'J',HCGDLEFT
.DA #$08,HCGDLEFT
.DA #'K',HCGDRITE
.DA #$15,HCGDRITE
BRK
JMP HGETDAT2
;---
;
; Handle input device
;
HGETDEVC CPX HCDVX
BNE >0
CPY HCDVY
BNE >0
RTS
;
; Device moved
;
^0 JSR HGETDVST
JSR HCCURSOF
;
; Compute date given X,Y coordinates
;
LDA HCDVX
LDY HCDVY
^1 CLC
ADC #7
DEY
BPL <1
SBC #6
SBC MNFDAY
LDY #0
TAX
^2 PLA
PLA
TXA
JMP HGETDVAD
;---
;
; Do device clamping
;
HGETDVST BIT RTS
CPX #7
BLT >0
LDX #6
CLV
^0 CPY #8
BLT >1
LDY #7
CLV
^1 STX HCDVX
STY HCDVY
BVS >2
TXA
ASL
ASL
ASL
TAX
TYA
ASL
ASL
TAY
JSR DEVICEST
^2 RTS
;---
;
; Get scaled values from input device
;
HGETDVRD LDY #0
JSR DEVICERD
PHP
PHA
TXA
LSR
LSR
LSR
TAX
TYA
LSR
LSR
TAY
PLA
PLP
RTS
;---
HCCURSOF LSR HCGKFLAG
PHA
BCC >8
PLA
;
; Plot cursor
;
HCCURSOR PHA
JSR HCXYCALC
TAX
STX >0+2
INX
STX >1+1
;
INY
STY >0+3
STY >1+2
;
LDX HCDWIDTH
DEX
STX >1+3
JSR PRINT
^0 BYT RTOSANY,$FC,00,01,1,HBH-1
^1 BYT RTOSINV,01,01,HBW-1,HBH-1,0
^8 PLA
RTS
;---
HCGDCR CLC
HEX 24
HCGDESC SEC
PHP
CPX HCMNLAST
BLT >0
LDX HCMNLAST
^0 STX MNDATE
PLP
RTS
;
HCGDUP LDY #0
HEX 2C
HCGDDOWN LDY #1
HEX 2C
HCGDLEFT LDY #2
HEX 2C
HCGDRITE LDY #3
;
DEX
TXA
CLC
ADC HCGDTBL0,Y
HGETDVAD:
BPL >0
SEC
SBC HCGDTBL0,Y
;
^0 TAX
INX
CPX HCMNLST7
BLT >1
DEX
TXA
SBC #7
BCS <0
;
; If no DONE box, then clamp.
;
^1 LDA HCMNLAST
CMP MNLAST
BNE >2
CPX HCMNLAST
BLT >2
TAX
;
^2 STX DATE
JMP HGETDAT2
;
HCGDTBL0 BYT 0-7,7,0-1,1
;-----------
;
; Select which piece of weekly
; calendar to edit.
;
HWX = 5
HWX2 = HWX*7
HWY = 37
HWX2L = 140
HWW = 6
HWH = 18
HWX2LMAX = 91
;
SELWDATE JSR CLS1
LDA MNDATE
STA DATE
JSR MAKEDTXT
LDY #19
JSR SLDHELP1
JSR PRINT
BYT PRCSPACE,1
BYT PRCNTR
.DA #PRLOC,140,#19+8
BYT 'FOR THE WEEK OF '
.DA #PRSTR,MONTHTXT,' '
.DA #PRSTR,DATETEXT,', '
.DA #PRSTR,YEARTEXT,#CR
;
; Draw border
;
BYT RTOSANY,$60,HWX-1,HWY,1,1+8*HWH
BYT RTOSANY,$03,HWX+6,HWY,1,1+8*HWH
BYT RTOSANY,$60,HWX+19,HWY,1,1+7*HWH
BRK
;
; Fill in the blanks
;
JSR SWDOWEEK
LDX MNWDATE
;
; Select new MNWDATE
;
NEWPIECE STX HWPIECE
ASL HCGKFLAG
JSR HGETDVRD
STX HCDVX
STY HCDVY
;
^0 INC HCGKFLAG
JSR WKCURSOR
JSR FLSHINIT
;
^1 JSR HGETDVRD
BCS >2
ASL
BMI >2
BCS >3
JSR WKDEVICE
BNE NEWPIECE
;
^2 JSR POLEKEY
BMI >4
DEC FLASHLO
BNE <1
DEC FLASHHI
BPL <1
BMI <0
;
^3 LDA #CR
;
^4 JSR WKCURSOF
LDX HWPIECE
JSR PARSE
.DA #CR,WKGDCR
.DA #ESC,WKGDESC
.DA #'I',WKGDUP
.DA #$0B,WKGDUP
.DA #$08,WKGDUP
.DA #'M',WKGDDOWN
.DA #$0A,WKGDDOWN
.DA #$15,WKGDDOWN
BRK
JMP NEWPIECE
;
WKGDCR CLC
HEX 24
WKGDESC SEC
STX MNWDATE
RTS
;
WKGDUP DEX
BPL >0
LDX #6
;
WKGDDOWN INX
CPX #8
BLT >0
LDX #0
^0 JMP NEWPIECE
;---
;
; Handle input device
;
WKDEVICE CPX HCDVX
BNE >0
CPY HCDVY
BNE >0
RTS
;
^0 JSR HGETDVST
JSR WKCURSOF
LDX HCDVY
LDA #1
RTS
;---
;
; Turn off cursor
;
WKCURSOF LSR HCGKFLAG
PHA
BCC >1
PLA
;
; Toggle cursor
;
WKCURSOR PHA
JSR SWDYCALC
INY
STY >0+2
JSR PRINT
^0 BYT RTOSINV,HWX,01,HWW,HWH-1,0
^1 PLA
RTS
;---
;
; Draw mini-cal
;
SWDOWEEK LDA #0
LDX MNDATE
LDY MNFDAY
;
^0 STA HWPIECE
STX DATE
STY HCDAYOWK
JSR SWDDODAY
LDX DATE
INX
CPX MNLAST
BEQ >1
BLT >1
LDX #1
^1 LDY HCDAYOWK
INY
CPY #7
BLT >2
LDY #0
^2 LDA HWPIECE
CLC
ADC #1
CMP #8
BLT <0
RTS
;-----------
;
; Draw day of week, given
;
; given:HWPIECE : 0-7
; DATE : 1-31
; HCDAYOWK: 0-6
;
SWDDODAY LDY HCDAYOWK
JSR MAKEWTXT
LDA #0
STA WEEKTEXT+3
JSR MAKEDTXT
;
LDA HWPIECE
CMP #7
ROR HWDONE
;
; Draw top line
;
JSR SWDYCALC
STY >0+2
STY >1+3
INY
STY GRAPHY
JSR LINES
BYT "H",HWX-1
^0 BYT WITE,5,HWY,HWX2L
BYT WITE,5,HWY+8*HWH,44
BYT 1
;
;
; Next draw text
;
JSR PRINT
^1 .DA #PRLOC,HWX2+21,#00
BRK
;
BIT HWDONE
BPL >2
;---
;
; DONE box
;
JSR PRINT
BYT PRCNTR
BYT PRSPC,5,CR
BYT 'DONE',CR,0
RTS
;---
;
; Day of week box
;
^2 JSR PRINT
BYT PRCNTR
BYT PRSPC,2,CR,PRSPC,8
.DA #PRSTR,WEEKTEXT,#CR
.DA #PRSTR,DATETEXT,#CR
BRK
;---
;
; Now do this really clever thing here
; with the data in the buffer, sort
; of a graph indicating how much data
; has been typed in!!!!
;
LDA HWPIECE
ASL
ASL
STA HWSTRING
;
LDA #4
SWDGLOOP PHA
;
; Get length of string
;
LDY HWSTRING
INC HWSTRING
JSR GETTEXT
TYA
ASL
CMP #HWX2LMAX
BLT *+4
LDA #HWX2LMAX
STA GRAPHY+1
;
; Now draw the line
;
LDA #3
^0 PHA
INC GRAPHY
LDA TEXTBUFF
BEQ >1
;
JSR LINES
BYT "H",HWX-1
BYT WITE,52,00,11
GRAPHY = *-2
BYT 1
;
^1 PLA
SEC
SBC #1
BNE <0
INC GRAPHY
PLA
SBC #1
BNE SWDGLOOP
RTS
;-----------
;
; Given HWPIECE, compute Y-offset
; and self modify code.
;
SWDYCALC LDX HWPIECE
LDY >0+0,X
RTS
;
^0 BYT HWY,HWY+HWH,HWY+2*HWH
BYT HWY+3*HWH,HWY+4*HWH
BYT HWY+5*HWH,HWY+6*HWH
BYT HWY+7*HWH
;-----------
;
;
;
ICL "S:UCAL5"

View File

@ -0,0 +1,160 @@
;
; S:UCAL5
;
; Credit line stuff that didn't fit
; in ICAL. CRBLAK/CRDRAW
;
; INITCAL:move code to homes
;
;-----------
;
; Routine to erase current line
;
CRBLAK LDY CRLINE
LDA TEXTBUFF
BNE >0
STA CRLINE
TAY
JSR >0
LDY #1
;
^0 LDA CRYTBL,Y
STA >1+2
JSR PRINT
^1 BYT RTOSBLAK,CRXB,00
BYT CRXMAXB,7,0
LDY #TEXTBUFF
LDA /TEXTBUFF
STY TMP2
STA TMP3
RTS
;---
;
; Draw
;
CRDRAW LDY CRLINE
JSR CRDRAW2
LDY CRLINE
BNE >1
;
LDA TEXTBUFF,X
BEQ CRRTS
INC CRLINE
BNE CRDRAW
;
^1 LDX CRPOS,Y
LDA TEXTBUFF,X
BNE CRRTS
DEC CRLINE
BEQ CRDRAW
;---
;
; Given Y=0 or 1, draw given line
;
CRDRAW2 STY CRLINE
LDA CRYTBL,Y
STA >2+3
LDX CRPOS,Y
STX >3+1
LDA #0
DEX
^0 INX
LDY TEXTBUFF,X
BEQ >1
CLC
ADC UFONTW-$20,Y
ADC #2
CMP #CRXMAX+1
BLT <0
;
^1 LDA TEXTBUFF,X
PHA
LDA #0
STA TEXTBUFF,X
TXA
PHA
;
JSR PRINT
^2 .DA #PRLOC,CRX,#00
^3 .DA #PRSTR,TEXTBUFF
BYT NOCR,0
;
PLA
TAX
PLA
STA TEXTBUFF,X
;
LDY CRLINE
BEQ >4
LDA #0
STA TEXTBUFF,X
CRRTS RTS
;
^4 STX CRPOS+1
RTS
;
CRYTBL BYT CRY1+2
BYT CRY1+10
CRPOS BYT 0
BYT 0
;-----------
;
; Initialize all the external
; subroutines, move them to their
; homes.
;
SRCLO EPZ $3A
SRCHI EPZ $3B
DSTLO EPZ $3C
DSTHI EPZ $3D
LENLO EPZ $3E
LENHI EPZ $3F
;
INITCAL LDY #EXTERNAL
LDA /EXTERNAL
STY SRCLO
STA SRCHI
LDY #0
;
^0 JSR MOVEGET
STA DSTLO
JSR MOVEGET
STA DSTHI
ORA DSTLO
BEQ MOVERTS
JSR MOVEGET
TAX
JSR MOVEGET
STA LENHI
;
^1 JSR MOVEGET
STA (DSTLO),Y
INC DSTLO
BNE >2
INC DSTHI
^2 TXA
BNE >3
DEC LENHI
^3 DEX
BNE <1
TXA
ORA LENHI
BNE <1
BEQ <0
;
; Get a byte from program data
;
MOVEGET LDA (SRCLO),Y
INC SRCLO
BNE MOVERTS
INC SRCHI
MOVERTS RTS
;-----------
;
;
EXTERNAL:
;
;
USR "UCAL",ORG
;
ICL "S:COMMON"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
5 HIMEM: 32768
10 TEXT : HOME : NORMAL : PRINT "CHANGE CONFIG FILE TO 'WELCOME' STATE": POKE 34,9
20 PRINT "BLOADCONFIG.WELCOME"
30 HOME : PRINT "PUT COMPANION DISK IN SLOT 6, DRIVE 1": PRINT : PRINT : PRINT "AND PRESS <RETURN>...";
40 GET A$: IF A$ < > CHR$ (13) THEN 40
50 HOME : PRINT
55 POKE 45069,2
56 POKE 38389,255
60 PRINT "BSAVE CONFIG,S6,D1,A$95F0,L16"
65 POKE 45069,0
70 GOTO 30

View File

@ -0,0 +1,6 @@
10 TEXT : HOME : NORMAL : PRINT "UPDATE COMPANION PROGRAM": VTAB 10: PRINT "PUT NEW COMPANION DISK IN DRIVE 1 AND PUT COMPANION TO BE UPDATED IN DRIVE 2 AND PRESS <RETURN>...";
15 GET A$: IF A$ < > CHR$ (13) THEN 15
20 HOME :IOB = 47080:SL = IOB + 1:DR = IOB + 2:VO = IOB + 3:TR = IOB + 4:SE = IOB + 5:BL = IOB + 8:BH = IOB + 9:CO = IOB + 12:RE = 768: HGR : VTAB 22
30 POKE VO,0: POKE 1150,68: PRINT "COPYING DRIVE 1 TO 2": FOR T = 34 TO 1 STEP - 7:C = 1: GOSUB 100:C = 2: GOSUB 100: NEXT : CALL - 1052: RUN
100 POKE CO,C: POKE DR,C: POKE TR,T - (T = 34): POKE SE,15: POKE 0,7 * 16: POKE BL,0: POKE BH,143: CALL PEEK (175) + 256 * PEEK (176) - 56: RETURN
63999 PRINT "SAVE CC"

View File

@ -0,0 +1,6 @@
6 SV = 14
10 TEXT : HOME : NORMAL : PRINT "Copy Hard disk to floppy": VTAB 10: PRINT "Destination disk in DRIVE ONE,SLOT SIX SOURCE VOLUME -->"SV" Press <RETURN> to continue...";
15 GET A$: IF A$ < > CHR$ (13) THEN 15
20 HOME :IOB = 47080:SL = IOB + 1:DR = IOB + 2:VO = IOB + 3:TR = IOB + 4:SE = IOB + 5:BL = IOB + 8:BH = IOB + 9:CO = IOB + 12:RE = 768: HGR : VTAB 22
30 POKE 1150,68: PRINT "Backing up volume "SV: FOR T = 34 TO 1 STEP - 7:C = 1: POKE DR,1: POKE SL,112: POKE VO,SV: POKE 49385,0: GOSUB 100:C = 2: POKE SL,96: POKE VO,0: GOSUB 100: NEXT : CALL - 1052: RUN
100 POKE CO,C: POKE TR,T - (T = 34): POKE SE,15: POKE 0,7 * 16: POKE BL,0: POKE BH,143: CALL PEEK (175) + 256 * PEEK (176) - 56: RETURN

View File

@ -0,0 +1,6 @@
6 DV = 14
10 TEXT : HOME : NORMAL : PRINT "Copy Floppy to Hard Disk": VTAB 10: PRINT "COMPANION in SLOT SIX,DRIVE ONE DESTINATION VOLUME -->";DV" PRESS <RETURN> TO CONTINUE...";
15 GET A$: IF A$ < > CHR$ (13) THEN 15
20 HOME :IOB = 47080:SL = IOB + 1:DR = IOB + 2:VO = IOB + 3:TR = IOB + 4:SE = IOB + 5:BL = IOB + 8:BH = IOB + 9:CO = IOB + 12:RE = 768: HGR : VTAB 22
30 POKE 1150,68: PRINT "Downloading volume "DV: FOR T = 34 TO 1 STEP - 7:C = 1: POKE DR,1: POKE SL,96: POKE VO,0: GOSUB 100: POKE 49385 - (T = 6),0:C = 2: POKE SL,112: POKE VO,DV: GOSUB 100: NEXT : CALL - 1052: RUN
100 POKE CO,C: POKE TR,T - (T = 34): POKE SE,15: POKE 0,7 * 16: POKE BL,0: POKE BH,143: CALL PEEK (175) + 256 * PEEK (176) - 56: RETURN

View File

@ -0,0 +1,9 @@
5 PRINT "MONC": PRINT "BLOADCLEARMEM": CALL 768
10 PRINT "BLOAD CALEN.TOO BIG"
20 PRINT "BSAVE CALEN.TAIL END,A$5D00,L$700"
30 PRINT "BLOAD O:CALTAIL,A$5D00"
34 POKE 16385,0: POKE 16386,93: REM
$4001:00.5D
40 PRINT "BSAVE CALEN.FIRST PART,A$4000,L$1DF8"
50 END
63999 PRINT "SAVE FIX.CALEN"

View File

@ -0,0 +1,10 @@
5 F$ = "COMPANION.PIC"
6 F2$ = "CTITLE"
10 TEXT : HOME : HGR : POKE - 16302,0: PRINT "BLOAD "F$",A8192"
20 PRINT "BLOAD O:MAKETITLEPIC,A4096"
30 PRINT "BLOAD O:SHOWTITLEPIC,A16384"
40 CALL 4096:L = PEEK (0) + 256 * PEEK (1) - 16384
50 TEXT : PRINT "THE LENGTH IS "L
60 PRINT "BSAVE "F2$",A16384,L"L
70 PRINT "DONE...": END
63999 PRINT "SAVE A:MAKETITLEPIC"

View File

@ -0,0 +1,10 @@
5 BF = 8192: POKE 47081,64
10 GOSUB 63950: TEXT : HOME : NORMAL
20 PRINT "SLOT 4, DRIVE 1 COMPANION PROTECTION ENABLER: 0 - TURN OFF 1 - TURN ON SELECTION (0-1) ? ";
30 GET A$:B = VAL (A$): IF B > 1 THEN 30
40 HOME :C = 1: GOSUB 100
45 POKE BF + 2,15 - B * 2
50 C = 2: GOSUB 100: END
100 CALL BF(0)C,17,0,BF,1: IF NOT PEEK (0) THEN RETURN
110 PRINT "ERROR!": END
63950 A = PEEK (175) + PEEK (176) * 256 - 4:B = PEEK (A) / 2:A = A - B * 2: FOR C = 0 TO B - 1:BF(C) = A - PEEK (A + C * 2) - 256 * PEEK (A + C * 2 + 1): NEXT : RETURN

View File

@ -0,0 +1,17 @@
10 PR# 0: CALL 1002:UP = 4096:ME = 6656: HIMEM: ME:AD = 34048:D$ = "BLOAD"
20 POKE 49164,0: POKE 49166,0
30 PRINT D$"DEMOMENU": PRINT D$"DEMOLIB"
35 ONERR GOTO 100
40 CALL 54915: CALL ME: HOME : IF PEEK (ME + 3) = 1 THEN GOSUB 1000: GOTO 40
50 HOME : IF NOT UL THEN PRINT D$"CAL1": PRINT D$"CAL2": PRINT D$"CALUP":UL = 1
55 ONERR GOTO 70
60 CALL UP: GOTO 35
70 CALL UP + 3: GOTO 60
100 TEXT : HOME : NORMAL : VTAB 8: PRINT "UNABLE TO READ DISK. PLEASE INSERT SIDE B OF THE PRINT SHOP AND PRESS <RETURN>"
110 WAIT 49152,128: POKE 49168,0: GOTO 40
1000 UL = 0:M = PEEK (ME + 4): ON M = 7 GOTO 2000: GOSUB 3000
1010 CALL AD + 3: ON NOT PEEK (AD + 6) GOTO 1010: RETURN
2000 FOR M = 1 TO 6: GOSUB 3000: CALL AD + 3: IF PEEK (AD + 6) THEN RETURN
2010 NEXT : GOTO 2000
3000 PRINT D$"PIC"M"A,A$4000": PRINT D$"PIC"M"B,A$6000": CALL AD: POKE AD + 7,128: RETURN
63999 PRINT "SAVEPS.SIDEB.HELLO

View File

@ -0,0 +1,10 @@
5 HIMEM: 32768
10 TEXT : HOME : NORMAL : PRINT "CHANGE CONFIG FILE TO 'WELCOME' STATE": POKE 34,9
20 PRINT "BLOADCONFIG.WELCOME"
30 HOME : PRINT "PUT PRINT SHOP DISK IN SLOT 6, DRIVE 1 AND PRESS <RETURN>...";
40 GET A$: IF A$ < > CHR$ (13) THEN 40
50 HOME : PRINT
55 POKE 45069,2
60 PRINT "BSAVE CONFIG,S6,D1,A$95F0,L16"
65 POKE 45069,0
70 GOTO 30

View File

@ -0,0 +1,11 @@
5 TP = 4096: PRINT "BLOAD O:TESTPROT,A"TP
10 TEXT : HOME : NORMAL : PRINT "Check Print Shop or Companion for copy protection...": FOR A = 1 TO 13: PRINT "---";: NEXT : PRINT : POKE 34,4: CALL TP: READ A$(0),A$(1)
20 HOME : VTAB 10: PRINT "INSERT DISK AND PRESS <RETURN>...";: GOSUB 2000
40 A$ = "ONE MOMENT WHILE I THINK ABOUT THIS...": POKE 0,100: GOSUB 1000: CALL TP + 3:A$ = "HERE'S THE VERDICT:": GOSUB 1000
50 VTAB 23: PRINT "PRESS <RETURN>...";: GOSUB 2000: GOTO 20
1000 VTAB 10: PRINT A$ TAB( 81): PRINT
1005 FOR A = 0 TO 1: IF A = PEEK (0) THEN INVERSE
1010 PRINT A$(A): NORMAL : NEXT : RETURN
2000 GET A$: ON A$ < > CHR$ (13) GOTO 2000: HOME : RETURN
60000 DATA "OK COPY","PIRATE COPY"
63999 PRINT "SAVEHELLO"

View File

@ -0,0 +1,17 @@
10 B$ = "BLOAD":S$ = "BSAVE": PRINT "MONC": HGR : HGR2 : TEXT : HOME
20 PRINT B$"O:NOMOREBACKUP,A$2000"
22 PRINT B$"CALEN.TAIL END,A$2200"
24 PRINT B$"CALEN.FIRST PART,A$4000"
26 PRINT B$"O:CALUPDATER,A$1000"
28 PRINT B$"DEMOMENU,A$1A00"
30 VTAB 8: PRINT "PUT SIDE B OF PRINT SHOP IN SLOT SIX, DRIVE ONE, AND PRESS <RETURN>...";
32 GET A$: IF A$ < > CHR$ (13) THEN 32
40 PRINT : PRINT : PRINT : PRINT
42 POKE 45069,2
44 PRINT S$"CAL1,A$4000,L$1DF8,S6,D1"
45 PRINT S$"CAL2,A$2000,L$900"
46 PRINT S$"CALUP,A$1000,L$800"
48 PRINT S$"DEMOMENU,A$1A00,L$5F8"
50 POKE 45069,0
1000 STOP
63999 PRINT "SAVEUP.PS.SIDEB"

Some files were not shown because too many files have changed in this diff Show More