AS65 Assembler for R6502 [1.11]. Page 1 --------------------------------- DCFORG.ASM --------------------------------- ;from E l e k t u u r april 1982 p.4-40 ;for Universele tijdsein-processor (with DCF-77) ;E l e k t u u r 1981 september p.9-50 0000 = SWDAYA equ $0000 ;SCHAKELDAGEN 0001 = TREG equ $0001 ;VOOR T0. 0002 = SWTMAA equ $0002 ;SCHAKELTIJDEN ;VOOR T0. 000a = COUNTA equ $000A ;LIJNTELLER. 000b = COUNTB equ $000B ;REGELTELLER. 000c = COUNTD equ $000C 000d = MDELAY equ $000D 000e = COUNTL equ $000E 000f = COUNTH equ $000F 0010 = SWDAYB equ $0010 ;SCHAKELDAGEN 0011 = BLNKCT equ $0011 ;VOOR T1. 0012 = SWTMBA equ $0012 ;SCHAKELTIJDEN ;VOOR T1. 001a = STOR equ $001A 001b = DUMP equ $001B 001c = INADL equ $001C 001d = INADH equ $001D 0020 = SWDAYC equ $0020 ;SCHAKELDAGEN 0021 = COUNTC equ $0021 ;VOOR T2. 0022 = SWTMCA equ $0022 ;SCHAKELTIJDEN ;VOOR T2. 002a = SWTMDA equ $002A ;SCHAKELSAGEN ;VOOR T3. 003e = SWDYA equ $003E ;SCHAKELTIJDEN ;VOOR T3. 0048 = SEC equ $0048 ;INTERN 0049 = MIN equ $0049 ;OPGEWEKTE 004a = HOUR equ $004A ;TIJD 004b = CLDAY equ $004B ;EN 004c = WKDAY equ $004C ;DATUM 004d = MONTH equ $004D 004e = YEAR equ $004E 004f = MINO equ $004F ;ONTVANGEN 0050 = HOURO equ $0050 ;TIJD- EN 0051 = CldaYO equ $0051 ;DATUM- 0052 = WKDAYO equ $0052 ;INFORMATIE 0053 = MONTHO equ $0053 ;VAN DE VORIGE 0054 = YEARO equ $0054 ;MINUUT 0055 = MINN equ $0055 ;ONTVANGEN 0056 = HOURN equ $0056 ;TIJD- EN 0057 = CldaYN equ $0057 ;DATUM- 0058 = WKDAYN equ $0058 ;INFORMATIE 0059 = MONTHN equ $0059 ;VAN DE LOPENDE 005a = YEARN equ $005A ;MINUUT 005b = TEMPX equ $005B 005c = TEMPY equ $005C 005d = PARITY equ $005D 005e = INDEX equ $005E 005f = SECDCF equ $005F 0060 = FAIL equ $0060 0061 = TEMP equ $0061 0062 = KEY equ $0062 0063 = DATA equ $0063 0064 = TEMPBD equ $0064 0065 = CNT equ $0065 0066 = DPD equ $0066 ;DISPLAY- 0067 = DPC equ $0067 0068 = DPB equ $0068 0069 = DPA equ $0069 ;BUFFERS ;PIA 0080 = PAD equ $0080 ;6532 0081 = PADD equ $0081 ;I/O 0082 = PBD equ $0082 ;EN 0083 = PBDD equ $0083 ;TIMER 0085 = PEDGED equ $0085 0087 = RDFLAG equ $0087 009e = CNTG equ $009E 009f = CNTH equ $009F 0400 = LATCH equ $400 ; 0800 = org $800 ; 0800 : d8 INITS cld 0801 : a9ff lda #$FF 0803 : aa tax 0804 : e8 SET inx 0805 : 9500 sta SWDAYA,x 0807 : e03d cpx #$3D 0809 : d0f9 bne SET 080b : a988 lda #$88 080d : e8 LOAD inx 080e : 9500 sta SWDAYA,x 0810 : e047 cpx #$47 0812 : d0f9 bne LOAD 0814 : a900 lda #$00 0816 : 850f sta COUNTH 0818 : 8521 sta COUNTC 081a : 8d0004 sta LATCH 081d : aa tax 081e : 9548 CLRREG sta SEC,x 0820 : e8 inx 0821 : e03e cpx #$3E 0823 : d0f9 bne CLRREG 0825 : e64c inc WKDAY 0827 : e661 inc TEMP 0829 : a97f lda #$7F 082b : 8581 sta PADD 082d : 8583 sta PBDD 082f : 8560 sta FAIL 0831 : aa tax 0832 : 9a txs ;set stack pointer to top 0833 : 58 cli 0834 : 00 brk ; 0835 : ea nop 0836 : ea nop ; ; 0837 : 204409 DCFCLK jsr DPTIME 083a : c9ff cmp #$FF 083c : d0f9 bne DCFCLK 083e : a587 DCF lda RDFLAG 0840 : a200 ldx #$00 0842 : a000 ldy #$00 0844 : 2487 DETECT bit RDFLAG 0846 : 5011 bvc ONEMIN 0848 : a200 ldx #$00 084a : e8 INCX inx 084b : c8 INCY iny 084c : 208c0b jsr DISPLY 084f : c028 cpy #$28 0851 : f05c beq DECODE 0853 : a580 lda PAD 0855 : 10f4 bpl INCY 0857 : 30f1 bmi INCX 0859 : 208c0b ONEMIN jsr DISPLY 085c : e8 inx 085d : e028 cpx #$28 085f : d0e3 bne DETECT 0861 : a55f lda SECDCF 0863 : c959 cmp #$59 0865 : d03f bne RESET 0867 : a296 ldx #$96 0869 : 208c0b DELAY jsr DISPLY 086c : ca dex 086d : d0fa bne DELAY 086f : a207 ldx #$07 0871 : a006 ldy #$06 0873 : 209f09 jsr KLK 0876 : a205 ldx #$05 0878 : b54f CHK lda MINO,x 087a : d555 cmp MINN,x 087c : d01f bne FAILT 087e : ca dex 087f : 10f7 bpl CHK 0881 : a205 ldx #$05 0883 : b555 TRANSF lda MINN,x 0885 : 954f sta MINO,x 0887 : 9549 sta MIN,x 0889 : ca dex 088a : 10f7 bpl TRANSF 088c : 203209 jsr CLR 088f : a208 ldx #$08 0891 : 8661 stx TEMP 0893 : a2d8 ldx #$D8 0895 : 869f stx CNTH 0897 : 8548 sta SEC 0899 : 8560 sta FAIL 089b : 30a1 bmi DCF 089d : a205 FAILT ldx #$05 089f : b555 TRFER lda MINN,x 08a1 : 954f sta MINO,x 08a3 : ca dex 08a4 : 10f9 bpl TRFER 08a6 : a2ff RESET ldx #$FF 08a8 : 8660 stx FAIL 08aa : 203209 jsr CLR 08ad : 308f bmi DCF 08af : e00a DECODE cpx #$0A ;'1' = t > 150 ms 08b1 : 90f3 bcc RESET ;'0' = 50 ms < t < 150 ms 08b3 : e01e cpx #$1E ;'invalid' t < 50 ms 08b5 : 9004 bcc ZERO 08b7 : a980 lda #$80 08b9 : d002 bne ONE 08bb : a900 ZERO lda #$00 08bd : 8563 ONE sta DATA 08bf : a45f ldy SECDCF 08c1 : c020 cpy #$20 08c3 : 902b bcc INCSEC 08c5 : f03c beq BEGCHK 08c7 : a563 lda DATA 08c9 : 1002 bpl SHIFT 08cb : e65d inc PARITY 08cd : a65e SHIFT ldx INDEX 08cf : c028 cpy #$28 08d1 : f038 beq PARCHK 08d3 : c035 cpy #$35 08d5 : f032 beq SHRGHT 08d7 : c041 cpy #$41 08d9 : f03c beq SHIRR 08db : c044 cpy #$44 08dd : f042 beq SHIR 08df : c049 cpy #$49 08e1 : f045 beq SHIRRR 08e3 : c057 cpy #$57 08e5 : f046 beq STDA 08e7 : c058 cpy #$58 08e9 : f020 beq PARCHK 08eb : 1555 ora MINN,x 08ed : 4a lsr a 08ee : 9555 sta MINN,x 08f0 : a296 INCSEC ldx #$96 08f2 : 208c0b DLY jsr DISPLY 08f5 : ca dex 08f6 : d0fa bne DLY 08f8 : 18 clc 08f9 : 98 tya 08fa : f8 sed 08fb : 6901 adc #$01 08fd : d8 cld 08fe : 855f sta SECDCF 0900 : 4c3e08 jmp DCF ; 0903 : a563 BEGCHK lda DATA 0905 : 30e9 bmi INCSEC 0907 : 109d bpl RESET 0909 : 5655 SHRGHT lsr MINN,x 090b : 465d PARCHK lsr PARITY 090d : b097 bcs RESET 090f : a900 lda #$00 0911 : 855d sta PARITY 0913 : e65e inc INDEX 0915 : d0d9 bne INCSEC 0917 : 1555 SHIRR ora MINN,x 0919 : 4a SHI lsr a 091a : 4a lsr a 091b : 9555 STORE sta MINN,x 091d : e65e inc INDEX 091f : d0cf bne INCSEC 0921 : 1555 SHIR ora MINN,x 0923 : 4a lsr a 0924 : 4a lsr a 0925 : 4a lsr a 0926 : 10f1 bpl SHI 0928 : 1555 SHIRRR ora MINN,x 092a : 4a lsr a 092b : 10ec bpl SHI 092d : 1555 STDA ora MINN,x 092f : 4c1b09 jmp STORE ; 0932 : a20a CLR ldx #$0A 0934 : a900 CL lda #$00 0936 : 9555 sta MINN,x 0938 : ca dex 0939 : 10f9 bpl CL 093b : 60 rts ; 093c : 865b DSPLAY stx TEMPX ;display takes 5 ms 093e : 845c sty TEMPY 0940 : 4662 lsr KEY 0942 : 9012 bcc DPDATE 0944 : a202 DPTIME ldx #$02 0946 : b548 DPT lda SEC,x 0948 : e002 cpx #$02 094a : d003 bne DT 094c : 208909 jsr ZEROSU 094f : 9567 DT sta DPC,x 0951 : ca dex 0952 : 10f2 bpl DPT 0954 : 3012 bmi DPWKDG 0956 : a54b DPDATE lda CLDAY 0958 : 208909 jsr ZEROSU 095b : 8569 sta DPA 095d : a54d lda MONTH 095f : 208909 jsr ZEROSU 0962 : 8568 sta DPB 0964 : a54e lda YEAR 0966 : 8567 sta DPC 0968 : a64c DPWKDG ldx WKDAY 096a : a97f lda #$7F 096c : 38 DWD sec 096d : 6a ror a 096e : ca dex 096f : d0fb bne DWD 0971 : 8566 sta DPD 0973 : a560 lda FAIL 0975 : f00a beq DIS 0977 : e611 inc BLNKCT 0979 : e611 inc BLNKCT 097b : 1004 bpl DIS 097d : a9ff lda #$FF 097f : 8566 sta DPD 0981 : 20130b DIS jsr DISP 0984 : a65b ldx TEMPX 0986 : a45c ldy TEMPY 0988 : 60 rts ; 0989 : a8 ZEROSU tay ;suppress leading zero's 098a : f006 beq RTRN 098c : c90f cmp #$0F 098e : b002 bcs RTRN 0990 : 09f0 ora #$F0 0992 : 60 RTRN rts ; 0993 : a000 KLOK ldy #$00 0995 : 200b0a jsr INCDEC 0998 : 4960 eor #$60 099a : d06e bne RTN 099c : 994800 sta SEC,y 099f : 200b0a KLK jsr INCDEC 09a2 : 4960 eor #$60 09a4 : d064 bne RTN 09a6 : 994900 sta MIN,y 09a9 : 200b0a jsr INCDEC 09ac : 4924 eor #$24 09ae : d05a bne RTN 09b0 : 994a00 sta HOUR,y 09b3 : 200b0a jsr INCDEC 09b6 : 200b0a jsr INCDEC 09b9 : c908 cmp #$08 09bb : d005 bne DAG 09bd : a901 lda #$01 09bf : 994c00 sta WKDAY,y 09c2 : b94b00 DAG lda CLDAY,y 09c5 : c929 cmp #$29 09c7 : 3041 bmi RTN 09c9 : c931 cmp #$31 09cb : 3011 bmi FEBR 09cd : 6a ror a 09ce : 9026 bcc CLRKD 09d0 : b94d00 lda MONTH,y 09d3 : c908 cmp #$08 09d5 : 1002 bpl ASOND 09d7 : 49ff eor #$FF 09d9 : 6a ASOND ror a 09da : b01a bcs CLRKD 09dc : 902c bcc RTN 09de : b94d00 FEBR lda MONTH,y 09e1 : c902 cmp #$02 09e3 : d025 bne RTN 09e5 : b94e00 lda YEAR,y 09e8 : 2913 and #$13 09ea : f004 beq SCHRJR 09ec : c912 cmp #$12 09ee : d006 bne CLRKD 09f0 : b94b00 SCHRJR lda CLDAY,y 09f3 : 6a ror a 09f4 : b014 bcs RTN 09f6 : a901 CLRKD lda #$01 09f8 : 994b00 sta CLDAY,y 09fb : 200b0a jsr INCDEC 09fe : c913 cmp #$13 0a00 : d008 bne RTN 0a02 : a901 lda #$01 0a04 : 994d00 sta MONTH,y 0a07 : 200b0a jsr INCDEC 0a0a : 60 RTN rts ; 0a0b : 18 INCDEC clc 0a0c : b548 lda SEC,x 0a0e : f8 sed 0a0f : 6901 adc #$01 0a11 : d8 cld 0a12 : 9548 sta SEC,x 0a14 : e8 inx 0a15 : 60 rts ; 0a16 : 48 IRQ pha 0a17 : 98 tya 0a18 : 48 pha 0a19 : 8a txa 0a1a : 48 pha 0a1b : a900 lda #$00 0a1d : 8581 sta PADD 0a1f : a582 lda PBD 0a21 : 8564 sta TEMPBD 0a23 : c661 dec TEMP 0a25 : f008 beq INCTIM 0a27 : a501 lda TREG 0a29 : a979 lda #$79 0a2b : 859f sta CNTH 0a2d : d01b bne SAVE 0a2f : a982 INCTIM lda #$82 0a31 : 859e sta CNTG 0a33 : a51d lda INADH 0a35 : f007 beq ASCII 0a37 : a548 lda SEC 0a39 : d003 bne ASCII 0a3b : 20580a jsr TIMOUT 0a3e : a200 ASCII ldx #$00 0a40 : 209309 jsr KLOK 0a43 : 20e90a jsr ASCII0 0a46 : a909 lda #$09 0a48 : 8561 sta TEMP 0a4a : a564 SAVE lda TEMPBD 0a4c : 8582 sta PBD 0a4e : a97f lda #$7F 0a50 : 8581 sta PADD 0a52 : 68 pla 0a53 : aa tax 0a54 : 68 pla 0a55 : a8 tay 0a56 : 68 pla 0a57 : 40 rti ; 0a58 : 8501 TIMOUT sta TREG 0a5a : a202 ldx #$02 0a5c : a900 TIME lda #$00 0a5e : a8 tay 0a5f : 8a txa 0a60 : 0a asl a 0a61 : 0a asl a 0a62 : 0a asl a 0a63 : 0a asl a 0a64 : 850e sta COUNTL 0a66 : b10e lda (COUNTL),y 0a68 : 0a asl a 0a69 : a44c ldy WKDAY 0a6b : 0a WEEKDY asl a 0a6c : 88 dey 0a6d : d0fc bne WEEKDY 0a6f : 9008 bcc TICTR 0a71 : a9fe lda #$FE 0a73 : 2501 and TREG 0a75 : 8501 sta TREG 0a77 : b01f bcs NEXTL 0a79 : c8 TICTR iny 0a7a : c8 TIC iny 0a7b : a54a lda HOUR 0a7d : d10e cmp (COUNTL),y 0a7f : f004 beq MINCTR 0a81 : b00a bcs INVTR 0a83 : 9013 bcc NEXTL 0a85 : a549 MINCTR lda MIN 0a87 : c8 iny 0a88 : d10e cmp (COUNTL),y 0a8a : 900c bcc NEXTL 0a8c : 88 dey 0a8d : c8 INVTR iny 0a8e : a901 lda #$01 0a90 : 4501 eor TREG 0a92 : 8501 sta TREG 0a94 : c009 cpy #$09 0a96 : d0e2 bne TIC 0a98 : 0601 NEXTL asl TREG 0a9a : ca dex 0a9b : 10bf bpl TIME 0a9d : 6601 ror TREG 0a9f : e8 TIMOD inx 0aa0 : e014 cpx #$14 0aa2 : f025 beq OUT 0aa4 : 20d50a jsr DAYNIB 0aa7 : 98 tya 0aa8 : c54c cmp WKDAY 0aaa : 90f3 bcc TIMOD 0aac : d01b bne OUT 0aae : b52a lda SWTMDA,x 0ab0 : 4a lsr a 0ab1 : 4a lsr a 0ab2 : c54a cmp HOUR 0ab4 : f004 beq CHKMIN 0ab6 : 900e bcc NXTT 0ab8 : b00f bcs OUT 0aba : b52a CHKMIN lda SWTMDA,x 0abc : 2903 and #$03 0abe : a8 tay 0abf : a549 lda MIN 0ac1 : d9f30f cmp TABLE,y 0ac4 : 9003 bcc OUT 0ac6 : 4c9f0a NXTT jmp TIMOD ; 0ac9 : 8a OUT txa 0aca : 2901 and #$01 0acc : 0a asl a 0acd : 0a asl a 0ace : 0a asl a 0acf : 0501 ora TREG 0ad1 : 8d0004 sta LATCH 0ad4 : 60 rts ; 0ad5 : 8a DAYNIB txa 0ad6 : 48 pha 0ad7 : 4a lsr a 0ad8 : aa tax 0ad9 : b53e lda SWDYA,x 0adb : 9008 bcc RNIB 0add : 4a lsr a 0ade : 4a lsr a 0adf : 4a lsr a 0ae0 : 4a lsr a 0ae1 : a8 SBN tay 0ae2 : 68 pla 0ae3 : aa tax 0ae4 : 60 rts ; 0ae5 : 290f RNIB and #$0F 0ae7 : 10f8 bpl SBN 0ae9 : a200 ASCII0 ldx #$00 ; output ascii code to pb0. 0aeb : 8a OUTA txa 0aec : 0960 ora #$60 0aee : 8582 sta PBD 0af0 : 8a txa 0af1 : c909 cmp #$09 0af3 : d002 bne WKD 0af5 : e8 inx 0af6 : 8a txa 0af7 : 4a WKD lsr a 0af8 : a8 tay 0af9 : 9009 bcc ONES 0afb : b94800 lda SEC,y 0afe : 4a lsr a 0aff : 4a lsr a 0b00 : 4a lsr a 0b01 : 4a lsr a 0b02 : 1003 bpl TENS 0b04 : b94800 ONES lda SEC,y 0b07 : 290f TENS and #$0F 0b09 : 0930 ora #$30 0b0b : 8582 sta PBD 0b0d : e8 inx 0b0e : e00e cpx #$0E 0b10 : d0d9 bne OUTA 0b12 : 60 rts ; 0b13 : a940 DISP lda #$40 0b15 : 851b sta DUMP 0b17 : a204 ldx #$04 0b19 : a902 NEWBUF lda #$02 0b1b : 851c sta INADL 0b1d : b565 NEWDIS lda CNT,x 0b1f : c61c dec INADL 0b21 : f027 beq SECDIS 0b23 : 3029 bmi READY 0b25 : 4a lsr a 0b26 : 4a lsr a 0b27 : 4a lsr a 0b28 : 4a lsr a 0b29 : a8 HEXSEG tay 0b2a : b9db0f lda LOOKUP,y 0b2d : a41b DISPL ldy DUMP 0b2f : 8482 sty PBD 0b31 : 8580 sta PAD 0b33 : 20860b jsr DELA 0b36 : a521 lda COUNTC 0b38 : c901 cmp #$01 0b3a : f007 beq ENDDIS 0b3c : 251b and DUMP 0b3e : f003 beq ENDDIS 0b40 : 20860b jsr DELA 0b43 : 88 ENDDIS dey 0b44 : 8480 sty PAD 0b46 : 461b lsr DUMP 0b48 : 10d3 bpl NEWDIS 0b4a : 290f SECDIS and #$0F 0b4c : 10db bpl HEXSEG 0b4e : ca READY dex 0b4f : f009 beq EXDLY 0b51 : e001 cpx #$01 0b53 : d0c4 bne NEWBUF 0b55 : b565 DISDAY lda CNT,x 0b57 : 4c2d0b jmp DISPL ; 0b5a : a521 EXDLY lda COUNTC 0b5c : f004 beq REALIZ 0b5e : c901 cmp #$01 0b60 : d003 bne GETKEY 0b62 : 20860b REALIZ jsr DELA 0b65 : a900 GETKEY lda #$00 0b67 : 8582 sta PBD 0b69 : a9bf lda #$BF 0b6b : 8580 sta PAD 0b6d : a582 KEYDP lda PBD 0b6f : d009 bne STOKEY 0b71 : a580 lda PAD 0b73 : 0980 ora #$80 0b75 : 6a ror a 0b76 : 8580 sta PAD 0b78 : b0f3 bcs KEYDP 0b7a : a580 STOKEY lda PAD 0b7c : 0980 ora #$80 0b7e : 8562 sta KEY 0b80 : a2ff ldx #$FF 0b82 : 8680 stx PAD 0b84 : aa tax 0b85 : 60 rts ; 0b86 : a064 DELA ldy #$64 0b88 : 88 DLYDIS dey 0b89 : d0fd bne DLYDIS 0b8b : 60 RET rts ; 0b8c : 203c09 DISPLY jsr DSPLAY 0b8f : c9fd cmp #$FD 0b91 : d0f8 bne RET 0b93 : 20130b jsr DISP 0b96 : a27f ldx #$7F 0b98 : 9a txs 0b99 : 20440e TIMER jsr CNTA 0b9c : 20130b KNTAKT jsr DISP 0b9f : e8 inx 0ba0 : d0fa bne KNTAKT 0ba2 : 20130b ASKKEY jsr DISP 0ba5 : e8 inx 0ba6 : f0fa beq ASKKEY 0ba8 : 20130b jsr DISP 0bab : e8 inx 0bac : f0f4 beq ASKKEY 0bae : c9ef cmp #$EF 0bb0 : f011 beq JMPB 0bb2 : c9bf cmp #$BF 0bb4 : f013 beq CLEAR 0bb6 : c9df cmp #$DF 0bb8 : f006 beq PROGRM 0bba : c9fd cmp #$FD 0bbc : f047 beq KLKSWT 0bbe : d0e2 bne ASKKEY 0bc0 : 4caf0c PROGRM jmp PROGR ; 0bc3 : 20540e JMPB jsr INCB 0bc6 : 4c9c0b jmp KNTAKT ; 0bc9 : a2ff CLEAR ldx #$FF 0bcb : 8669 stx DPA 0bcd : 8668 stx DPB 0bcf : a92a lda #$2A 0bd1 : c50a cmp COUNTA 0bd3 : f01d beq CLTHRD 0bd5 : a902 lda #$02 0bd7 : c50b cmp COUNTB 0bd9 : d002 bne CLTIME 0bdb : 8666 stx DPD 0bdd : a90a CLTIME lda #$0A 0bdf : c50b cmp COUNTB 0be1 : f009 beq JSR 0be3 : 20e60e jsr PUSHDA 0be6 : e60b inc COUNTB 0be8 : e60b inc COUNTB 0bea : 10f1 bpl CLTIME 0bec : 20480e JSR jsr INCA 0bef : 4c9c0b jmp KNTAKT ; 0bf2 : 8666 CLTHRD stx DPD 0bf4 : 20e60e CLTHLN jsr PUSHDA 0bf7 : e60b inc COUNTB 0bf9 : a914 lda #$14 0bfb : c50b cmp COUNTB 0bfd : d0f5 bne CLTHLN 0bff : 20440e jsr CNTA 0c02 : 4c9c0b jmp KNTAKT ; 0c05 : 20440e KLKSWT jsr CNTA 0c08 : a902 VER lda #$02 0c0a : c50b cmp COUNTB 0c0c : f025 beq RADY 0c0e : a569 lda DPA 0c10 : 851a sta STOR 0c12 : a568 lda DPB 0c14 : 851b sta DUMP 0c16 : c60b dec COUNTB 0c18 : c60b dec COUNTB 0c1a : 207c0e jsr GETAB 0c1d : a569 lda DPA 0c1f : c51a cmp STOR 0c21 : f004 beq VERMIN 0c23 : b05f bcs ERROR 0c25 : 9008 bcc GOOD 0c27 : a568 VERMIN lda DPB 0c29 : c51b cmp DUMP 0c2b : f002 beq GOOD 0c2d : b055 bcs ERROR 0c2f : e60b GOOD inc COUNTB 0c31 : e60b inc COUNTB 0c33 : a902 RADY lda #$02 0c35 : c50a cmp COUNTA 0c37 : d006 bne NO 0c39 : a908 lda #$08 0c3b : c50b cmp COUNTB 0c3d : f006 beq THIRDL 0c3f : 20540e NO jsr INCB 0c42 : 4c080c jmp VER ; 0c45 : 20480e THIRDL jsr INCA 0c48 : a569 LABEL lda DPA 0c4a : 855b sta TEMPX 0c4c : a568 lda DPB 0c4e : 855c sta TEMPY 0c50 : 20d50a jsr DAYNIB 0c53 : c008 cpy #$08 0c55 : f028 beq END 0c57 : 841a sty STOR 0c59 : e8 inx 0c5a : 860b stx COUNTB 0c5c : 20af0e jsr GETDAT 0c5f : 98 tya 0c60 : c51a cmp STOR 0c62 : 9020 bcc ERROR 0c64 : f002 beq NEXTSW 0c66 : b011 bcs GOOOD 0c68 : ea NEXTSW nop 0c69 : a569 lda DPA 0c6b : c55b cmp TEMPX 0c6d : 9015 bcc ERROR 0c6f : f002 beq VRMINT 0c71 : b006 bcs GOOOD 0c73 : a568 VRMINT lda DPB 0c75 : c55c cmp TEMPY 0c77 : 900b bcc ERROR 0c79 : a50b GOOOD lda COUNTB 0c7b : c913 cmp #$13 0c7d : d0c9 bne LABEL 0c7f : c61d END dec INADH 0c81 : 4c3708 jmp DCFCLK ; 0c84 : a9cd ERROR lda #$CD 0c86 : 8569 sta DPA 0c88 : a9da lda #$DA 0c8a : 8568 sta DPB 0c8c : a9df lda #$DF 0c8e : 8567 sta DPC 0c90 : a9ff lda #$FF 0c92 : 8566 sta DPD 0c94 : 850d sta MDELAY 0c96 : 20130b DEL jsr DISP 0c99 : c60d dec MDELAY 0c9b : d0f9 bne DEL 0c9d : a92a lda #$2A 0c9f : c50a cmp COUNTA 0ca1 : f006 beq LASTLN 0ca3 : 20500e jsr CNTB 0ca6 : 4c9c0b jmp KNTAKT ; 0ca9 : 20680e LASTLN jsr LINE 0cac : 4c9c0b jmp KNTAKT ; 0caf : a669 PROGR ldx DPA 0cb1 : e8 inx 0cb2 : d004 bne CLEARC 0cb4 : 8669 stx DPA 0cb6 : 8668 stx DPB 0cb8 : a980 CLEARC lda #$80 0cba : 8521 sta COUNTC 0cbc : a92a lda #$2A 0cbe : c50a cmp COUNTA 0cc0 : f030 beq JUMPDY 0cc2 : a902 lda #$02 0cc4 : c50b cmp COUNTB 0cc6 : f02a beq JUMPDY 0cc8 : 4621 SHIFTC lsr COUNTC 0cca : a90c lda #$0C 0ccc : c521 cmp COUNTC 0cce : d004 bne NEXTDP 0cd0 : a904 lda #$04 0cd2 : 8521 sta COUNTC 0cd4 : a902 NEXTDP lda #$02 0cd6 : c521 cmp COUNTC 0cd8 : f01b beq CLRC 0cda : a940 lda #$40 0cdc : c521 cmp COUNTC 0cde : f01c beq HOURST 0ce0 : 4a lsr a 0ce1 : c521 cmp COUNTC 0ce3 : f030 beq HOURSO 0ce5 : 4a lsr a 0ce6 : c521 cmp COUNTC 0ce8 : f025 beq MINUTT 0cea : 4a lsr a 0ceb : c521 cmp COUNTC 0ced : f023 beq MINUTO 0cef : 4c830d jmp LINECH ; 0cf2 : 4c960d JUMPDY jmp DAYCH ; 0cf5 : a900 CLRC lda #$00 0cf7 : 8521 sta COUNTC 0cf9 : 4c9c0b jmp KNTAKT ; 0cfc : 204d0f HOURST jsr KONTKT 0cff : a569 lda DPA 0d01 : 18 clc 0d02 : 6910 adc #$10 0d04 : c924 cmp #$24 0d06 : 9002 bcc HRST 0d08 : a900 lda #$00 0d0a : 8569 HRST sta DPA 0d0c : 4cfc0c jmp HOURST ; 0d0f : 4c3c0d MINUTT jmp MNUTT ; 0d12 : 4c6e0d MINUTO jmp MNUTO ; 0d15 : 204d0f HOURSO jsr KONTKT 0d18 : e669 inc DPA 0d1a : a920 lda #$20 0d1c : 2569 and DPA 0d1e : f00c beq HSRO 0d20 : a569 lda DPA 0d22 : c924 cmp #$24 0d24 : d0ef bne HOURSO 0d26 : a920 lda #$20 0d28 : 8569 sta DPA 0d2a : 10e9 bpl HOURSO 0d2c : a569 HSRO lda DPA 0d2e : 290f and #$0F 0d30 : c90a cmp #$0A 0d32 : d0e1 bne HOURSO 0d34 : a9f0 lda #$F0 0d36 : 2569 and DPA 0d38 : 8569 sta DPA 0d3a : 10d9 bpl HOURSO 0d3c : a92a MNUTT lda #$2A 0d3e : c50a cmp COUNTA 0d40 : f013 beq THRLNE 0d42 : 204d0f ADDONE jsr KONTKT 0d45 : a568 lda DPB 0d47 : 18 clc 0d48 : 6910 adc #$10 0d4a : c960 cmp #$60 0d4c : 9002 bcc FAULTC 0d4e : a900 lda #$00 0d50 : 8568 FAULTC sta DPB 0d52 : 4c420d jmp ADDONE ; 0d55 : a918 THRLNE lda #$18 0d57 : 8521 sta COUNTC 0d59 : 204d0f ADDMIN jsr KONTKT 0d5c : 18 clc 0d5d : a568 lda DPB 0d5f : f8 sed 0d60 : 6915 adc #$15 0d62 : d8 cld 0d63 : c960 cmp #$60 0d65 : d002 bne FAULTD 0d67 : a900 lda #$00 0d69 : 8568 FAULTD sta DPB 0d6b : 4c590d jmp ADDMIN ; 0d6e : 204d0f MNUTO jsr KONTKT 0d71 : e668 inc DPB 0d73 : a568 lda DPB 0d75 : 290f and #$0F 0d77 : c90a cmp #$0A 0d79 : d0f3 bne MNUTO 0d7b : a9f0 lda #$F0 0d7d : 2568 and DPB 0d7f : 8568 sta DPB 0d81 : 10eb bpl MNUTO 0d83 : 204d0f LINECH jsr KONTKT 0d86 : a22a ldx #$2A 0d88 : e40a cpx COUNTA 0d8a : d004 bne NXTLNE 0d8c : a2ff ldx #$FF 0d8e : 860a stx COUNTA 0d90 : 20480e NXTLNE jsr INCA 0d93 : 4c830d jmp LINECH ; 0d96 : a900 DAYCH lda #$00 0d98 : 8521 sta COUNTC 0d9a : 20970f KNTKT jsr PIEKDP 0d9d : e8 inx 0d9e : d0fa bne KNTKT 0da0 : 20970f ASKKE jsr PIEKDP 0da3 : e8 inx 0da4 : f0fa beq ASKKE 0da6 : 20970f jsr PIEKDP 0da9 : e8 inx 0daa : f0f4 beq ASKKE 0dac : c9df cmp #$DF 0dae : f049 beq JMP 0db0 : c9ef cmp #$EF 0db2 : f04f beq GONE 0db4 : c9fb cmp #$FB 0db6 : d0e8 bne ASKKE 0db8 : a92a lda #$2A 0dba : c50a cmp COUNTA 0dbc : f04b beq THRDDY 0dbe : a980 lda #$80 0dc0 : 850c sta COUNTD 0dc2 : a9ff lda #$FF 0dc4 : 8566 sta DPD 0dc6 : 460c SHIFTD lsr COUNTD 0dc8 : 20b60f KONTK jsr DAYKNP 0dcb : e8 inx 0dcc : d0fa bne KONTK 0dce : 20b60f ASK jsr DAYKNP 0dd1 : e8 inx 0dd2 : f0fa beq ASK 0dd4 : 20b60f jsr DAYKNP 0dd7 : e8 inx 0dd8 : f0f4 beq ASK 0dda : c9df cmp #$DF 0ddc : f01b beq JMP 0dde : c9ef cmp #$EF 0de0 : f021 beq GONE 0de2 : c9fb cmp #$FB 0de4 : f00a beq DAYKEY 0de6 : c9f7 cmp #$F7 0de8 : d0e4 bne ASK 0dea : a50c lda COUNTD 0dec : 4566 eor DPD 0dee : 8566 sta DPD 0df0 : a901 DAYKEY lda #$01 0df2 : c50c cmp COUNTD 0df4 : d0d0 bne SHIFTD 0df6 : 4c9a0d jmp KNTKT ; 0df9 : 20e60e JMP jsr PUSHDA 0dfc : a980 lda #$80 0dfe : 8521 sta COUNTC 0e00 : 4cc80c jmp SHIFTC ; 0e03 : 20e60e GONE jsr PUSHDA 0e06 : 4cc30b jmp JMPB ; 0e09 : a001 THRDDY ldy #$01 0e0b : a60b ldx COUNTB 0e0d : f004 beq SEARCH 0e0f : ca dex 0e10 : 20d50a jsr DAYNIB 0e13 : b9ea0f SEARCH lda DTABLE,y 0e16 : 8566 sta DPD 0e18 : 49ff eor #$FF 0e1a : 850c sta COUNTD 0e1c : 20b60f KNTK jsr DAYKNP 0e1f : e8 inx 0e20 : d0fa bne KNTK 0e22 : 20b60f KEYDEP jsr DAYKNP 0e25 : e8 inx 0e26 : f0fa beq KEYDEP 0e28 : 20b60f jsr DAYKNP 0e2b : e8 inx 0e2c : f0f4 beq KEYDEP 0e2e : c9fb cmp #$FB 0e30 : f007 beq NXTDAY 0e32 : c9f7 cmp #$F7 0e34 : d0ec bne KEYDEP 0e36 : 4c960d jmp DAYCH ; 0e39 : 460c NXTDAY lsr COUNTD 0e3b : a50c lda COUNTD 0e3d : f0ca beq THRDDY 0e3f : 38 sec 0e40 : 6666 ror DPD 0e42 : 30d8 bmi KNTK 0e44 : a9ff CNTA lda #$FF 0e46 : 850a sta COUNTA 0e48 : e60a INCA inc COUNTA 0e4a : a903 lda #$03 0e4c : c50a cmp COUNTA 0e4e : f018 beq LINE 0e50 : a900 CNTB lda #$00 0e52 : 850b sta COUNTB 0e54 : a92a INCB lda #$2A 0e56 : c50a cmp COUNTA 0e58 : f016 beq INCBL 0e5a : e60b inc COUNTB 0e5c : e60b inc COUNTB 0e5e : a90a lda #$0A 0e60 : c50b cmp COUNTB 0e62 : f0e4 beq INCA 0e64 : 207c0e jsr GETAB 0e67 : 60 rts ; 0e68 : a92a LINE lda #$2A 0e6a : 850a sta COUNTA 0e6c : a9ff lda #$FF 0e6e : 850b sta COUNTB 0e70 : e60b INCBL inc COUNTB 0e72 : a914 lda #$14 0e74 : c50b cmp COUNTB 0e76 : f0cc beq CNTA 0e78 : 20af0e jsr GETDAT 0e7b : 60 rts ; 0e7c : a900 GETAB lda #$00 0e7e : a8 tay 0e7f : 851d sta INADH 0e81 : a50a lda COUNTA 0e83 : 0a asl a 0e84 : 0a asl a 0e85 : 0a asl a 0e86 : 0a asl a 0e87 : aa tax 0e88 : 050b ora COUNTB 0e8a : 851c sta INADL 0e8c : b11c lda (INADL),y 0e8e : 8569 sta DPA 0e90 : e61c inc INADL 0e92 : b11c lda (INADL),y 0e94 : 8568 sta DPB 0e96 : 861c stx INADL 0e98 : a50b lda COUNTB 0e9a : 6a ror a 0e9b : 6a ror a 0e9c : 900d bcc SWOUT 0e9e : a90b lda #$0B 0ea0 : 051c SWITCH ora INADL 0ea2 : 8567 sta DPC 0ea4 : 861c stx INADL 0ea6 : b11c lda (INADL),y 0ea8 : 8566 sta DPD 0eaa : 60 rts ; 0eab : a90a SWOUT lda #$0A 0ead : 10f1 bpl SWITCH 0eaf : a50b GETDAT lda COUNTB 0eb1 : aa tax 0eb2 : b52a lda SWTMDA,x 0eb4 : a8 tay 0eb5 : c8 iny 0eb6 : f023 beq TIMCLR 0eb8 : 29fc and #$FC 0eba : 4a lsr a 0ebb : 4a lsr a 0ebc : 8569 sta DPA 0ebe : b52a lda SWTMDA,x 0ec0 : 2903 and #$03 0ec2 : a8 tay 0ec3 : b9f30f lda TABLE,y 0ec6 : 8568 sta DPB 0ec8 : 8a DPABR txa 0ec9 : 4a lsr a 0eca : 9016 bcc INOUT 0ecc : a90a lda #$0A 0ece : 0930 PUTAWY ora #$30 0ed0 : 8567 sta DPC 0ed2 : 20d50a jsr DAYNIB 0ed5 : b9ea0f lda DTABLE,y 0ed8 : 8566 sta DPD 0eda : 60 rts ; 0edb : 88 TIMCLR dey 0edc : 8469 sty DPA 0ede : 8468 sty DPB 0ee0 : 30e6 bmi DPABR 0ee2 : a908 INOUT lda #$08 0ee4 : 10e8 bpl PUTAWY 0ee6 : a50a PUSHDA lda COUNTA 0ee8 : c92a cmp #$2A 0eea : f018 beq PUSHDT 0eec : 0a asl a 0eed : 0a asl a 0eee : 0a asl a 0eef : 0a asl a 0ef0 : 851c sta INADL 0ef2 : a000 ldy #$00 0ef4 : a566 lda DPD 0ef6 : 911c sta (INADL),y 0ef8 : a40b ldy COUNTB 0efa : a569 lda DPA 0efc : 911c sta (INADL),y 0efe : c8 iny 0eff : a568 lda DPB 0f01 : 911c sta (INADL),y 0f03 : 60 rts ; 0f04 : a000 PUSHDT ldy #$00 0f06 : a50b lda COUNTB 0f08 : aa tax 0f09 : a569 lda DPA 0f0b : 0a asl a 0f0c : 0a asl a 0f0d : 952a sta SWTMDA,x 0f0f : a568 lda DPB 0f11 : f00b beq PUSH 0f13 : c8 iny 0f14 : c915 cmp # $15 0f16 : f006 beq PUSH 0f18 : c8 iny 0f19 : c930 cmp #$30 0f1b : f001 beq PUSH 0f1d : c8 iny 0f1e : 98 PUSH tya 0f1f : 152a ora SWTMDA,x 0f21 : 952a sta SWTMDA,x 0f23 : a000 ldy #$00 0f25 : a97f lda #$7F 0f27 : c8 PHDAYS iny 0f28 : 38 sec 0f29 : 6a ror a 0f2a : c566 cmp DPD 0f2c : d0f9 bne PHDAYS 0f2e : 8a txa 0f2f : 4a lsr a 0f30 : aa tax 0f31 : b53e lda SWDYA,x 0f33 : 900e bcc RNIBDY 0f35 : 290f and #$0F 0f37 : 953e sta SWDYA,x 0f39 : 98 tya 0f3a : 0a asl a 0f3b : 0a asl a 0f3c : 0a asl a 0f3d : 0a asl a 0f3e : 153e ora SWDYA,x 0f40 : 953e sta SWDYA,x 0f42 : 60 rts ; 0f43 : 29f0 RNIBDY and #$F0 0f45 : 953e sta SWDYA,x 0f47 : 98 tya 0f48 : 153e ora SWDYA,x 0f4a : 953e sta SWDYA,x 0f4c : 60 rts ; 0f4d : 20810f KONTKT jsr KNIP 0f50 : e8 inx 0f51 : d0fa bne KONTKT 0f53 : 20810f ASKKY jsr KNIP 0f56 : e8 inx 0f57 : f0fa beq ASKKY 0f59 : 20810f jsr KNIP 0f5c : e8 inx 0f5d : f0f4 beq ASKKY 0f5f : c9df cmp #$DF 0f61 : f009 beq GO 0f63 : c9ef cmp #$EF 0f65 : f00f beq GOON 0f67 : c9fb cmp #$FB 0f69 : d0e8 bne ASKKY 0f6b : 60 rts ; 0f6c : ba GO tsx 0f6d : e8 inx 0f6e : e8 inx 0f6f : 9a txs 0f70 : 20e60e jsr PUSHDA 0f73 : 4cc80c jmp SHIFTC ; 0f76 : a900 GOON lda #$00 0f78 : 8521 sta COUNTC 0f7a : ba tsx 0f7b : e8 inx 0f7c : e8 inx 0f7d : 9a txs 0f7e : 4c030e jmp GONE ; 0f81 : a521 KNIP lda COUNTC 0f83 : 851a sta STOR 0f85 : e60d inc MDELAY 0f87 : e60d inc MDELAY 0f89 : 1004 bpl KNP 0f8b : a900 lda #$00 0f8d : 8521 sta COUNTC 0f8f : 20130b KNP jsr DISP 0f92 : a41a ldy STOR 0f94 : 8421 sty COUNTC 0f96 : 60 rts ; 0f97 : e60d PIEKDP inc MDELAY 0f99 : a970 lda #$70 0f9b : 250d and MDELAY 0f9d : d012 bne DPLAY 0f9f : a566 lda DPD 0fa1 : 49ff eor #$FF 0fa3 : 8566 sta DPD 0fa5 : 20130b jsr DISP 0fa8 : a566 lda DPD 0faa : 49ff eor #$FF 0fac : 8566 sta DPD 0fae : a562 PK lda KEY 0fb0 : 60 rts ; 0fb1 : 20130b DPLAY jsr DISP 0fb4 : d0f8 bne PK 0fb6 : e60d DAYKNP inc MDELAY 0fb8 : e60d inc MDELAY 0fba : 1014 bpl DPLY 0fbc : a566 lda DPD 0fbe : 851a sta STOR 0fc0 : a50c lda COUNTD 0fc2 : 4566 eor DPD 0fc4 : 8566 sta DPD 0fc6 : 20130b jsr DISP 0fc9 : a51a lda STOR 0fcb : 8566 sta DPD 0fcd : a562 DYKNP lda KEY 0fcf : 60 rts ; 0fd0 : 20130b DPLY jsr DISP 0fd3 : d0f8 bne DYKNP 0fd5 : 18 NMI clc ;test eprom addressing 0fd6 : 90fe HWCHCK bcc HWCHCK ; 0fdb = org $FDB ; 0fdb : 40 LOOKUP db $40 ;'0' ;hex to 7-segment 0fdc : 79 db $79 ;'1' 0fdd : 24 db $24 ;'2' 0fde : 30 db $30 ;'3' 0fdf : 19 db $19 ;'4' 0fe0 : 12 db $12 ;'5' 0fe1 : 02 db $02 ;'6' 0fe2 : 78 db $78 ;'7' 0fe3 : 00 db $00 ;'8' 0fe4 : 10 db $10 ;'9' 0fe5 : 23 db $23 ;'o' 0fe6 : 7b db $7B ;'I' 0fe7 : 06 db $06 ;'E' 0fe8 : 2f db $2F ;'r' 0fe9 : ff db $FF ;'BLANK' ; 0fea = org $0FEA ; 0fea : ff DTABLE db $FF ;'BLANK' ;weekday to led's 0feb : bf db $BF ;'MONDAY' 0fec : df db $DF ;'TUESDAY' 0fed : ef db $EF ;'WEDNESDAY' 0fee : f7 db $F7 ;'THURSDAY' 0fef : f8 db $F8 ;'FRIDAY' 0ff0 : fd db $FD ;'SATURDAY' 0ff1 : fd db $FD ;'SUNDAY' 0ff2 : ff db $FF ;'BLANK' 0ff3 : 00 TABLE db $00 ;'00' ;convert quarters to m 0ff4 : 15 db $15 ;'15' 0ff5 : 30 db $30 ;'30' 0ff6 : 45 db $45 ;'45' 0ff7 : ff db $FF ;'BLANK' 0ff8 : ff db $FF ;'BLANK' 0ff9 : ff db $FF ;'BLANK' 0ffa : d50f PNMI dw $0FD5 0ffc : 0008 PRST dw $0800 0ffe : 160a PIRQ dw $0A16 No errors in pass 2.