Difference between revisions of "6 Games Programs"

From Software Archive
Jump to navigation Jump to search
Line 65: Line 65:
 
File:Commodore_6GamesPrograms_disk_front.jpg|Disk Front
 
File:Commodore_6GamesPrograms_disk_front.jpg|Disk Front
 
</gallery>
 
</gallery>
 +
 +
The initial loader loads to $9E80 and then decrypts with
 +
0225 a2 00    ldx #$00
 +
0227 a0 08    ldy #$08
 +
0229 bd 80 9e lda $9e80,x
 +
022c 8d 3f 02 sta $023f
 +
022f 0e 3f 02 asl $023f
 +
0232 6a      ror a
 +
0233 88      dey
 +
0234 d0 f9    bne $022f
 +
0236 9d 80 9e sta $9e80,x
 +
0239 e8      inx
 +
023a d0 eb    bne $0227
 +
023c 4c 80 9e jmp $9e80
 +
The routine is the same for all games.
 +
 +
The decrypted routine that loads the game looks like this:
 +
.C:9e80  20 CC FF    JSR $FFCC // CLRCHN
 +
.C:9e83  A9 0F      LDA #$0F
 +
.C:9e85  A2 08      LDX #$08
 +
.C:9e87  A0 0F      LDY #$0F
 +
.C:9e89  20 BA FF    JSR $FFBA // SETLFS
 +
.C:9e8c  A9 02      LDA #$02
 +
.C:9e8e  A2 DD      LDX #$DD
 +
.C:9e90  A0 9E      LDY #$9E
 +
.C:9e92  20 BD FF    JSR $FFBD // SETNAM
 +
.C:9e95  20 C0 FF    JSR $FFC0 // OPEN
 +
.C:9e98  A9 02      LDA #$02
 +
.C:9e9a  A2 08      LDX #$08
 +
.C:9e9c  A0 02      LDY #$02
 +
.C:9e9e  20 BA FF    JSR $FFBA // SETLFS
 +
.C:9ea1  A9 01      LDA #$01
 +
.C:9ea3  A2 DF      LDX #$DF
 +
.C:9ea5  A0 9E      LDY #$9E
 +
.C:9ea7  20 BD FF    JSR $FFBD // SETNAM
 +
.C:9eaa  20 C0 FF    JSR $FFC0 // OPEN
 +
.C:9ead  A2 0F      LDX #$0F
 +
.C:9eaf  20 C9 FF    JSR $FFC9 // CHKOUT
 +
.C:9eb2  A0 00      LDY #$00
 +
.C:9eb4  B9 D1 9E    LDA $9ED1,Y
 +
.C:9eb7  F0 06      BEQ $9EBF
 +
.C:9eb9  20 D2 FF    JSR $FFD2 // CHROUT
 +
.C:9ebc  C8          INY
 +
.C:9ebd  D0 F5      BNE $9EB4
 +
.C:9ebf  20 CC FF    JSR $FFCC // CLRCHN
 +
.C:9ec2  A2 0F      LDX #$0F
 +
.C:9ec4  20 C6 FF    JSR $FFC6 // CHKIN
 +
.C:9ec7  20 CF FF    JSR $FFCF // CHRIN
 +
.C:9eca  C9 32      CMP #$32
 +
.C:9ecc  F0 12      BEQ $9EE0
 +
.C:9ece  6C FC FF    JMP ($FFFC) // RESET
 +
.C:9ed1  55 31      EOR $31,X // This is sent to disk drive
 +
.C:9ed3  3A          NOOP
 +
.C:9ed4  32          JAM
 +
.C:9ed5  20 30 20    JSR $2030
 +
.C:9ed8  31 20      AND ($20),Y
 +
.C:9eda  35 0D      AND $0D,X
 +
.C:9edc  00          BRK
 +
.C:9edd  49 30      EOR #$30
 +
.C:9edf  23 20      RLA ($20,X)
 +
.C:9ee1  CC FF A9    CPY $A9FF
 +
.C:9ee4  0F 20 C3    SLO $C320
 +
.C:9ee7  FF A9 02    ISB $02A9,X
 +
.C:9eea  20 C3 FF    JSR $FFC3 // CLOSE
 +
.C:9eed  A2 01      LDX #$01
 +
.C:9eef  A0 08      LDY #$08
 +
.C:9ef1  18          CLC
 +
.C:9ef2  20 9C FF    JSR $FF9C // MEMBOT
 +
.C:9ef5  A9 01      LDA #$01
 +
.C:9ef7  A2 08      LDX #$08
 +
.C:9ef9  A0 00      LDY #$00
 +
.C:9efb  20 BA FF    JSR $FFBA // SETLFS
 +
.C:9efe  AD 86 9F    LDA $9F86
 +
.C:9f01  A2 87      LDX #$87
 +
.C:9f03  A0 9F      LDY #$9F
 +
.C:9f05  20 BD FF    JSR $FFBD // SETNAM
 +
.C:9f08  A9 00      LDA #$00
 +
.C:9f0a  A2 01      LDX #$01
 +
.C:9f0c  A0 08      LDY #$08
 +
.C:9f0e  20 D5 FF    JSR $FFD5 // LOAD
 +
.C:9f11  90 03      BCC $9F16
 +
.C:9f13  6C FC FF    JMP ($FFFC) // RESET
 +
.C:9f16  86 2D      STX $2D
 +
.C:9f18  84 2E      STY $2E
 +
.C:9f1a  A5 2B      LDA $2B
 +
.C:9f1c  48          PHA
 +
.C:9f1d  A5 2C      LDA $2C
 +
.C:9f1f  48          PHA
 +
.C:9f20  A0 00      LDY #$00
 +
.C:9f22  A2 08      LDX #$08
 +
.C:9f24  B1 2B      LDA ($2B),Y
 +
.C:9f26  0A          ASL A
 +
.C:9f27  6E 79 9F    ROR $9F79
 +
.C:9f2a  CA          DEX
 +
.C:9f2b  D0 F9      BNE $9F26
 +
.C:9f2d  AD 79 9F    LDA $9F79
 +
.C:9f30  91 2B      STA ($2B),Y
 +
.C:9f32  E6 2B      INC $2B
 +
.C:9f34  D0 02      BNE $9F38
 +
.C:9f36  E6 2C      INC $2C
 +
.C:9f38  A5 2C      LDA $2C
 +
.C:9f3a  C5 2E      CMP $2E
 +
.C:9f3c  D0 E4      BNE $9F22
 +
.C:9f3e  A5 2B      LDA $2B
 +
.C:9f40  C5 2D      CMP $2D
 +
.C:9f42  D0 DE      BNE $9F22
 +
.C:9f44  68          PLA
 +
.C:9f45  85 2C      STA $2C
 +
.C:9f47  68          PLA
 +
.C:9f48  85 2B      STA $2B
 +
.C:9f4a  20 33 A5    JSR $A533 // Re-link BASIC program
 +
.C:9f4d  A2 15      LDX #$15
 +
.C:9f4f  BD 6A 9F    LDA $9F6A,X
 +
.C:9f55  CA          DEX
 +
.C:9f56  10 F7      BPL $9F4F
 +
.C:9f58  A9 4C      LDA #$4C
 +
.C:9f5a  85 73      STA $73
 +
.C:9f5c  A9 AD      LDA #$AD
 +
.C:9f5e  85 74      STA $74
 +
.C:9f60  A9 02      LDA #$02
 +
.C:9f62  85 75      STA $75
 +
.C:9f64  20 8E A6    JSR $A68E // Set program pointer to BASIC-start
 +
.C:9f67  4C AE A7    JMP $A7AE // Interpreter loop, set up next statement for execution
 +
.C:9f6a  A5 3A      LDA $3A
 +
.C:9f6c  C9 FF      CMP #$FF
 +
.C:9f6e  F0 F4      BEQ $9F64
 +
.C:9f70  E6 7A      INC $7A
 +
.C:9f72  D0 02      BNE $9F76
 +
.C:9f74  E6 7B      INC $7B
 +
.C:9f76  4C 79 00    JMP $0079
 +
.C:9f79  00          BRK
 +
.C:9f7a  00          BRK
 +
.C:9f7b  00          BRK
 +
.C:9f7c  00          BRK
 +
.C:9f7d  00          BRK
 +
.C:9f7e  00          BRK
 +
.C:9f7f  00          BRK
 +
.C:9f80  00          BRK
 +
.C:9f81  00          BRK
 +
.C:9f82  00          BRK
 +
.C:9f83  00          BRK
 +
.C:9f84  00          BRK
 +
.C:9f85  00          BRK
 +
.C:9f86  0D 53 4F    ORA $4F53 // File Name with suffix 2
 +
.C:9f89  4F 50 45    SRE $4550
 +
.C:9f8c  52          JAM
 +
.C:9f8d  20 46 52    JSR $5246
 +
.C:9f90  4F 4F 54    SRE $544F
 +
.C:9f93  32          JAM

Revision as of 21:50, 1 May 2026


Content

Side 0
Side 1

Side 1 is empty.

Source 1

Property Data
Title 6 Games Programs
Publisher and/or Developer Commodore UK Ltd.
Year 1983?
Disk(s) 1
Number of Index Holes ?
Media Type 5.25 DSDD
Retail, Budget or Compilation (with name) Compilation
Country of Release UK
Language(s) English
Platform C64
NTSC or PAL PAL
Protection Checks for error on track 1 sector 5
Working? Yes
Archived 14 Mar 2026 enigma/parser, provided by @rndt@F64
Verified by enigma
Streams

File:Streams Commodore 6GamesPrograms arndt.zip

G64

File:Commodore 6GamesPrograms arndt s0.g64

Disk side 1 is empty.

Additional Information

From internet:

The initial loader loads to $9E80 and then decrypts with

0225 a2 00    ldx #$00
0227 a0 08    ldy #$08
0229 bd 80 9e lda $9e80,x
022c 8d 3f 02 sta $023f
022f 0e 3f 02 asl $023f
0232 6a       ror a
0233 88       dey 
0234 d0 f9    bne $022f
0236 9d 80 9e sta $9e80,x
0239 e8       inx 
023a d0 eb    bne $0227
023c 4c 80 9e jmp $9e80

The routine is the same for all games.

The decrypted routine that loads the game looks like this:

.C:9e80  20 CC FF    JSR $FFCC // CLRCHN
.C:9e83  A9 0F       LDA #$0F
.C:9e85  A2 08       LDX #$08
.C:9e87  A0 0F       LDY #$0F
.C:9e89  20 BA FF    JSR $FFBA // SETLFS
.C:9e8c  A9 02       LDA #$02
.C:9e8e  A2 DD       LDX #$DD
.C:9e90  A0 9E       LDY #$9E
.C:9e92  20 BD FF    JSR $FFBD // SETNAM
.C:9e95  20 C0 FF    JSR $FFC0 // OPEN
.C:9e98  A9 02       LDA #$02
.C:9e9a  A2 08       LDX #$08
.C:9e9c  A0 02       LDY #$02
.C:9e9e  20 BA FF    JSR $FFBA // SETLFS
.C:9ea1  A9 01       LDA #$01
.C:9ea3  A2 DF       LDX #$DF
.C:9ea5  A0 9E       LDY #$9E
.C:9ea7  20 BD FF    JSR $FFBD // SETNAM
.C:9eaa  20 C0 FF    JSR $FFC0 // OPEN
.C:9ead  A2 0F       LDX #$0F
.C:9eaf  20 C9 FF    JSR $FFC9 // CHKOUT
.C:9eb2  A0 00       LDY #$00
.C:9eb4  B9 D1 9E    LDA $9ED1,Y
.C:9eb7  F0 06       BEQ $9EBF
.C:9eb9  20 D2 FF    JSR $FFD2 // CHROUT
.C:9ebc  C8          INY
.C:9ebd  D0 F5       BNE $9EB4
.C:9ebf  20 CC FF    JSR $FFCC // CLRCHN
.C:9ec2  A2 0F       LDX #$0F
.C:9ec4  20 C6 FF    JSR $FFC6 // CHKIN
.C:9ec7  20 CF FF    JSR $FFCF // CHRIN
.C:9eca  C9 32       CMP #$32
.C:9ecc  F0 12       BEQ $9EE0
.C:9ece  6C FC FF    JMP ($FFFC) // RESET
.C:9ed1  55 31       EOR $31,X // This is sent to disk drive
.C:9ed3  3A          NOOP
.C:9ed4  32          JAM
.C:9ed5  20 30 20    JSR $2030
.C:9ed8  31 20       AND ($20),Y
.C:9eda  35 0D       AND $0D,X
.C:9edc  00          BRK
.C:9edd  49 30       EOR #$30
.C:9edf  23 20       RLA ($20,X)
.C:9ee1  CC FF A9    CPY $A9FF
.C:9ee4  0F 20 C3    SLO $C320
.C:9ee7  FF A9 02    ISB $02A9,X
.C:9eea  20 C3 FF    JSR $FFC3 // CLOSE
.C:9eed  A2 01       LDX #$01
.C:9eef  A0 08       LDY #$08
.C:9ef1  18          CLC
.C:9ef2  20 9C FF    JSR $FF9C // MEMBOT
.C:9ef5  A9 01       LDA #$01
.C:9ef7  A2 08       LDX #$08
.C:9ef9  A0 00       LDY #$00
.C:9efb  20 BA FF    JSR $FFBA // SETLFS
.C:9efe  AD 86 9F    LDA $9F86
.C:9f01  A2 87       LDX #$87
.C:9f03  A0 9F       LDY #$9F
.C:9f05  20 BD FF    JSR $FFBD // SETNAM
.C:9f08  A9 00       LDA #$00
.C:9f0a  A2 01       LDX #$01
.C:9f0c  A0 08       LDY #$08
.C:9f0e  20 D5 FF    JSR $FFD5 // LOAD
.C:9f11  90 03       BCC $9F16
.C:9f13  6C FC FF    JMP ($FFFC) // RESET
.C:9f16  86 2D       STX $2D
.C:9f18  84 2E       STY $2E
.C:9f1a  A5 2B       LDA $2B
.C:9f1c  48          PHA
.C:9f1d  A5 2C       LDA $2C
.C:9f1f  48          PHA
.C:9f20  A0 00       LDY #$00
.C:9f22  A2 08       LDX #$08
.C:9f24  B1 2B       LDA ($2B),Y
.C:9f26  0A          ASL A
.C:9f27  6E 79 9F    ROR $9F79
.C:9f2a  CA          DEX
.C:9f2b  D0 F9       BNE $9F26
.C:9f2d  AD 79 9F    LDA $9F79
.C:9f30  91 2B       STA ($2B),Y
.C:9f32  E6 2B       INC $2B
.C:9f34  D0 02       BNE $9F38
.C:9f36  E6 2C       INC $2C
.C:9f38  A5 2C       LDA $2C
.C:9f3a  C5 2E       CMP $2E
.C:9f3c  D0 E4       BNE $9F22
.C:9f3e  A5 2B       LDA $2B
.C:9f40  C5 2D       CMP $2D
.C:9f42  D0 DE       BNE $9F22
.C:9f44  68          PLA
.C:9f45  85 2C       STA $2C
.C:9f47  68          PLA
.C:9f48  85 2B       STA $2B
.C:9f4a  20 33 A5    JSR $A533 // 	Re-link BASIC program
.C:9f4d  A2 15       LDX #$15
.C:9f4f  BD 6A 9F    LDA $9F6A,X
.C:9f55  CA          DEX
.C:9f56  10 F7       BPL $9F4F
.C:9f58  A9 4C       LDA #$4C
.C:9f5a  85 73       STA $73
.C:9f5c  A9 AD       LDA #$AD
.C:9f5e  85 74       STA $74
.C:9f60  A9 02       LDA #$02
.C:9f62  85 75       STA $75
.C:9f64  20 8E A6    JSR $A68E // Set program pointer to BASIC-start
.C:9f67  4C AE A7    JMP $A7AE // Interpreter loop, set up next statement for execution
.C:9f6a  A5 3A       LDA $3A
.C:9f6c  C9 FF       CMP #$FF
.C:9f6e  F0 F4       BEQ $9F64
.C:9f70  E6 7A       INC $7A
.C:9f72  D0 02       BNE $9F76
.C:9f74  E6 7B       INC $7B
.C:9f76  4C 79 00    JMP $0079
.C:9f79  00          BRK
.C:9f7a  00          BRK
.C:9f7b  00          BRK
.C:9f7c  00          BRK
.C:9f7d  00          BRK
.C:9f7e  00          BRK
.C:9f7f  00          BRK
.C:9f80  00          BRK
.C:9f81  00          BRK 
.C:9f82  00          BRK
.C:9f83  00          BRK
.C:9f84  00          BRK
.C:9f85  00          BRK
.C:9f86  0D 53 4F    ORA $4F53 // File Name with suffix 2
.C:9f89  4F 50 45    SRE $4550
.C:9f8c  52          JAM
.C:9f8d  20 46 52    JSR $5246
.C:9f90  4F 4F 54    SRE $544F
.C:9f93  32          JAM