;
;
;        LOGON SYSTEM 1991
;
;        WARNING !!! CE TEST ENCLENCHE LA ROM BASSE !!!
;        DONC EN SORTANT,IL FAUT LA DECLENCHER ET IL
;        FAUT ABSOLUMENT QUE CE TEST CE TROUVE EN MEMOIRE
;        HAUTE > #8000 !!!! IMPERATIVEMENT (CPC+)
;        Poser EI RET en #0038 !!!
;
;        TEST CRTC V1.1 (13.04.1991) by LONGSHOT.
;        valeur en #BF00
;
;        0 : HD6845SP
;        1 : MOTOROLA 6845
;        2 : MOTOROLA 6845 S (REG2 49Max)
;        3 : ASIC (PLUS)
;        4 : GATE ARRAY (ERSATZ PLUS)
;
        ORG     #A000
SCREEN  EQU     #C000+12
;       ENT     $
;
        DI
        LD      BC,#7F10
        OUT     (C),C
        LD      A,84
        OUT     (C),A
        LD      C,0
        OUT     (C),C
        OUT     (C),A
        LD      A,75
        INC     C
        OUT     (C),C
        OUT     (C),A
        LD      HL,(#0038)
        LD      HL,#C9FB
        LD      (#0038),HL
;
        CALL    TESTCRT
        LD      (#BF00),A        SAUVE RESULTAT
;
        LD      BC,#7F8E         DECONNECTE ROMS
        OUT     (C),C
        LD      BC,#BC0C
        OUT     (C),C
        LD      BC,#BD30
        OUT     (C),C
        LD      BC,#BC0D
        OUT     (C),C
        LD      BC,#BD00
        OUT     (C),C
        JP      CONTROL
;
TESTCRT
        DI
        LD      E,17
        LD      HL,TABASIC
        LD      BC,#BC00
SASIC
        LD      A,(HL)
        OUT     (C),A
        INC     HL
        DEC     E
        JR      NZ,SASIC
        LD      BC,#7FC0
        OUT     (C),C
        LD      HL,#4000
        LD      DE,#B8A0
        LD      A,123
        LD      (HL),A
        OUT     (C),D
        XOR     A
        LD      (HL),A
        OUT     (C),E
        LD      A,(HL)
        OR      A
        LD      A,3      RETURN ASIC CRTC type 3
        RET     NZ
;
        LD      B,#F5    Wait Sync
VS
        IN      A,(C)
        RRA
        JP      NC,VS
VS1
        IN      A,(C)    Pre-Synchronisation 23.02.92
        RRA
        JP      C,VS1
VS2
        IN      A,(C)
        RRA
        JP      NC,VS2
        EI               Wait 1/300eme sec
        HALT
        LD      HL,75    + 449 usec
WAIT
        DEC     HL
        LD      A,H
        OR      L
        JP      NZ,WAIT
        IN      A,(C)    Sync Valide ?
        RRA
        JP      C,TYPES12        Non
;
;        Type 0 ou 4 ?
;
        LD      BC,#BC00+12
        OUT     (C),C
        LD      DE,#2829
        INC     B
        OUT     (C),E
        INC     B
        IN      A,(C)
        CP      E
        PUSH    AF
        DEC     B
        OUT     (C),D
        POP     AF
        JR      NZ,TYPE0
        LD      A,4      CRTC type 4
        RET
TYPE0
        XOR     A        CRTC type 0
        RET
TYPES12
        HALT
        HALT
        HALT
        DI
VS3
        IN      A,(C)
        RRA
        JP      NC,VS3
        LD      BC,#BC00+2       Overflow Reg 2
        OUT     (C),C
        LD      BC,#BD00+50
        OUT     (C),C
        EI
        HALT             Wait Next Sync 6x1/300eme
        HALT
        HALT
        HALT
        HALT
        HALT
        HALT
        LD      B,#F5
        IN      A,(C)    Sync Ok ?
        RRA
        LD      BC,#BD00+46
        OUT     (C),C
        JP      NC,TYPE2
        LD      A,1      CRTC type 1
        RET
TYPE2
        LD      A,2      CRTC type 2
        RET
;
CONTROL
        DI
        LD      HL,#C000
        LD      DE,#C001
        LD      BC,(#3FFF)
        LD      (HL),L
        LDIR
;
;
        LD      A,(#BF00)
        LD      L,A
        LD      H,0
        ADD     HL,HL
        ADD     HL,HL
        ADD     HL,HL
;
        LD      DE,TB0
        ADD     HL,DE
        PUSH    HL
        POP     IX
;
        LD      HL,SCREEN
        LD      B,8
;
SPRIT0  PUSH    BC
        PUSH    HL
        LD      A,(IX+0)
;
        LD      B,8
SPRIT1
        RLA
        CALL    C,AFFICH
        LD      DE,#0008
        ADD     HL,DE
        DJNZ    SPRIT1
;
SPRIT2  INC     IX
        POP     HL
        LD      DE,#00F0
        ADD     HL,DE
        POP     BC
        DJNZ    SPRIT0
        JR      $
;
AFFICH
        PUSH    BC
        PUSH    HL
        PUSH    AF
        LD      A,#FF
        LD      B,24
AFFICH0
        LD      (HL),A
        INC     HL
        LD      (HL),A
        INC     HL
        LD      (HL),A
        INC     HL
        LD      (HL),A
        INC     HL
        LD      (HL),A
        INC     HL
        LD      (HL),A
        INC     hl
        LD      (HL),A
        INC     HL
        LD      (HL),A
        INC     HL
;
        LD      DE,#07F8
        ADD     HL,DE
        JP      NC,AFFICH1
        LD      DE,#C050
        ADD     HL,DE
AFFICH1
        DJNZ    AFFICH0
        POP     AF
        POP     HL
        POP     BC
        RET
;
TB0
        DB      #7C,#C6,#CE,#D6
        DB      #E6,#C6,#7C,#00
TB1
        DB      #18,#38,#18,#18
        DB      #18,#18,#7E,#00
TB2
        DB      #3C,#66,#06,#3C
        DB      #60,#66,#7E,#00
TB3
        DB      #3C,#66,#06,#1C
        DB      #06,#66,#3C,#00
TB4
        DB      #1C,#3C,#6C,#CC
        DB      #FE,#0C,#1E,#00
TB5
        DB      #7E,#62,#60,#7C
        DB      #06,#66,#3C,#00
;
TABASIC
        DB      255,0,255,119,179
        DB      81,168,212,98,57,156
        DB      70,43,21,138,205
        DB      238