home *** CD-ROM | disk | FTP | other *** search
- (* ---------------------------------------------------- *)
- (* SOFTCARD.PAS *)
- (* Turbo Pascal-6502-Interface fuer Apple II *)
- (* mit SoftCard *)
-
- (* die Register der 6502: *)
- VAR A_Reg : BYTE ABSOLUTE $F045;
- X_Reg : BYTE ABSOLUTE $F046;
- Y_Reg : BYTE ABSOLUTE $F047;
- Xy_Reg : INTEGER ABSOLUTE $F046;
- Ax_Reg : INTEGER ABSOLUTE $F045;
- A_Res : BYTE ABSOLUTE $F045;
- X_Res : BYTE ABSOLUTE $F046;
- Y_Res : BYTE ABSOLUTE $F047;
-
- (* hier ist nur eine Adress-Transformation erforderlich,*)
- (* da Z80 und 6502 auf den gleichen Speicher zugreifen: *)
- FUNCTION ChAddr (Adr : INTEGER) : INTEGER;
- VAR I : INTEGER;
- BEGIN
- IF Hi(Adr) IN [$10..$Bf] THEN I := Adr - $1000
- ELSE IF Hi(Adr) IN [$C0..$Cf] THEN I := Adr + $2000
- ELSE IF Hi(Adr) IN [0..$0f] THEN I := Adr + $F000
- ELSE I := Adr - $2000;
- ChAddr := I;
- END;
-
- FUNCTION Read6502 (Adr : INTEGER) : BYTE;
- BEGIN
- Read6502 := Mem[ChAddr(Adr)];
- END;
-
- PROCEDURE Write6502 (Adr : INTEGER; Value : BYTE);
- BEGIN
- Mem[ChAddr(Adr)] := Value;
- END;
-
- PROCEDURE Switch6502 (Adr : INTEGER);
- VAR Dummy : BYTE;
- BEGIN
- Dummy := Mem[ChAddr(Adr)];
- END;
-
- PROCEDURE MoveTo6502 (Start, Ziel, Laenge : INTEGER);
- BEGIN
- Move(Mem[Start],Mem[ChAddr(Ziel)],Laenge);
- END;
-
- PROCEDURE MoveFrom6502 (Start, Ziel, Laenge : INTEGER);
- BEGIN
- Move(Mem[ChAddr(Start)],Mem[Ziel],Laenge);
- END;
-
- PROCEDURE Call6502 (Adr : INTEGER);
- BEGIN
- INLINE ($2a/Adr/
- $22/$F3d0/
- $2a/$F3de/
- $77);
- END;
- (* ---------------------------------------------------- *)
- (* SOFTCARD.PAS *)
-