home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 12 / softcard.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-09-29  |  1.7 KB  |  63 lines

  1. (* ---------------------------------------------------- *)
  2. (*                    SOFTCARD.PAS                      *)
  3. (*      Turbo Pascal-6502-Interface fuer Apple II       *)
  4. (*                    mit SoftCard                      *)
  5.  
  6.                               (* die Register der 6502: *)
  7. VAR  A_Reg  : BYTE    ABSOLUTE $F045;
  8.      X_Reg  : BYTE    ABSOLUTE $F046;
  9.      Y_Reg  : BYTE    ABSOLUTE $F047;
  10.      Xy_Reg : INTEGER ABSOLUTE $F046;
  11.      Ax_Reg : INTEGER ABSOLUTE $F045;
  12.      A_Res  : BYTE    ABSOLUTE $F045;
  13.      X_Res  : BYTE    ABSOLUTE $F046;
  14.      Y_Res  : BYTE    ABSOLUTE $F047;
  15.  
  16. (* hier ist nur eine Adress-Transformation erforderlich,*)
  17. (* da Z80 und 6502 auf den gleichen Speicher zugreifen: *)
  18. FUNCTION ChAddr (Adr : INTEGER) : INTEGER;
  19. VAR I : INTEGER;
  20. BEGIN
  21.   IF Hi(Adr) IN [$10..$Bf] THEN I := Adr - $1000
  22.   ELSE IF Hi(Adr) IN [$C0..$Cf] THEN I := Adr + $2000
  23.   ELSE IF Hi(Adr) IN [0..$0f] THEN I := Adr + $F000
  24.   ELSE I := Adr - $2000;
  25.   ChAddr := I;
  26. END;
  27.  
  28. FUNCTION Read6502 (Adr : INTEGER) : BYTE;
  29. BEGIN
  30.   Read6502 := Mem[ChAddr(Adr)];
  31. END;
  32.  
  33. PROCEDURE Write6502 (Adr : INTEGER; Value : BYTE);
  34. BEGIN
  35.   Mem[ChAddr(Adr)] := Value;
  36. END;
  37.  
  38. PROCEDURE Switch6502 (Adr : INTEGER);
  39. VAR Dummy : BYTE;
  40. BEGIN
  41.   Dummy := Mem[ChAddr(Adr)];
  42. END;
  43.  
  44. PROCEDURE MoveTo6502 (Start, Ziel, Laenge : INTEGER);
  45. BEGIN
  46.   Move(Mem[Start],Mem[ChAddr(Ziel)],Laenge);
  47. END;
  48.  
  49. PROCEDURE MoveFrom6502 (Start, Ziel, Laenge : INTEGER);
  50. BEGIN
  51.   Move(Mem[ChAddr(Start)],Mem[Ziel],Laenge);
  52. END;
  53.  
  54. PROCEDURE Call6502 (Adr : INTEGER);
  55. BEGIN
  56.   INLINE ($2a/Adr/
  57.           $22/$F3d0/
  58.           $2a/$F3de/
  59.           $77);
  60. END;
  61. (* ---------------------------------------------------- *)
  62. (*                    SOFTCARD.PAS                      *)
  63.