home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / GEM / GEMBASE.I < prev    next >
Encoding:
Text File  |  1990-10-09  |  4.6 KB  |  3 lines

  1. ⓪ IMPLEMENTATION MODULE GEMBase;(*$Y+*)
  2. ⓪ 
  3. ⓪ (*  --------------------------------------------------------------------------
  4. ⓪!*  System-Version: MOS 2.2
  5. ⓪!*  --------------------------------------------------------------------------
  6. ⓪!*  Version       : 1.0
  7. ⓪!*  --------------------------------------------------------------------------
  8. ⓪!*  Text-Version  : V#0024
  9. ⓪!*  --------------------------------------------------------------------------
  10. ⓪!*  Modul-Holder  : Manuel Chakravarty
  11. ⓪!*  --------------------------------------------------------------------------
  12. ⓪!*  Copyright July 1988 by Manuel Chakravarty
  13. ⓪!*  Vertriebsrechte für ATARI ST unter MEGAMAX Modula-2
  14. ⓪!*                  liegen bei Application Systems Heidelberg
  15. ⓪!*  --------------------------------------------------------------------------
  16. ⓪!*  MCH : Manuel Chakravarty
  17. ⓪!*  --------------------------------------------------------------------------
  18. ⓪!*  Datum    Autor  Version  Bemerkung (Arbeitsbericht)
  19. ⓪!*
  20. ⓪!*  01.04.90 MCH    1.0      Creation; Decls + 'GetPBs', 'VDIHandle, 'CallVDI',
  21. ⓪!*                           'CallAES' def. + impl.
  22. ⓪!*  --------------------------------------------------------------------------
  23. ⓪!*  Modul-Beschreibung:
  24. ⓪!*
  25. ⓪!*  Dieses Modul soll das Programmieren von VDI- und AES-Aufrufen gestatten,
  26. ⓪!*  die die GEM-Library umgehen. Die Namen wurden soweit möglich direkt von
  27. ⓪!*  entsprechenden C-Bindings übernommen und deshalb sollte es unter zur
  28. ⓪!*  Hilfe nahme entsprechender GEM-Literatur möglich sein dieses Modul ohne
  29. ⓪!*  große Erklärungen, die diesen Rahmen sprengen würden zu benutzen.
  30. ⓪!*
  31. ⓪!*  --------------------------------------------------------------------------
  32. ⓪!*)
  33. ⓪ 
  34. ⓪ 
  35. ⓪ FROM    SYSTEM          IMPORT ASSEMBLER, ADDRESS;
  36. ⓪ 
  37. ⓪ FROM    MOSGlobals      IMPORT IllegalPointer;
  38. ⓪ 
  39. ⓪ FROM    GEMEnv          IMPORT GemHandle, DeviceHandle;
  40. ⓪ 
  41. ⓪ IMPORT  GEMShare;
  42. ⓪ 
  43. ⓪ (*$I GEMOps.ICL  *)
  44. ⓪ 
  45. ⓪ 
  46. ⓪ (*  Abfrageroutinen  *)
  47. ⓪ 
  48. ⓪ PROCEDURE GetPBs (gemHdl: GemHandle; VAR vdipb: VDIPB; VAR aespb: AESPB);
  49. ⓪ 
  50. ⓪"(*$L-*)
  51. ⓪"BEGIN
  52. ⓪$ASSEMBLER
  53. ⓪$
  54. ⓪(;  'aespb' löschen (für Fehlerausgang) + 'ADR (aespb) -> A2
  55. ⓪(;
  56. ⓪(MOVE.L  -(A3), A0
  57. ⓪(MOVE.L  A0, A2
  58. ⓪(MOVEQ   #5, D0
  59. ⓪ loop1
  60. ⓪(CLR.L   (A0)+
  61. ⓪(DBF     D0, loop1
  62. ⓪(
  63. ⓪(;  'vdipb' löschen (für Fehlerausgang) + 'ADR (vdipb) -> A1
  64. ⓪(;
  65. ⓪(MOVE.L  -(A3), A0
  66. ⓪(MOVE.L  A0, A1
  67. ⓪(MOVEQ   #4, D0
  68. ⓪ loop2
  69. ⓪(CLR.L   (A0)+
  70. ⓪(DBF     D0, loop2
  71. ⓪(
  72. ⓪(;  überprüfe ob 'gemHdl' o.k. ist + 'gemhdl' -> A0
  73. ⓪(;
  74. ⓪(MOVE.L  -(A3), D0
  75. ⓪(BCLR    #0, D0
  76. ⓪(BNE     ende            ;  LSB gesetzt => illegales handle
  77. ⓪(TST.L   D0
  78. ⓪(BEQ     ende            ;  'gemHdl = NoGemHandle' => illegales handle
  79. ⓪(MOVE.L  D0, A0
  80. ⓪(
  81. ⓪(;  überprüfe magic number
  82. ⓪(;
  83. ⓪(MOVE.W  cb.MAGIC(A0), D0
  84. ⓪(CMP.W   #cbMagic, D0
  85. ⓪(BEQ     ok
  86. ⓪(TRAP    #noErrorTrap
  87. ⓪(DC.W    IllegalPointer - $4000
  88. ⓪(BRA     ende
  89. ⓪ 
  90. ⓪(;  kopiere VDI- und AES-Parameterblock
  91. ⓪(;
  92. ⓪ ok
  93. ⓪(PEA     (A0)
  94. ⓪(LEA     cb.VDIPB(A0), A0
  95. ⓪(MOVEQ   #4, D0
  96. ⓪ loop3
  97. ⓪(MOVE.L  (A0)+, (A1)+
  98. ⓪(DBF     D0, loop3
  99. ⓪(MOVE.L  (A7)+, A0
  100. ⓪(LEA     cb.AESPB(A0), A0
  101. ⓪(MOVEQ   #5, D0
  102. ⓪ loop4
  103. ⓪(MOVE.L  (A0)+, (A2)+
  104. ⓪(DBF     D0, loop4
  105. ⓪ ende
  106. ⓪$END;
  107. ⓪"END GetPBs;
  108. ⓪"(*$L=*)
  109. ⓪"
  110. ⓪ (*$J-*)
  111. ⓪ PROCEDURE VDIHandle (dev: DeviceHandle): INTEGER;
  112. ⓪ (*$J=*)
  113. ⓪ 
  114. ⓪"(*$L-*)
  115. ⓪"BEGIN
  116. ⓪$ASSEMBLER
  117. ⓪(MOVE.L  -(A3), D0
  118. ⓪(AND.W   #-2, D0                  ; Addr. muß gerade sein
  119. ⓪(MOVE.L  D0, A0
  120. ⓪(CMPA.L  #NIL, A0
  121. ⓪(BNE     cont
  122. ⓪(CLR.W   (A3)+
  123. ⓪(BRA     ende
  124. ⓪ cont
  125. ⓪(MOVE.W  device.magic(A0), D0
  126. ⓪(CMP.W   #deviceMagic, D0
  127. ⓪(BEQ     cont2
  128. ⓪(TRAP    #noErrorTrap
  129. ⓪(DC.W    IllegalPointer - $4000
  130. ⓪(CLR.W   (A3)+
  131. ⓪(BRA     ende
  132. ⓪ cont2
  133. ⓪(MOVE.W  device.handle(A0), (A3)+
  134. ⓪ ende
  135. ⓪$END;
  136. ⓪"END VDIHandle;
  137. ⓪"(*$L=*)
  138. ⓪"
  139. ⓪ 
  140. ⓪ (*  Aufrufroutinen  *)
  141. ⓪ 
  142. ⓪ PROCEDURE CallVDI (ptrpb: PtrVDIPB);
  143. ⓪ 
  144. ⓪"(*$L-*)
  145. ⓪"BEGIN
  146. ⓪$ASSEMBLER
  147. ⓪(MOVE.L  -(A3),A0
  148. ⓪(MOVE.L  A0,D1
  149. ⓪(MOVE.L  #VDICode,D0
  150. ⓪(TRAP    #GEMTrap
  151. ⓪$END;
  152. ⓪"END CallVDI;
  153. ⓪"(*$L=*)
  154. ⓪"
  155. ⓪ PROCEDURE CallAES (ptrpb: PtrAESPB);
  156. ⓪ 
  157. ⓪"(*$L-*)
  158. ⓪"BEGIN
  159. ⓪$ASSEMBLER
  160. ⓪(MOVE.L  -(A3), A0
  161. ⓪(MOVE.L  A0,D1
  162. ⓪(MOVE.W  #AESCode,D0
  163. ⓪(TRAP    #GEMTrap
  164. ⓪$END;
  165. ⓪"END CallAES;
  166. ⓪"(*$L=*)
  167. ⓪"
  168. ⓪ END GEMBase.
  169. ⓪ 
  170. ⓪ ə
  171. (* $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äÇâ*)
  172.