home *** CD-ROM | disk | FTP | other *** search
- ⓪ IMPLEMENTATION MODULE GEMBase;(*$Y+*)
- ⓪
- ⓪ (* --------------------------------------------------------------------------
- ⓪!* System-Version: MOS 2.2
- ⓪!* --------------------------------------------------------------------------
- ⓪!* Version : 1.0
- ⓪!* --------------------------------------------------------------------------
- ⓪!* Text-Version : V#0024
- ⓪!* --------------------------------------------------------------------------
- ⓪!* Modul-Holder : Manuel Chakravarty
- ⓪!* --------------------------------------------------------------------------
- ⓪!* Copyright July 1988 by Manuel Chakravarty
- ⓪!* Vertriebsrechte für ATARI ST unter MEGAMAX Modula-2
- ⓪!* liegen bei Application Systems Heidelberg
- ⓪!* --------------------------------------------------------------------------
- ⓪!* MCH : Manuel Chakravarty
- ⓪!* --------------------------------------------------------------------------
- ⓪!* Datum Autor Version Bemerkung (Arbeitsbericht)
- ⓪!*
- ⓪!* 01.04.90 MCH 1.0 Creation; Decls + 'GetPBs', 'VDIHandle, 'CallVDI',
- ⓪!* 'CallAES' def. + impl.
- ⓪!* --------------------------------------------------------------------------
- ⓪!* Modul-Beschreibung:
- ⓪!*
- ⓪!* Dieses Modul soll das Programmieren von VDI- und AES-Aufrufen gestatten,
- ⓪!* die die GEM-Library umgehen. Die Namen wurden soweit möglich direkt von
- ⓪!* entsprechenden C-Bindings übernommen und deshalb sollte es unter zur
- ⓪!* Hilfe nahme entsprechender GEM-Literatur möglich sein dieses Modul ohne
- ⓪!* große Erklärungen, die diesen Rahmen sprengen würden zu benutzen.
- ⓪!*
- ⓪!* --------------------------------------------------------------------------
- ⓪!*)
- ⓪
- ⓪
- ⓪ FROM SYSTEM IMPORT ASSEMBLER, ADDRESS;
- ⓪
- ⓪ FROM MOSGlobals IMPORT IllegalPointer;
- ⓪
- ⓪ FROM GEMEnv IMPORT GemHandle, DeviceHandle;
- ⓪
- ⓪ IMPORT GEMShare;
- ⓪
- ⓪ (*$I GEMOps.ICL *)
- ⓪
- ⓪
- ⓪ (* Abfrageroutinen *)
- ⓪
- ⓪ PROCEDURE GetPBs (gemHdl: GemHandle; VAR vdipb: VDIPB; VAR aespb: AESPB);
- ⓪
- ⓪"(*$L-*)
- ⓪"BEGIN
- ⓪$ASSEMBLER
- ⓪$
- ⓪(; 'aespb' löschen (für Fehlerausgang) + 'ADR (aespb) -> A2
- ⓪(;
- ⓪(MOVE.L -(A3), A0
- ⓪(MOVE.L A0, A2
- ⓪(MOVEQ #5, D0
- ⓪ loop1
- ⓪(CLR.L (A0)+
- ⓪(DBF D0, loop1
- ⓪(
- ⓪(; 'vdipb' löschen (für Fehlerausgang) + 'ADR (vdipb) -> A1
- ⓪(;
- ⓪(MOVE.L -(A3), A0
- ⓪(MOVE.L A0, A1
- ⓪(MOVEQ #4, D0
- ⓪ loop2
- ⓪(CLR.L (A0)+
- ⓪(DBF D0, loop2
- ⓪(
- ⓪(; überprüfe ob 'gemHdl' o.k. ist + 'gemhdl' -> A0
- ⓪(;
- ⓪(MOVE.L -(A3), D0
- ⓪(BCLR #0, D0
- ⓪(BNE ende ; LSB gesetzt => illegales handle
- ⓪(TST.L D0
- ⓪(BEQ ende ; 'gemHdl = NoGemHandle' => illegales handle
- ⓪(MOVE.L D0, A0
- ⓪(
- ⓪(; überprüfe magic number
- ⓪(;
- ⓪(MOVE.W cb.MAGIC(A0), D0
- ⓪(CMP.W #cbMagic, D0
- ⓪(BEQ ok
- ⓪(TRAP #noErrorTrap
- ⓪(DC.W IllegalPointer - $4000
- ⓪(BRA ende
- ⓪
- ⓪(; kopiere VDI- und AES-Parameterblock
- ⓪(;
- ⓪ ok
- ⓪(PEA (A0)
- ⓪(LEA cb.VDIPB(A0), A0
- ⓪(MOVEQ #4, D0
- ⓪ loop3
- ⓪(MOVE.L (A0)+, (A1)+
- ⓪(DBF D0, loop3
- ⓪(MOVE.L (A7)+, A0
- ⓪(LEA cb.AESPB(A0), A0
- ⓪(MOVEQ #5, D0
- ⓪ loop4
- ⓪(MOVE.L (A0)+, (A2)+
- ⓪(DBF D0, loop4
- ⓪ ende
- ⓪$END;
- ⓪"END GetPBs;
- ⓪"(*$L=*)
- ⓪"
- ⓪ (*$J-*)
- ⓪ PROCEDURE VDIHandle (dev: DeviceHandle): INTEGER;
- ⓪ (*$J=*)
- ⓪
- ⓪"(*$L-*)
- ⓪"BEGIN
- ⓪$ASSEMBLER
- ⓪(MOVE.L -(A3), D0
- ⓪(AND.W #-2, D0 ; Addr. muß gerade sein
- ⓪(MOVE.L D0, A0
- ⓪(CMPA.L #NIL, A0
- ⓪(BNE cont
- ⓪(CLR.W (A3)+
- ⓪(BRA ende
- ⓪ cont
- ⓪(MOVE.W device.magic(A0), D0
- ⓪(CMP.W #deviceMagic, D0
- ⓪(BEQ cont2
- ⓪(TRAP #noErrorTrap
- ⓪(DC.W IllegalPointer - $4000
- ⓪(CLR.W (A3)+
- ⓪(BRA ende
- ⓪ cont2
- ⓪(MOVE.W device.handle(A0), (A3)+
- ⓪ ende
- ⓪$END;
- ⓪"END VDIHandle;
- ⓪"(*$L=*)
- ⓪"
- ⓪
- ⓪ (* Aufrufroutinen *)
- ⓪
- ⓪ PROCEDURE CallVDI (ptrpb: PtrVDIPB);
- ⓪
- ⓪"(*$L-*)
- ⓪"BEGIN
- ⓪$ASSEMBLER
- ⓪(MOVE.L -(A3),A0
- ⓪(MOVE.L A0,D1
- ⓪(MOVE.L #VDICode,D0
- ⓪(TRAP #GEMTrap
- ⓪$END;
- ⓪"END CallVDI;
- ⓪"(*$L=*)
- ⓪"
- ⓪ PROCEDURE CallAES (ptrpb: PtrAESPB);
- ⓪
- ⓪"(*$L-*)
- ⓪"BEGIN
- ⓪$ASSEMBLER
- ⓪(MOVE.L -(A3), A0
- ⓪(MOVE.L A0,D1
- ⓪(MOVE.W #AESCode,D0
- ⓪(TRAP #GEMTrap
- ⓪$END;
- ⓪"END CallAES;
- ⓪"(*$L=*)
- ⓪"
- ⓪ END GEMBase.
- ⓪
- ⓪ ə
- (* $FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$00000ED8$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7$FFEC55E7ü$00000023T.......T.......T.......T.......T.......T.......T.......T.......T.......T.......$00000027$00000D56$FFEC55E7$00000D56$00000C67$00000E30$00000778$0000045D$00000404$00000B38$00000BB6$FFEC557B$0000079B$000007F4$00000C3F$0000080EäÇâ*)
-