;******************************************************** ;* cidncsf.asm * ;* Ajouts commentaires * ;* Correction syntaxe en $c2e6; * ;* modif en $c571 : detecte un numero a 10 chiffres:$0A * ;* modif norme +10 chiffres rempl detect $3 par $2:$C4F0* ;* modif norme +10 chiffres rempl detect $3 par $2:$CA5E* ;* modif affichage date Jour/mois en :$cb7b * ;* ajout routine checksum Eprom en: $cd56 * ;* modif repertoire 17 numeros - * ;* modif repertoire Nø … 10 CHIFFRES (le 19/06/1998) * ;* MB le 01/02/1998 - le 19/06/1998 cs le 06/09/1998 * ;* Support repertoire en EPROM (LCE75,76)- le 11/06/2000* ;* modif ligne LC9E9 ;******************************************************** ;-------------------------------- ;| EQUATES SECTION | ;-------------------------------- OPTION equ $1039 BAUD equ $102B PACTL equ $1026 PORTD equ $1008 PPROG equ $103B SCCR1 equ $102C SCCR2 equ $102D SCDR equ $102F SCSR equ $102E TFLG2 equ $1025 TMSK2 equ $1024 ;------------------------------------ ;| VARIABLES | ;------------------------------------ org $0000 ;variables doit etre quelque part en RAM L0000: rmb 1 L0001: rmb 1 L0002: rmb 1 L0003: rmb 1 L0004: rmb 1 L0005: rmb 1 L0006: rmb 1 L0007: rmb 1 L0008: rmb 1 L0009: rmb 1 L000A: rmb 1 L000B: rmb 1 L000C: rmb 1 L000D: rmb 1 L000E: rmb 1 ;-------------------------------- ;| MAIN | ;-------------------------------- ORG $0C000 ; begin: fcc "This program is copyright 1994 by:" fcc " Grant Beattie Edmonton, AB Canada" fcc " ----------------All rights reserved!" fcc " This program may not be copied or " fcc " used in whole orin part without the expressed " fcc " written consent of the author. " titre1: fcc "* CALLER-ID *" fcb 0 titre2: fcc "1997, M. Benoit " fcb 0 init: fcc "* Initializing *" fcb 0 names: fcc "* Noms! *" fcb 0 wait: fcc "* Attente *" fcb 0 call: fcc "* d'appel... *" fcb 0 choix: fcc "Choix Nom: #" fcb 0 bad: fcc "! Bad EPROM !" fcb 0 usine: fcc "! Call Factory !" fcb 0 cspec1: fcb $12,$15,$15,$15,$15,$15,$12 ;caractere special |0 end: fcb 0 cspec2: fcb $04,$08,$0E,$11,$1F,$10,$0E ; e accent aigu end2: fcb 0 Main: ldaa #$40 staa OPTION LC1A4: lds #$00FF ;initialisation pile jsr LCD50 ldaa #$38 ;afficheur en mode 8 bits staa $4000 ;avec 2 lignes d'affichage jsr LCD50 ldaa #$01 ;efface l'afficheur staa $4000 jsr LCD50 ldaa #$0F ;allume l'afficheur,curseur LC1BC: staa $4000 jsr LCD50 ldaa #$06 ;mode incremente l'adresse de 1 staa $4000 ldaa #$40 ;passage en mode envoi de donnees jsr LCD50 staa $4000 ldab #$08 ldx #cspec1 LC1D4: ldaa 0,X ;12 ->A inx ;incremente le pointeur jsr LCD36 ;envoi de donnees decb ;7 octets (12,15,15,15,15,15,12) bne LC1D4 ;caractere special |0 ldx #cspec2 ldab #$08 LCS2: ldaa 0,X ;envoi 2eme caractere Spec. inx jsr LCD36 decb bne LCS2 ldaa #$01 ;efface l'ecran jsr LCD50 staa $4000 jsr LCD56 cpd #$077C4 ;checksum beq LC204 ;ignore le test de l'eprom ldx #bad ;Bad Eprom jsr LCD3F ldaa #$0C0 jsr LCD50 staa $4000 ldx #usine ;Call Factory jsr LCD3F LC202: bra LC202 ; LC204: ldx #titre1 ;affiche le titre jsr LCD3F ldaa #$0C0 ;passage 2eme ligne jsr LCD50 staa $4000 ldx #titre2 ;affiche suite du titre jsr LCD3F ldx #$00C8 LC21B: jsr LCCB2 ;routine de tempo dex ;imbriquee bne LC21B ldaa #$01 ;efface l'afficheur jsr LCD50 staa $4000 ldx #init ;affiche 'Initializing..' jsr LCD3F ldaa #$0C0 ;passe a la 2eme ligne jsr LCD50 staa $4000 ldx #names ;affiche 'Noms' jsr LCD3F ldx #$B610 ;charge une adresse en EEPROM LC240: ldab #$0A ;rempl $07 par $0A (10 chiffres) LC242: ldaa 0,X cmpa #$30 ;regarde le contenu de l'E2PROM bcc LC252 ;si elle est bien ininitialisee ldaa #$30 jsr LCCBF ;efface l'E2PROM octets/octets jsr LCCD4 ;programme l'E2PROM bra LC25E LC252: cmpa #$39 bls LC25E ldaa #$30 jsr LCCBF jsr LCCD4 LC25E: inx decb bne LC242 ldab #$10 ;16 caracteres =$10 (nom) LC264: ldaa 0,X cmpa #$20 bcc LC274 ldaa #$20 jsr LCCBF jsr LCCD4 bra LC280 LC274: cmpa #$7F bls LC280 ldaa #$20 jsr LCCBF jsr LCCD4 LC280: inx decb bne LC264 ldaa 0,X beq LC28F clra jsr LCCBF jsr LCCD4 LC28F: inx cpx #$B7DB ; rempl $B7F0 par $B7DB bcs LC240 ldaa #$06 ; 1200 Bds staa BAUD clra staa SCCR1 ldaa #$04 staa SCCR2 clra staa L0004 staa L0005 staa L000C staa L000E ldx #$000F stx L0008 ldaa #$01 staa $0002 ldaa #$00 staa $000D ldaa #$01 staa $0006 clra staa PACTL ldaa #$40 staa TMSK2 cli LC2C7: ldaa SCSR anda #$20 bne LC2D1 jmp LC669 LC2D1: ldaa SCDR ldab $000D cmpb #$16 bls LC2DD jmp LC399 LC2DD: aslb ldx #table abx ldx 0,X jmp 0,X table: fdb LC314 fdb LC331 fdb LC373 fdb LC3BC fdb LC3F3 fdb LC422 fdb LC447 fdb LC470 fdb LC484 fdb LC499 fdb LC4C8 fdb LC4F0 fdb LC569 fdb LC590 fdb LC5C4 fdb LC5E0 fdb LC399 fdb LC399 fdb LC399 fdb LC399 fdb LC609 fdb LC61E fdb LC640 LC314: cmpa #$04 bne LC321 staa $0A ldaa #$01 staa $000D jmp LC669 LC321: cmpa #$80 beq LC328 jmp LC669 LC328: staa $0A ldaa #$07 ;comptage trame date/heure? staa $0D jmp LC669 LC331: cmpa #$09 bne LC342 staa $0007 adda $000A staa $000A ldaa #$02 staa $000D jmp LC358 LC342: cmpa #$12 beq LC34D ldaa #$00 staa $000D jmp LC669 LC34D: staa $0007 adda $000A staa $000A ldaa #$03 staa >L000D LC358: ldaa $04 cmpa #$0A bcs LC370 dec $04 ldx #$000F ldab #$BD LC366: ldaa $15,X staa 0,X inx decb bne LC366 stx $08 LC370: jmp LC669 LC373: cmpa #$30 bcs LC399 cmpa #$39 bhi LC399 ldx $08 staa 0,X inx stx $08 adda $0A staa $0A dec $07 ldaa $07 cmpa #$1 beq LC392 jmp LC669 LC392: ldaa #$04 staa $0D jmp LC669 LC399: ldaa #$00 staa $0D ldx #$000F ldaa $04 beq LC3AA ldab #$15 LC3A6: abx deca bne LC3A6 LC3AA: stx $08 TST $0C bne LC3B5 ldab #$01 stab $02 LC3B5: ldaa $04 staa $05 ;compteur Nø jmp LC669 LC3BC: cmpa #$30 bcs LC3F0 cmpa #$39 bhi LC3F0 ldx $08 staa 0,X inx stx $08 adda $0A staa $0A dec $07 ldaa $07 cmpa #$0A beq LC3DB jmp LC669 LC3DB: ldaa #$05 staa $0D ldx $08 ldaa #$03 staa 0,X inx ldaa #$0A staa 0,X inx stx $08 jmp LC669 LC3F0: jmp LC399 LC3F3: cmpa #$04F beq LC3FE cmpa #$50 beq LC3FE jmp LC399 LC3FE: ldx $008 ldab #$04 stab 0,X inx ldab #$01 stab 0,X inx staa 0,X inx stx $08 adda $0A staa $0A dec $007 beq LC41B jmp LC399 LC41B: ldaa #$06 staa $0D jmp LC669 LC422: cmpa #$30 bcs LC444 cmpa #$39 bhi LC444 ldx $08 staa 0,X inx stx $08 adda $0A staa $0A dec $07 beq LC43D jmp LC669 LC43D: ldaa #$06 staa $0D jmp LC669 LC444: jmp LC399 LC447: adda $0A beq LC44E jmp LC399 LC44E: ldaa #$00 staa $0D tst $0C bne LC45B ldab #$01 stab $02 LC45B: ldaa $04 inca staa $04 staa $05 ldx #$0F ldab #$15 LC467: abx deca bne LC467 stx $08 jmp LC669 LC470: cmpa #$0D bcc LC477 jmp LC399 LC477: staa $0B adda $0A staa $0A ldaa #$08 staa $0D jmp LC669 LC484: cmpa #$01 beq LC48B jmp LC399 LC48B: adda $0A staa $0A dec $0B ldaa #$09 staa $0D jmp LC669 LC499: cmpa #$08 beq LC4A0 jmp LC399 LC4A0: staa $07 dec $0B adda $0A staa $0A ldaa #$0A staa $0D ldaa $04 cmpa #$0A bcs LC4C5 dec $04 ldx #$0F ldab #$BD LC4BB: ldaa $15,X staa 0,X inx decb bne LC4BB stx $08 LC4C5: jmp LC669 LC4C8: cmpa #$30 bcs LC4ED cmpa #$39 bhi LC4ED ldx $08 staa 0,X inx stx $08 adda $0A staa $0A dec $0B dec $07 beq LC4E6 jmp LC669 LC4E6: ldaa #$0B staa $0D jmp LC669 LC4ED: jmp LC399 LC4F0: cmpa #$02 ;remp $03 par $02 Up to 10 digits beq LC507 cmpa #$04 beq LC51C cmpa #$06 beq LC531 cmpa #$7 beq LC53F cmpa #$8 beq LC554 jmp LC399 LC507: ldx $08 staa 0,X inx stx $8 adda $0A staa $0A dec $0B ldaa #$0C staa $0D jmp LC669 LC51C: ldx $08 staa 0,X inx stx $08 adda $0A staa $0A dec $0B ldaa #$0E staa $0D jmp LC669 LC531: adda $0A staa $0A dec $0B ldaa #$14 staa $0D jmp LC669 LC53F: ldx $8 staa 0,X inx stx $8 adda $0A staa $0A dec $0B ldaa #$10 staa $0D jmp LC669 LC554: ldx $8 staa 0,X inx stx $08 adda $0A staa $0A dec $0B ldaa #$12 staa $0D jmp LC669 LC569: cmpa #$7 beq LC578 cmpa #$08 beq LC578 cmpa #$0A ;rempl $0B par $0A : detecte 10 chiffres beq LC578 jmp LC399 LC578: ldx $8 staa 0,X inx stx $8 staa $07 dec $0B adda $0A staa $0A ldaa #$0D staa >L000D jmp LC669 LC590: cmpa #$30 bcs LC5C1 cmpa #$39 bhi LC5C1 ldx $08 staa 0,X inx stx $08 adda $0A staa $0A dec $0B dec $07 beq LC5AE jmp LC669 LC5AE: tst $0B bne LC5BA ldaa #$16 staa $0D jmp LC669 LC5BA: ldaa #$0B staa $0D jmp LC669 LC5C1: jmp LC399 LC5C4: cmpa #$01 beq LC5CB jmp LC399 LC5CB: ldx $8 staa 0,X inx stx $8 adda $0A staa $0A dec $0B ldaa #$0F staa $0D jmp LC669 LC5E0: cmpa #$4F beq LC5EB cmpa #$50 beq LC5EB jmp LC399 LC5EB: ldx $08 staa 0,X inx stx $08 adda $0A staa $0A dec $0B bne LC602 ldaa #$16 staa $0D jmp LC669 LC602: ldaa #$B staa $0D jmp LC669 LC609: cmpa #$01 beq LC610 jmp LC399 LC610: adda $0A staa $0A dec $0B ldaa #$15 staa $0D jmp LC669 LC61E: cmpa #$4C beq LC629 cmpa #$52 beq LC629 jmp LC399 LC629: adda $0A staa $0A dec $0B bne LC639 ldaa #$16 staa $0D jmp LC669 LC639: ldaa #$0B staa $0D jmp LC669 LC640: adda $0A beq LC647 jmp LC399 LC647: ldaa #$0 staa $0D tst $0C bne LC654 ldab #$1 stab $2 LC654: ldaa $4 inca staa $04 staa $05 ldx #$0F ldab #$15 LC660: abx deca bne LC660 stx $08 jmp LC669 LC669: tst $0C beq LC671 jmp LC6EB LC671: tst $1 bne LC679 jmp LC6EB LC679: tst $2 bne LC6EB ldaa PORTD anda #$4 ;Touche DOWN (-) bne LC68E ldaa $5 cmpa #$1 bls LC6EB deca bra LC69E LC68E: ldaa PORTD anda #$2 ;Touche UP (+) bne LC6AC ldaa $05 inca cmpa $04 bls LC69E bra LC6EB LC69E: staa $5 ldaa #$1 staa $2 clr 0 clr $1 bra LC6EB LC6AC: tst $03 beq LC6EB ldaa PORTD anda #$10 ;Touche CLR/SAVE bne LC6BF sei clr $3 jmp Main ;Reset Software LC6BF: ldaa PORTD anda #$20 ;Touche MODE bne LC6CE ldaa #$1 staa $C staa $2 bra LC6E1 LC6CE: ldaa PORTD anda #$8 ;Touche -> bne LC6EB tst $4 beq LC6EB ldaa $5 jsr LCA20 ldaa #$1 LC6E1: staa $2 clr $1 clr $3 bra LC6EB LC6EB: tst $0C bne LC734 tst $2 beq LC734 tst $4 bne LC723 ldaa #$1 ;efface l'ecran jsr LCD50 staa $4000 ldaa #$C jsr LCD50 staa $4000 ldx #wait jsr LCD3F ldaa #$C0 ;Passage 2eme ligne jsr LCD50 staa $4000 ldx #call jsr LCD3F clr $2 bra LC734 LC723: clr $2 ldaa #$C jsr LCD50 staa $4000 jsr LCB4A jsr LCA5E LC734: ldaa $0C cmpa #$1 bne LC7A3 tst $2 bne LC7A3 tst $1 beq LC7A3 ldaa PORTD anda #$2 ;Touche UP (+) bne LC754 ldaa $6 ;compteur #noms inca cmpa #$11 ;Rempl. $14 par $17 = 17 noms bls LC764 bra LC7A3 LC754: ldaa PORTD anda #$4 ;Touche DOWN (-) bne LC772 ldaa $06 deca cmpa #$1 bcc LC764 bra LC7A3 LC764: staa $6 ldaa #$1 staa $2 clr $1 clr $0 bra LC7A3 LC772: tst $3 beq LC78E ldaa PORTD anda #$20 ;Touche MODE bne LC78E ldaa #$FF staa $0C ;Flag MODE ldaa #$1 staa $2 clr $1 clr $3 bra LC7A3 LC78E: ldaa PORTD anda #$18 ;Touches CLR/SAVE+->=DEBUG bne LC7A3 ldaa #$2 staa $0C ldaa #$1 staa $2 clr $1 clr $3 LC7A3: ldaa $0C cmpa #$1 bne LC7E8 tst $2 beq LC7E8 ldaa #$1 jsr LCD50 staa $4000 ldx #choix jsr LCD3F ldaa $6 ;no page repertoire jsr LCD15 jsr LCCEC jsr LCD36 tba jsr LCD36 ldaa #$C0 ;passage 2eme ligne jsr LCD50 staa $4000 ldx #$B61A ;rempl $B617 par $B61A ldab #$1B ;rempl $18 par $1B ldaa $6 ; LC7DA: deca beq LC7E0 abx bra LC7DA LC7E0: jsr LCD3F clr $2 bra LC7E8 LC7E8: ldaa $C cmpa #$FF ;Lit le Flag MODE beq LC7F1 jmp LC88D LC7F1: tst $2 beq LC7F9 jmp LC88D LC7F9: tst $1 bne LC801 jmp LC88D LC801: ldaa PORTD anda #$2 ;Touche UP (+) bne LC80E ldaa $4001 inca bra LC819 LC80E: ldaa PORTD anda #$4 ;Touche DOWN (-) bne LC859 ldaa $4001 deca LC819: ldab #$10 jsr LCD50 stab $4000 ldab $4000 andb #$40 bne LC836 cmpa #$30 bcc LC82E ldaa #$39 LC82E: cmpa #$39 bls LC842 ldaa #$30 bra LC842 LC836: cmpa #$20 bcc LC83C ldaa #$7F LC83C: cmpa #$7F bls LC842 ldaa #$20 LC842: jsr LCD50 staa $4001 ldab #$10 jsr LCD50 stab $4000 LC850: clr $1 ldaa #$32 staa $0 bra LC88D LC859: ldaa PORTD anda #$8 ;Touche -> bne LC865 jsr LC9E9 bra LC850 LC865: tst $3 beq LC88D ldaa PORTD anda #$10 ;Touche CLR/SAVE bne LC878 jsr LCC0B ldaa #$01 bra LC880 LC878: ldaa PORTD anda #$20 ;Touche MODE bne LC88D clra LC880: staa $0C inca staa $2 clr $1 clr $3 bra LC88D LC88D: ldaa $0C cmpa #$FF ;Lit le Flag MODE bne LC8EB ldaa $2 beq LC8EB clr $2 ldaa #$1 ;efface l'ecran jsr LCD50 staa $4000 ldaa #$23 ;envoie # jsr LCD36 ldaa $6 jsr LCD15 ;envoie le nø page repertoire jsr LCCEC jsr LCD36 tba jsr LCD36 ldaa #$20 ;espace jsr LCD36 ldaa #$20 ;espace jsr LCD36 ldx #$B610 ldab #$1B ;Rempl. $18 =7d+16d par $1B=10d+16d ldaa $6 ;compteur #noms (1 a 17) LC8C7: deca beq LC8CD abx bra LC8C7 ;+> Aff. Nø dans repertoire LC8CD: jsr LCAE1 ;Rempl. LCAF8 par LCAE1 (10 car.) ldaa #$C0 ;passage 2 eme ligne jsr LCD50 staa $4000 jsr LCD3F ldaa #$85 ;ADDRAM 5 caracteres 1ere ligne jsr LCD50 staa $4000 ldaa #$0E jsr LCD50 staa $4000 LC8EB: ldaa $0C cmpa #$2 bne LC961 ldaa $2 beq LC961 clr $2 ldaa #$1 jsr LCD50 staa $4000 ldab $E clra xgdx ldaa $E jsr LCCEC jsr LCD36 tba jsr LCD36 ldaa #$3A ;":" jsr LCD36 ldab #$4 ;pointeur adresse de la ram LC917: pshb ldaa #$20 jsr LCD36 ldaa 0,X inx jsr LCCEC jsr LCD36 tba jsr LCD36 pulb decb bne LC917 ldaa #$C0 ;passage 2eme ligne jsr LCD50 staa $4000 pshx pulb pula jsr LCCEC jsr LCD36 tba jsr LCD36 ldaa #$3A jsr LCD36 ldab #$4 LC94A: pshb ldaa #$20 jsr LCD36 ldaa 0,X inx jsr LCCEC jsr LCD36 tba jsr LCD36 pulb decb bne LC94A LC961: ldaa $C cmpa #$2 bne LC9B1 tst $2 bne LC9B1 tst $1 beq LC9B1 ldaa PORTD anda #$2 ;Touche UP (+) bne LC97E ldaa $E adda #$8 bra LC989 LC97E: ldaa PORTD anda #$4 ;Touche DOWN (-) bne LC997 ldaa $E suba #$8 LC989: staa $E ldaa #$1 staa $2 clr $1 clr $0 bra LC9B1 LC997: tst $3 beq LC9B1 ldaa PORTD anda #$20 ;Touche MODE bne LC9B1 ldaa #$0 staa $C ldaa #$1 staa $2 clr $1 clr $3 LC9B1: ldaa PORTD anda #$3E cmpa #$3E bne LC9C6 ldaa $3 cmpa #$5 bhi LC9CB adda #$1 staa $3 bra LC9D0 LC9C6: clr $3 bra LC9D0 LC9CB: ldaa #$1 staa >L0001 LC9D0: wai jmp LC2C7 LC9D4: ldaa #$40 staa TFLG2 ldaa $0 adda #$1 cmpa #$64 bne LC9E6 clra ldab #$1 stab $1 LC9E6: staa $0 rti LC9E9: ldaa #$14 ;curseur right jsr LCD50 ;qd on appuie sur -> staa $4000 jsr LCD50 ldaa $4000 ;lit l'adr du curseur anda #$7F cmpa #$8 ;regarde si on est au 7ø car. (-) >> bne LCA06 ;<< rempl. $8 par $7 ldaa #$14 ;curseur right jsr LCD50 staa $4000 rts ;rempl. $0D par $0F LCA06: cmpa #$10 ;regarde si on est au 13ø car bne LCA13 ldaa #$0C0 ;passage 2 eme ligne jsr LCD50 staa $4000 rts LCA13: cmpa #$50 ;regarde si on est au 10øcar 2øligne bne LCA1F ldaa #$85 ;5 eme caractere ADDRAM jsr LCD50 staa $4000 LCA1F: rts LCA20: cmpa >L0004 bne LCA35 dec >L0004 dec >L0005 ldd >L0008 subd #$15 std >L0008 rts LCA35: ldab #$15 ldx #$F ;debut de la ram contenant infos LCA3A: deca beq LCA40 abx bra LCA3A LCA40: ldab >L0004 subb >L0005 ;nombre d'appels ldaa #$15 mul LCA49: ldaa $15,X staa 0,X inx decb bne LCA49 dec >L0004 ldd >L0008 subd #$15 std >L0008 rts LCA5E: ldaa 0,X cmpa #$2 ;rempl $3 par $2 detect 10 chiffres beq LCA88 cmpa #$4 beq LCA69 rts LCA69: ldab #$C0 ;passage 2eme ligne jsr LCD50 stab $4000 inx inx ldaa 0,X ldx #out ;rempl $CB28 par out cmpa #$4F beq LCA84 ldx #prive ;rempl $CB39 par prive cmpa #$50 beq LCA84 rts LCA84: jsr LCD3F rts LCA88: inx pshx puly ldab 0,X ;B contient "0A" inx ;X pointe sur le Nø subb #$0A ;essai rempl $07 par $0A,B=0 abx ;X pointe sur le Nø jsr LCC75 cpx #$0 beq LCAA6 ldaa #$C0 ;passage 2 eme ligne jsr LCD50 staa $4000 jsr LCD3F rts LCAA6: pshy ;Routine Affichage des Numeros pulx ldaa #$C4 ;4øcaract. 2øligne ldab 0,X cmpb #$7 beq LCABF suba #$1 cmpb #$8 beq LCABF suba #$1 cmpb #$0A beq LCABF suba #$1 LCABF: jsr LCD50 staa $4000 ldab 0,X inx cmpb #$0A beq LCAE1 cmpb #$7 bhi LCAD2 bra LCAF8 LCAD2: ldaa 0,X inx jsr LCD36 ldaa #$2D ;envoie un - jsr LCD36 cmpb #$8 bls LCAF8 LCAE1: ldaa 0,X inx jsr LCD36 ldaa 0,X inx jsr LCD36 ldaa 0,X inx jsr LCD36 ldaa #$2D ;envoie un - jsr LCD36 LCAF8: ldaa 0,X ;<- affichage du nø ds repertoire (avant) inx ; si 7 chiffres jsr LCD36 ldaa 0,X inx jsr LCD36 ldaa 0,X inx jsr LCD36 ; ldaa #$2D ;caractere separateur - ; jsr LCD36 ldaa 0,X inx jsr LCD36 ldaa 0,X inx jsr LCD36 ldaa 0,X inx jsr LCD36 ldaa 0,X inx jsr LCD36 rts out: fcc "* Out of Range *" fcb 0 prive: fcc " Num" fcb $01 fcc "ro Priv" fcb $01 fcc "! " fcb 0 LCB4A: ldaa #$1 jsr LCD50 staa $4000 ldaa #$23 ;"#" jsr LCD36 ldaa >L0005 ;no appel adda #$30 cmpa #$3A ;test si n appel=10: bne LCB62 ;non ldaa #$0 ;caractere special |0 LCB62: jsr LCD36 ;Affichage nø appelant ldaa #$20 ;1 espace jsr LCD36 ldx #$F ;pointe au debut infos en ram ldaa >L0005 ;no appel ldab #$15 LCB75: deca beq LCB7B abx bra LCB75 LCB7B: inx inx ldaa 0,X inx jsr LCD36 ldaa 0,X dex dex dex jsr LCD36 ldaa #$2F ;"/" Date & heure LCB89: jsr LCD36 ldaa 0,X inx jsr LCD36 LCB92: ldaa 0,X inx inx inx jsr LCD36 ldaa #$20 jsr LCD36 ldab 0,X aslb aslb aslb aslb ldaa 1,X suba #$30 aba cmpa #$12 bcc LCBD8 ldaa 0,X inx cmpa #$30 beq LCBB6 jsr LCD36 LCBB6: ldaa 0,X inx jsr LCD36 ldaa #$3A jsr LCD36 ldaa 0,X inx jsr LCD36 ldaa 0,X inx jsr LCD36 ldaa #$61 ;envoie a jsr LCD36 ldaa #$6D ;envoie m jsr LCD36 rts LCBD8: cmpa #$12 beq LCBDF adda #$88 daa LCBDF: jsr LCCEC cmpa #$30 beq LCBE9 jsr LCD36 LCBE9: tba jsr LCD36 inx inx ldaa #$3A jsr LCD36 ldaa 0,X inx jsr LCD36 ldaa 0,X inx jsr LCD36 ldaa #$70 ;envoie p jsr LCD36 ldaa #$6D ;envoie m jsr LCD36 rts LCC0B: sei ldaa #$85 ;5øcar. ADDRAM jsr LCD50 staa $4000 ldx #$B610 ldab #$1B ;rempl. $18 par $1B ldaa $6 LCC1B: deca beq LCC21 abx bra LCC1B LCC21: ldab #$3 LCC23: jsr LCD50 ldaa $4001 cmpa 0,X beq LCC33 jsr LCCBF jsr LCCD4 LCC33: inx decb bne LCC23 ldaa #$89 jsr LCD50 staa $4000 ldab #$7 ;rempl. $4 par $7 LCC41: jsr LCD50 ldaa $4001 cmpa 0,X beq LCC51 jsr LCCBF jsr LCCD4 LCC51: inx decb bne LCC41 ldaa #$C0 ;Passage 2ø ligne jsr LCD50 staa $4000 ldab #$10 LCC5F: jsr LCD50 ldaa $4001 cmpa 0,X beq LCC6F jsr LCCBF jsr LCCD4 LCC6F: inx decb bne LCC5F cli rts LCC75: pshy pshb psha ldab $B610 ; ldy #$B610 ; tstb beq LCCAA LCC83: pshb pshx pshy ldab #$A ;rempl. $7 par $A LCC89: ldaa 0,X cmpa 0,Y bne LCC9F inx iny decb bne LCC89 pulx ldab #$A ;rempl. $7 par $A abx puly pulb bra LCCAD LCC9F: puly ldab #$1B ;rempl. $18 par $1B Test aby pulx pulb decb bne LCC83 pula pulb puly jsr LCC76 ;X pointe au debut du Nø rts LCCAA: ldx #$0 LCCAD: pula pulb puly rts LCC76: pshy pshb psha ldab dirtel ;rempl $B610 par dirtel ldy #dirtel ;rempl #$B610 par #dirtel tstb beq LCCAB LCC84: pshb pshx ;X pointe au debut du Nø pshy ldab #$A ;rempl. $7 par $A LCC8A: ldaa 0,X cmpa 0,Y bne LCCA0 inx iny decb bne LCC8A pulx ;X pointe au debut du Nø ldab #$A ;rempl. $7 par $A abx ;X pointe en fin du Nø puly pulb bra LCCAE LCCA0: puly ldab #$1B ;rempl. $18 par $1B Test aby pulx ;X pointe du debut du Nø pulb decb bne LCC84 LCCAB: ldx #$0 ;Nø pas dans repertoire LCCAE: pula pulb puly rts LCCB2: pshy ldy #$6DA LCCB8: dey bne LCCB8 puly rts LCCBF: psha ldaa #$16 staa PPROG staa 0,X inca staa PPROG jsr LCCB2 clra staa PPROG pula rts LCCD4: psha ldaa #$2 staa PPROG pula psha staa 0,X ldaa #$3 staa PPROG jsr LCCB2 clra staa PPROG pula rts LCCEC: pshx ,conversion hexa - decimal psha ldx #hexa ;rempl. $CD0B par hexa tab lsrb lsrb lsrb lsrb abx ldab 0,X tba ldx #hexa ;rempl. $CD0B par hexa pulb andb #$F abx ldab 0,X pulx rts hexa: fcc "0123456789ABCDEF" LCD15: pshb ;conversion hexa exemple: page A -> page 10 pshx tab ldx #num ;rempl. $CD27 par num abx ldaa 0,X pulx pulb rts num: fcb 0,1,2,3,4,5,6,7,8,9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20 LCD36: tst $4000 ;Routines Afficheur bmi LCD36 staa $4001 rts LCD3F: ldaa 0,X inx tsta bne LCD46 rts LCD46: tst $4000 bmi LCD46 staa $4001 bra LCD3F LCD50: tst $4000 bmi LCD50 rts LCD56: ldx #begin ldy #end sty >L0008 ldy #checksum ldd #0 std >L0005 ldaa #$1 staa >L0007 LCD70: ldaa 0,X anda >L0007 beq LCD79 ldaa #$1 LCD79: ldab >L0006 andb #$7F pshy aby ldab 0,Y puly stab >L0004 eora >L0004 ldab >L0005 rolb rolb rolb stab >L0004 eora >L0004 lsra rol >L0006 rol >L0005 lsr >L0007 bcs LCDAE ldaa #$1 cmpa >L0007 beq LCDB5 bra LCD70 LCDAE: ldaa #$80 staa >L0007 bra LCD70 LCDB5: cpx >L0008 beq LCDBD inx bra LCD70 LCDBD: ldd L0005 rts checksum: fcb 0,0,1,1,0,0,1,1,1,1,0,0,1,1 fcb 0,0,0,0,1,1,0,0,1,1,1,1,0,0 fcb 1,1,0,0,1,1,0,0,1,1,0,0,0,0 fcb 1,1,0,0,1,1,1,1,0,0,1,1,0,0 fcb 0,0,1,1,0,0,1,1,0,0,1,1,0,0 fcb 1,1,1,1,0,0,1,1,0,0,0,0,1,1 fcb 0,0,1,1,1,1,0,0,1,1,0,0,1,1 fcb 0,0,1,1,0,0,0,0,1,1,0,0,1,1 fcb 1,1,0,0,1,1,0,0,0,0,1,1,0,0 fcb 1,1 dirtel: fcc "0657382017" fcc "Matt Tatoo " fcb $0 ;------------------------------------ ;RESET Vector ;------------------------------------ org $0FFD6 fdb Main fdb Main fdb Main fdb Main fdb Main fdb Main fdb Main fdb Main fdb Main fdb Main fdb Main fdb Main fdb Main fdb LC9D4 fdb Main fdb Main fdb Main fdb Main fdb Main fdb Main fdb Main