mirror of
https://github.com/AppleWin/AppleWin.git
synced 2024-12-23 16:30:23 +00:00
258 lines
8.2 KiB
Plaintext
258 lines
8.2 KiB
Plaintext
No-Slot-Clock (Dallas SmartWatch DS1216) GEOS driver "NoSlot Clock".
|
|
Partial disassembly and comments by Nick Westgate (and CiderPress).
|
|
|
|
Note: This code requires the clock to be in the internal C8 ROM space. (CD or CF ROM sockets.)
|
|
|
|
0800- 4C 15 08 JMP $0815 ;read time
|
|
0803- 4C B8 08 JMP $08B8
|
|
0806- 4C BC 08 JMP $08BC ;write time
|
|
0809- 4C E4 08 JMP $08E4
|
|
080C- 4C F1 08 JMP $08F1
|
|
080F- 4C 12 08 JMP $0812
|
|
0812- A2 30 LDX #$30
|
|
0814- 60 RTS
|
|
0815- A9 00 LDA #$00
|
|
0817- 10 37 BPL $0850
|
|
0819- A9 3B LDA #$3B
|
|
081B- 8D 16 08 STA $0816
|
|
081E- 20 6E 08 JSR $086E ;init clock
|
|
0821- 20 93 08 JSR $0893 ;get clock data byte (0, discard centiseconds)
|
|
0824- A2 03 LDX #$03 ;(4 bytes)
|
|
0826- 20 93 08 JSR $0893 ;get clock data byte (1-4 -> F202-F205: day h m s)
|
|
0829- 9D 02 F2 STA $F202,X
|
|
082C- CA DEX
|
|
082D- 10 F7 BPL $0826
|
|
082F- A2 02 LDX #$02 ;(3 bytes, this overwrites day at F202)
|
|
0831- 20 93 08 JSR $0893 ;get clock data byte (5-7 -> F200-F202: Y M D)
|
|
0834- 9D 00 F2 STA $F200,X
|
|
0837- CA DEX
|
|
0838- 10 F7 BPL $0831
|
|
083A- 2C 06 F2 BIT $F206
|
|
083D- 10 11 BPL $0850
|
|
083F- AD 03 F2 LDA $F203
|
|
0842- C9 FF CMP #$FF
|
|
0844- D0 0A BNE $0850
|
|
0846- AD 04 F2 LDA $F204
|
|
0849- C9 FF CMP #$FF
|
|
084B- D0 03 BNE $0850
|
|
084D- 4E 06 F2 LSR $F206
|
|
0850- 4C DB 08 JMP $08DB ;exit safely
|
|
|
|
0853- A9 00 LDA #$00 ;*** write 0 byte to clock
|
|
0855- 84 09 STY $09 ;*** write byte to clock
|
|
0857- 38 SEC
|
|
0858- A0 FF LDY #$FF
|
|
085A- C8 INY
|
|
085B- E9 0A SBC #$0A
|
|
085D- 10 FB BPL $085A
|
|
085F- 69 0A ADC #$0A
|
|
0861- 85 07 STA $07
|
|
0863- 98 TYA
|
|
0864- 0A ASL
|
|
0865- 0A ASL
|
|
0866- 0A ASL
|
|
0867- 0A ASL
|
|
0868- 05 07 ORA $07
|
|
086A- A0 00 LDY #$00
|
|
086C- F0 11 BEQ $087F
|
|
|
|
086E- 78 SEI ;*** init clock
|
|
086F- AD 15 C0 LDA $C015 r:RDCXROM
|
|
0872- 85 0F STA $0F
|
|
0874- 8D 07 C0 STA $C007 w:SETINTCXROM
|
|
0877- AD 04 C8 LDA $C804
|
|
087A- A0 07 LDY #$07
|
|
087C- B9 F7 08 LDA $08F7,Y
|
|
087F- 38 SEC
|
|
0880- 6A ROR
|
|
0881- A2 00 LDX #$00
|
|
0883- 90 02 BCC $0887
|
|
0885- A2 01 LDX #$01
|
|
0887- DD 00 C8 CMP $C800,X
|
|
088A- 4A LSR
|
|
088B- D0 F4 BNE $0881
|
|
088D- 88 DEY
|
|
088E- 10 EC BPL $087C
|
|
0890- A4 09 LDY $09
|
|
0892- 60 RTS
|
|
|
|
0893- A0 07 LDY #$07 ;*** get clock data byte (convert BCD to hex)
|
|
0895- AD 04 C8 LDA $C804
|
|
0898- 6A ROR
|
|
0899- 66 07 ROR $07
|
|
089B- 88 DEY
|
|
089C- 10 F7 BPL $0895
|
|
089E- A5 07 LDA $07
|
|
08A0- A8 TAY
|
|
08A1- 29 0F AND #$0F
|
|
08A3- 85 07 STA $07
|
|
08A5- 98 TYA
|
|
08A6- 4A LSR
|
|
08A7- 4A LSR
|
|
08A8- 4A LSR
|
|
08A9- 4A LSR
|
|
08AA- 18 CLC
|
|
08AB- A8 TAY
|
|
08AC- F0 07 BEQ $08B5
|
|
08AE- A9 00 LDA #$00
|
|
08B0- 69 0A ADC #$0A
|
|
08B2- 88 DEY
|
|
08B3- D0 FB BNE $08B0
|
|
08B5- 65 07 ADC $07
|
|
08B7- 60 RTS
|
|
08B8- CE 16 08 DEC $0816
|
|
08BB- 60 RTS
|
|
|
|
08BC- 20 6E 08 JSR $086E ;init clock
|
|
08BF- 20 53 08 JSR $0853 ;write 0 byte to clock
|
|
08C2- A0 02 LDY #$02
|
|
08C4- B9 03 00 LDA $0003,Y
|
|
08C7- 20 55 08 JSR $0855 ;write byte to clock
|
|
08CA- 88 DEY
|
|
08CB- 10 F7 BPL $08C4
|
|
08CD- 20 53 08 JSR $0853 ;write 0 byte to clock
|
|
08D0- A0 02 LDY #$02
|
|
08D2- B9 00 00 LDA $0000,Y
|
|
08D5- 20 55 08 JSR $0855 ;write byte to clock
|
|
08D8- 88 DEY
|
|
08D9- 10 F7 BPL $08D2
|
|
|
|
08DB- 26 0F ROL $0F ;prepare for exit
|
|
08DD- B0 03 BCS $08E2
|
|
08DF- 8D 06 C0 STA $C006 w:SETSLOTCXROM
|
|
08E2- 58 CLI
|
|
08E3- 60 RTS
|
|
|
|
08E4- A5 00 LDA $00
|
|
08E6- 8D 43 08 STA $0843
|
|
08E9- A5 01 LDA $01
|
|
08EB- 8D 4A 08 STA $084A
|
|
08EE- A2 80 LDX #$80
|
|
08F0- 2C A2 00 BIT $00A2
|
|
08F3- 8E 06 F2 STX $F206
|
|
08F6- 60 RTS
|
|
|
|
08F7- 5C A3 3A C5 5C A3 3A C5 ;*** clock pattern
|
|
|
|
08FF- 59
|
|
0900- FA PLX
|
|
0901- 88 DEY
|
|
0902- 10 F8 BPL $08FC
|
|
0904- 20 B7 5C JSR $5CB7
|
|
0907- 68 PLA
|
|
0908- C9 0F CMP #$0F
|
|
090A- D0 03 BNE $090F
|
|
090C- 4C 4C 71 JMP $714C
|
|
090F- C9 80 CMP #$80
|
|
0911- 90 20 BCC $0933
|
|
0913- C9 8E CMP #$8E
|
|
0915- B0 1C BCS $0933
|
|
0917- 20 D7 65 JSR $65D7
|
|
091A- C9 81 CMP #$81
|
|
091C- D0 03 BNE $0921
|
|
091E- 4C D9 93 JMP $93D9
|
|
0921- C9 82 CMP #$82
|
|
0923- F0 04 BEQ $0929
|
|
0925- C9 8A CMP #$8A
|
|
0927- D0 03 BNE $092C
|
|
0929- 4C 6E 71 JMP $716E
|
|
092C- C9 83 CMP #$83
|
|
092E- D0 0A BNE $093A
|
|
0930- 4C 7B 71 JMP $717B
|
|
0933- C9 FF CMP #$FF
|
|
0935- D0 03 BNE $093A
|
|
0937- 4C EA AB JMP $ABEA
|
|
093A- 20 40 71 JSR $7140
|
|
093D- A2 00 LDX #$00
|
|
093F- 60 RTS
|
|
0940- A9 00 LDA #$00
|
|
0942- 8D F8 70 STA $70F8
|
|
0945- A2 72 LDX #$72
|
|
0947- A9 DB LDA #$DB
|
|
0949- 4C 08 4D JMP $4D08
|
|
094C- 20 13 74 JSR $7413
|
|
094F- A9 00 LDA #$00
|
|
0951- 85 AA STA $AA
|
|
0953- 20 91 5D JSR $5D91
|
|
0956- 20 81 03 JSR $0381
|
|
0959- 8A TXA
|
|
095A- F0 03 BEQ $095F
|
|
095C- 4C 64 5E JMP $5E64
|
|
095F- A9 00 LDA #$00
|
|
0961- 85 70 STA $70
|
|
0963- 68 PLA
|
|
0964- 68 PLA
|
|
0965- 20 32 5F JSR $5F32
|
|
0968- 8A TXA
|
|
0969- D0 F1 BNE $095C
|
|
096B- 4C 45 5F JMP $5F45
|
|
096E- A9 FF LDA #$FF
|
|
0970- 48 PHA
|
|
0971- A9 58 LDA #$58
|
|
0973- 48 PHA
|
|
0974- A9 00 LDA #$00
|
|
0976- 85 00 STA $00
|
|
0978- 4C 8D 03 JMP $038D
|
|
097B- A9 80 LDA #$80
|
|
097D- 8D B1 61 STA $61B1
|
|
0980- 20 D7 4D JSR $4DD7
|
|
0983- A5 12 LDA $12
|
|
0985- 18 CLC
|
|
0986- 69 01 ADC #$01
|
|
0988- 85 08 STA $08
|
|
098A- A5 13 LDA $13
|
|
098C- 69 00 ADC #$00
|
|
098E- 85 09 STA $09
|
|
0990- A9 12 LDA #$12
|
|
0992- 85 07 STA $07
|
|
0994- A9 85 LDA #$85
|
|
0996- 85 06 STA $06
|
|
0998- A2 08 LDX #$08
|
|
099A- A0 06 LDY #$06
|
|
099C- 20 61 4D JSR $4D61
|
|
099F- A9 12 LDA #$12
|
|
09A1- 85 05 STA $05
|
|
09A3- A9 71 LDA #$71
|
|
09A5- 85 04 STA $04
|
|
09A7- A2 08 LDX #$08
|
|
09A9- 20 98 64 JSR $6498
|
|
09AC- A2 08 LDX #$08
|
|
09AE- A0 04 LDY #$04
|
|
09B0- A9 0F LDA #$0F
|
|
09B2- 20 EA FE JSR $FEEA
|
|
09B5- A9 00 LDA #$00
|
|
09B7- 8D 80 12 STA $1280
|
|
09BA- A0 1F LDY #$1F
|
|
09BC- B1 12 LDA ($12),Y
|
|
09BE- 85 02 STA $02
|
|
09C0- C8 INY
|
|
09C1- B1 12 LDA ($12),Y
|
|
09C3- 85 03 STA $03
|
|
09C5- 20 24 66 JSR $6624
|
|
09C8- F0 0B BEQ $09D5
|
|
09CA- 20 3C 4E JSR $4E3C
|
|
09CD- A5 80 LDA $80
|
|
09CF- 8D 0D F6 STA $F60D
|
|
09D2- 4C C2 5E JMP $5EC2
|
|
09D5- AD CE F6 LDA $F6CE
|
|
09D8- D0 03 BNE $09DD
|
|
09DA- 4C 40 71 JMP $7140
|
|
09DD- A9 F6 LDA #$F6
|
|
09DF- 85 03 STA $03
|
|
09E1- A9 CE LDA #$CE
|
|
09E3- 85 02 STA $02
|
|
09E5- A9 12 LDA #$12
|
|
09E7- 85 15 STA $15
|
|
09E9- A9 99 LDA #$99
|
|
09EB- 85 14 STA $14
|
|
09ED- A2 02 LDX #$02
|
|
09EF- A0 14 LDY #$14
|
|
09F1- A9 0C LDA #$0C
|
|
09F3- 20 63 4D JSR $4D63
|
|
09F6- 20 3F 72 JSR $723F
|
|
09F9- 8A TXA
|
|
09FA- D0 CE BNE $09CA
|
|
09FC- AD 21 12 LDA $1221
|
|
09FF- D0 00 BNE $0A01
|
|
0A01- 00 BRK
|