projects:sprite_clock
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | projects:sprite_clock [2015-04-17 04:35] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Sprite Clock ====== | ||
+ | Download: {{: | ||
+ | |||
+ | Simple IRQ clock for C64 that uses sprite objects for presentation. | ||
+ | |||
+ | < | ||
+ | ;SPRITE IRQ CLOCK (C) M.K. HOMEBREW COMPUTERS INC. | ||
+ | ; Code below compiles with CC65 assembler: | ||
+ | ; cl65 --verbose --listing spriteclock.asm | ||
+ | ; Use HEX editor to insert "00 C0" at the beginning | ||
+ | ; of the executable to be able to run it on C64 or | ||
+ | ; in emulator. | ||
+ | ; Usage: | ||
+ | ; LOAD" | ||
+ | ; CLR:NEW | ||
+ | ; SYS49152," | ||
+ | ; Where: | ||
+ | ; HH - hours, MM - minutes, SS - seconds | ||
+ | ; Turn clock off: | ||
+ | ; SYS49152 | ||
+ | ; Clock works in IRQ interrupt. Presentation is made | ||
+ | ; with sprites (clock digits are mapped to sprite | ||
+ | ; objects and displayed on screen). It is possible | ||
+ | ; to use C64 while this clock works. Oddly enough, | ||
+ | ; this clock seems to be interfering with I/O while | ||
+ | ; running on real HW (unable to use disk drive or | ||
+ | ; tape, will hung) but works fine in emulator. | ||
+ | ; My C64 is the C (european) version (in C128 like | ||
+ | ; case), that I use in USA using voltage converter. | ||
+ | ; If you find the bug, please let me know! | ||
+ | ; My contact: makarcz@yahoo.com | ||
+ | |||
+ | VIC = 53248 ;VIC Base | ||
+ | WSKSP0 | ||
+ | WSKSP1 | ||
+ | WSKSP2 | ||
+ | BLOK13 | ||
+ | BLOK14 | ||
+ | BLOK15 | ||
+ | IRQWKT | ||
+ | POBZNA | ||
+ | PRZECT | ||
+ | ANAWYR | ||
+ | POBTXT | ||
+ | |||
+ | .ORG $C000 | ||
+ | |||
+ | JMP STEROW | ||
+ | LICZNIK: | ||
+ | WZORCE: | ||
+ | CZAS: .BYTE 1, | ||
+ | LICZPOZ: | ||
+ | CYF0: .BYTE 0, | ||
+ | .BYTE 204, | ||
+ | CYF1: .BYTE 0, | ||
+ | .BYTE 12,12,12,12 | ||
+ | CYF2: .BYTE 0, | ||
+ | .BYTE 252, | ||
+ | CYF3: .BYTE 0,252,12,12 | ||
+ | .BYTE 60, | ||
+ | CYF4: .BYTE 0, | ||
+ | .BYTE 252, | ||
+ | CYF5: .BYTE 0, | ||
+ | .BYTE 12, | ||
+ | CYF6: .BYTE 0, | ||
+ | .BYTE 252, | ||
+ | CYF7: .BYTE 0,252,12,24 | ||
+ | .BYTE 48, | ||
+ | CYF8: .BYTE 0, | ||
+ | .BYTE 252, | ||
+ | CYF9: .BYTE 0, | ||
+ | .BYTE 252, | ||
+ | DWUKR: | ||
+ | .BYTE 0,48,48,0 | ||
+ | COPY: LDX #$00 | ||
+ | LDY #$00 | ||
+ | LOOP1: | ||
+ | BLKNR: | ||
+ | CPX #7 | ||
+ | BEQ POZ | ||
+ | INY | ||
+ | INY | ||
+ | INY | ||
+ | INX | ||
+ | JMP LOOP1 | ||
+ | POZ: RTS | ||
+ | IRQROM: | ||
+ | MAIN: DEC LICZNIK | ||
+ | BNE IRQROM | ||
+ | LDA #60 | ||
+ | STA LICZNIK | ||
+ | LDA CZAS | ||
+ | LDX #3 | ||
+ | CMP #2 | ||
+ | BEQ NOC | ||
+ | LDX #9 | ||
+ | NOC: STX WZORCE+1 | ||
+ | LDX #5 | ||
+ | NXTCYF: | ||
+ | INC CZAS,X | ||
+ | CMP WZORCE,X | ||
+ | BNE KOP1 | ||
+ | LDA #$00 | ||
+ | STA CZAS,X | ||
+ | DEX | ||
+ | BPL NXTCYF | ||
+ | KOP1: LDA #$00 | ||
+ | STA LICZPOZ | ||
+ | LDX #<CZAS | ||
+ | LDY #>CZAS | ||
+ | STX KOPIUJ+1 | ||
+ | STY KOPIUJ+3 | ||
+ | LDX #<BLOK13 | ||
+ | LDY #>BLOK13 | ||
+ | STX POS0B+1 | ||
+ | STY POS0C+1 | ||
+ | KOPIUJ: | ||
+ | LDY #>CZAS | ||
+ | STX POS0+1 | ||
+ | STY POS0+2 | ||
+ | POS0: LDA CZAS | ||
+ | CMP #$00 | ||
+ | BNE NIE00 | ||
+ | LDX #<CYF0 | ||
+ | LDY #>CYF0 | ||
+ | POS0A: | ||
+ | STY LOOP1+2 | ||
+ | POS0B: | ||
+ | POS0C: | ||
+ | STX BLKNR+1 | ||
+ | STY BLKNR+2 | ||
+ | JSR COPY | ||
+ | JMP POS1 | ||
+ | NIE00: | ||
+ | BNE NIE01 | ||
+ | LDX #<CYF1 | ||
+ | LDY #>CYF1 | ||
+ | JMP POS0A | ||
+ | NIE01: | ||
+ | BNE NIE02 | ||
+ | LDX #<CYF2 | ||
+ | LDY #>CYF2 | ||
+ | JMP POS0A | ||
+ | NIE02: | ||
+ | BNE NIE03 | ||
+ | LDX #<CYF3 | ||
+ | LDY #>CYF3 | ||
+ | JMP POS0A | ||
+ | NIE03: | ||
+ | BNE NIE04 | ||
+ | LDX #<CYF4 | ||
+ | LDY #>CYF4 | ||
+ | JMP POS0A | ||
+ | NIE04: | ||
+ | BNE NIE05 | ||
+ | LDX #<CYF5 | ||
+ | LDY #>CYF5 | ||
+ | JMP POS0A | ||
+ | NIE05: | ||
+ | BNE NIE06 | ||
+ | LDX #<CYF6 | ||
+ | LDY #>CYF6 | ||
+ | JMP POS0A | ||
+ | NIE06: | ||
+ | BNE NIE07 | ||
+ | LDX #<CYF7 | ||
+ | LDY #>CYF7 | ||
+ | JMP POS0A | ||
+ | NIE07: | ||
+ | BNE NIE08 | ||
+ | LDX #<CYF8 | ||
+ | LDY #>CYF8 | ||
+ | JMP POS0A | ||
+ | NIE08: | ||
+ | LDY #>CYF9 | ||
+ | JMP POS0A | ||
+ | POS1: INC KOPIUJ+1 | ||
+ | LDA KOPIUJ+1 | ||
+ | CMP #$00 | ||
+ | BNE POS1A | ||
+ | INC KOPIUJ+3 | ||
+ | POS1A: | ||
+ | LDA LICZPOZ | ||
+ | CMP #1 | ||
+ | BNE POS1B | ||
+ | LDX #< | ||
+ | LDY #> | ||
+ | POS1A1: | ||
+ | STY POS0C+1 | ||
+ | JMP KOPIUJ | ||
+ | POS1B: | ||
+ | BNE POS1C | ||
+ | LDX #<BLOK14 | ||
+ | LDY #>BLOK14 | ||
+ | JMP POS1A1 | ||
+ | POS1C: | ||
+ | BNE POS1D | ||
+ | LDX #< | ||
+ | LDY #> | ||
+ | JMP POS1A1 | ||
+ | POS1D: | ||
+ | BNE POS1E | ||
+ | LDX #<BLOK15 | ||
+ | LDY #>BLOK15 | ||
+ | JMP POS1A1 | ||
+ | POS1E: | ||
+ | BNE POS1F | ||
+ | LDX #< | ||
+ | LDY #> | ||
+ | JMP POS1A1 | ||
+ | POS1F: | ||
+ | START: | ||
+ | LDA #$00 | ||
+ | STLOOP: | ||
+ | STA BLOK14,X | ||
+ | STA BLOK15,X | ||
+ | INX | ||
+ | CPX #63 | ||
+ | BEQ ST1 | ||
+ | JMP STLOOP | ||
+ | ST1: LDX #$00 | ||
+ | LDY #$00 | ||
+ | ST1LOOP: LDA DWUKR,X | ||
+ | STA BLOK13+2,Y | ||
+ | STA BLOK14+2,Y | ||
+ | INX | ||
+ | CPX #8 | ||
+ | BEQ ST2 | ||
+ | INY | ||
+ | INY | ||
+ | INY | ||
+ | JMP ST1LOOP | ||
+ | ST2: LDX #13 | ||
+ | STX WSKSP0 | ||
+ | INX | ||
+ | STX WSKSP1 | ||
+ | INX | ||
+ | STX WSKSP2 | ||
+ | KOLOR: | ||
+ | STA VIC+39 | ||
+ | STA VIC+40 | ||
+ | STA VIC+41 | ||
+ | LDA #%00000110 | ||
+ | STA VIC+16 | ||
+ | LDA #215 | ||
+ | LDX #50 | ||
+ | STA VIC | ||
+ | STX VIC+1 | ||
+ | LDA #7 | ||
+ | STA VIC+2 | ||
+ | STX VIC+3 | ||
+ | ADC #48 | ||
+ | STA VIC+4 | ||
+ | STX VIC+5 | ||
+ | LDA #%00000111 | ||
+ | STA VIC+23 | ||
+ | STA VIC+29 | ||
+ | STA VIC+27 | ||
+ | STA VIC+21 | ||
+ | LDX #<MAIN | ||
+ | LDY #>MAIN | ||
+ | SEI | ||
+ | STX IRQWKT | ||
+ | STY IRQWKT+1 | ||
+ | CLI | ||
+ | RTS | ||
+ | STEROW: | ||
+ | BEQ WYLACZ | ||
+ | JSR PRZECT | ||
+ | JSR ANAWYR | ||
+ | ROL 13 | ||
+ | BCS NASTAW | ||
+ | ILLQUA: | ||
+ | NASTAW: | ||
+ | CMP #6 | ||
+ | BNE ILLQUA | ||
+ | LDY #5 | ||
+ | SEI | ||
+ | NASTPE: | ||
+ | SEC | ||
+ | SBC #48 | ||
+ | STA CZAS,Y | ||
+ | DEY | ||
+ | BPL NASTPE | ||
+ | LDA #60 | ||
+ | STA LICZNIK | ||
+ | CLI | ||
+ | JMP START | ||
+ | WYLACZ: | ||
+ | LDY #$EA | ||
+ | SEI | ||
+ | STX IRQWKT | ||
+ | STY IRQWKT+1 | ||
+ | CLI | ||
+ | LDA #$00 | ||
+ | STA VIC+21 | ||
+ | RTS | ||
+ | |||
+ | </ |
projects/sprite_clock.txt · Last modified: 2015-04-17 04:35 by 127.0.0.1