            IFND            VGA_I


VGA_I       SET             1


            include         'vgacst.i'


            XREF            adrEcr
            XREF            _BitmapEcran
            XREF            ConvMode
            XREF            TabPOKE


;
; 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
            ADD.W           \2,\2
            LEA             _BitmapEcran,A0
            ADD.W           \1,A0

            MOVE.B          3(A1,\2.W*8),(A0)

            LEA             TAILLE_PLAN(A0),A0
            MOVE.B          7(A1,\2.W*8),(A0)

            LEA             TAILLE_PLAN(A0),A0
            MOVE.B          11(A1,\2.W*8),(A0)

            MOVE.B          15(A1,\2.W*8),TAILLE_PLAN(A0)

.F_ECR\@
            ENDM


PEEK8       MACRO
            MOVE.L          0(A3,\1.W*4),A0
            MOVE.B          (A0),\2
            ENDM


;
; Lit 1 octet à l'adresse du PC (pour décodage instructions et autre)
;
GETN        MACRO
            MOVE.L          0(A3,D7.W*4),A0
            ADDQ.W          #1,D7
            MOVE.B          (A0),\1
            ENDM




PEEK16      MACRO
            MOVE.L          0(A3,\1.W*4),A0
            MOVE.W          (A0),\2
            ROL.W           #8,\2
            ENDM


PEEK16B     MACRO
            MOVE.L          0(A3,\1.W*4),A0
            MOVE.B          (A0)+,\2
            MOVE.B          (A0),\3
            ENDM


PEEKA       MACRO
            MOVE.L          0(A3,D0.W*4),A0
            MOVE.B          (A0),D2
            ENDM


POKEA       MACRO
            LEA             TabPOKE,A0
            MOVE.L          0(A0,D0.W*4),A0
            MOVE.B          D2,(A0)
            CMP.W           adrEcr,D0
            BNE.S           .PA_VGA\@
            AND.W           D5,D0
            EcritMemEcr     D0,D2
.PA_VGA\@
            ENDM


POKE8       MACRO
            LEA             TabPOKE,A0
            MOVE.L          0(A0,D0.W*4),A0
            MOVE.B          \1,(A0)
            MOVE.W          D0,D2
            LSR.W           D4,D2
            CMP.W           adrEcr,D2
            BNE.S           .P_VGA\@
            AND.W           D5,D0
            IFC            '\1','D1'
                EcritMemEcr     D0,D1
            ELSE
                IFC             '\1','D3'
                    EcritMemEcr     D0,D3
                ELSE
                    IFC             '\1','D6'
                        EcritMemEcr     D0,D6
                    ELSE
                        IFC             '\1','D7'
                            EcritMemEcr     D0,D7
                        ELSE
                            MOVE.B              \1,D1
                            EcritMemEcr         D0,D1
                        ENDC
                    ENDC
                ENDC
            ENDC
.P_VGA\@
            ENDM

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


            ENDC
