            IFND            VGA_I


VGA_I       SET             1


            include         'vgacst.i'


            XREF            adrEcr
            XREF            _BitmapEcran
            XREF            ConvMode


;
; Ecrit l'octet passé dans le paramètre \2 en mémoire écran à l'adresse \1
;
EcritMemEcr MACRO
            MOVE.W          0(A2,\1.W*2),\1
            BMI.S           .F_ECR\@

            AND.W           #$00FF,\2
            LEA             _BitmapEcran,A0
            ADD.W           \1,A0

            MOVE.B          0(A1,\2.W*4),(A0)
            LEA             TAILLE_PLAN(A0),A0
            MOVE.B          1(A1,\2.W*4),(A0)
            LEA             TAILLE_PLAN(A0),A0
            MOVE.B          2(A1,\2.W*4),(A0)
            LEA             TAILLE_PLAN(A0),A0
            MOVE.B          3(A1,\2.W*4),(A0)

.F_ECR\@
            ENDM


PEEK8       MACRO
            MOVE.W          D0,D1
            LSR.W           D4,D0
            MOVE.L          PEEK(A4,D0.L*4),A0
            AND.L           D5,D1
            MOVE.B          0(A0,D1.L),\1
            ENDM


PEEK16      MACRO
            MOVE.W          \1,D1
            LSR.W           D4,\1
            MOVE.L          PEEK(A4,\1.L*4),A0
            AND.L           D5,D1
            MOVE.W          0(A0,D1.L),\2
            CMP.W           D5,D1
            BLT.S           .P16_OK\@
            MOVE.L          PEEK+4(A4,\1.L*4),A0
            MOVE.B          (A0),\2
.P16_OK\@   ROL.W           #8,\2
            ENDM


PEEKA       MACRO
            MOVE.W          D0,D1
            LSR.W           D4,D0
            MOVE.L          PEEK(A4,D0.L*4),A0
            AND.L           D5,D1
            MOVE.B          0(A0,D1.L),D2
            ENDM


POKEA       MACRO
            MOVE.L          POKE(A4,D0.L*4),A0
            MOVE.B          D2,0(A0,D1.L)
            CMP.W           adrEcr,D0
            BNE.S           .PA_VGA\@
            EcritMemEcr     D1,D2
.PA_VGA\@
            ENDM


POKE8       MACRO
            MOVE.W          D0,D2
            LSR.W           D4,D2
            MOVE.L          POKE(A4,D2.W*4),A0
            AND.L           D5,D0
            MOVE.B          \1,0(A0,D0.L)
            CMP.W           adrEcr,D2
            BNE.S           .P_VGA\@
            IFNC             '\1','D1'
            MOVE.B          \1,D1
            ENDC
            EcritMemEcr     D0,D1
.P_VGA\@
            ENDM

		
;
;           POKE8( D1, PEEK8( D0 ) )
;
LD_D0_D1    MACRO
            MOVE.W          D0,D2
            LSR.W           D4,D2
            MOVE.L          PEEK(A4,D2.W*4),A0
            AND.L           D5,D0
            MOVE.B          0(A0,D0.L),D0
            MOVE.W          D1,D2
            LSR.W           D4,D2
            MOVE.L          POKE(A4,D2.W*4),A0
            AND.L           D5,D1
            MOVE.B          D0,0(A0,D1.L)
            CMP.W           adrEcr,D2
            BNE.S           .P_LD\@
            EcritMemEcr     D1,D0
.P_LD\@
            ENDM


            ENDC
