home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------- *)
- (* UTIL6502.PAS *)
- (* systemspezifische Funktionen fuer Apple II mit *)
- (* Videxkompatibler 80-Zeichenkarte, z.B. IBS AP16 *)
- (* Vorher muss die entsprechende 6502-Schnitt- *)
- (* stelle definiert werden (z.B. $I IBSAPP22.PAS). *)
-
- PROCEDURE CurOff;
- CONST CurReg = $c0b0; RegAdr = $c0b1;
- BEGIN
- Write6502(CurReg,$0a); Write6502(RegAdr,32);
- END;
-
- PROCEDURE CurOn;
- CONST CurReg = $c0b0; RegAdr = $c0b1;
- BEGIN
- Write6502(CurReg,$0a); Write6502(RegAdr,96);
- Write6502(CurReg,$0b); Write6502(RegAdr,8);
- END;
-
- PROCEDURE German;
- BEGIN
- Switch6502($c05e);
- END;
-
- PROCEDURE ASCII;
- BEGIN
- Switch6502($c05f);
- END;
-
- FUNCTION WhereX : BYTE; (* funktioniert auch *)
- BEGIN (* auf Apple //e *)
- WhereX := Succ(Read6502($57b));
- END;
-
- FUNCTION WhereY : BYTE;
- BEGIN
- WhereY := Succ(Read6502($5fb));
- END;
-
- (* folgendes nur Videx-kompatible 80-Zeichenkarte: *)
- FUNCTION ScreenAddr (x,y : BYTE) : INTEGER;
- CONST ScreenStart = $6fb;
- VAR za : INTEGER;
- BEGIN
- za := (Read6502(ScreenStart) SHL 4
- + Pred(x) + Pred(y) * 80) MOD 2048;
- Switch6502((za SHR 9) SHL 2 + $c0b0);
- ScreenAddr := (za MOD $200) + $cc00;
- END;
-
- FUNCTION ScreenChar (x,y : BYTE) : CHAR;
- BEGIN
- ScreenChar := Chr(Read6502(ScreenAddr(x,y)) AND $7f);
- END;
-
- PROCEDURE WriteScreen (x,y : BYTE; ch : CHAR);
- BEGIN
- Write6502(ScreenAddr(x,y),Ord(ch))
- END;
- (* ------------------------------------------------- *)
- (* UTIL6502.PAS *)
-