home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / misc / empty.asm < prev    next >
Assembly Source File  |  1990-04-17  |  8KB  |  264 lines

  1.     Page    58,132
  2.     Title    EMPTY.ASM    Empty Slot Routines
  3. ;******************************************************************************
  4. ;
  5. ;   Name:    EMPTY.ASM    Empty Slot Routines
  6. ;
  7. ;   Group:    Emulator
  8. ;
  9. ;   Revision:    1.00
  10. ;
  11. ;   Date:    January 30, 1988
  12. ;
  13. ;   Author:    Randy W. Spurlock
  14. ;
  15. ;******************************************************************************
  16. ;
  17. ;  Module Functional Description:
  18. ;
  19. ;        This module contains all the code for the Apple
  20. ;    empty slots.
  21. ;
  22. ;******************************************************************************
  23. ;
  24. ;  Changes:
  25. ;
  26. ;    DATE     REVISION                DESCRIPTION
  27. ;  --------   --------    -------------------------------------------------------
  28. ;   1/30/88    1.00    Original
  29. ;
  30. ;******************************************************************************
  31.     Page
  32. ;
  33. ;  Public Declarations
  34. ;
  35.     Public    Empty_ID        ; Empty slot ID string
  36.     Public    Empty_Init        ; Empty slot initialization routine
  37.     Public    Empty_Ctrl        ; Empty slot control routine
  38.     Public    Empty_Rd        ; Empty slot read routine
  39.     Public    Empty_Wrt        ; Empty slot write routine
  40.     Public    Empty_Mem_Rd        ; Empty slot memory read routine
  41.     Public    Empty_Mem_Wrt        ; Empty slot memory write routine
  42.     Public    Empty_Exp_Rd        ; Empty slot expansion read routine
  43.     Public    Empty_Exp_Wrt        ; Empty slot expansion write routine
  44. ;
  45. ;  External Declarations
  46. ;
  47.     Extrn    Slot_Address:Near    ; Get expansion slot address   (DEVICE)
  48.     Extrn    Error:Near        ; Apple emulator error routine    (APPLE)
  49.     Extrn    Exit:Near        ; Apple emulator exit routine    (APPLE)
  50. ;
  51. ;  LOCAL Equates
  52. ;
  53. ;        equ      h        ;
  54. ;
  55. ;  Define any include files needed
  56. ;
  57.     Include     Macros.inc    ; Include the macro definitions
  58.     Include     Equates.inc    ; Include the equate definitions
  59.     .286c                ; Include 80286 instructions
  60.     Page
  61. ;
  62. ;  Define the emulator code segment
  63. ;
  64. Emulate Segment Word public 'EMULATE'   ; Emulator code segment
  65.     Assume    cs:Emulate, ds:Nothing, es:Nothing
  66.     Subttl    Empty_Init    Empty Slot Initialization
  67.     Page    +
  68. ;******************************************************************************
  69. ;
  70. ;    Empty_Init(RAM_Space, Slot_Number)
  71. ;
  72. ;        Return to the caller
  73. ;
  74. ;    Registers on Entry:
  75. ;
  76. ;        AX    - Slot number (0 - 7)
  77. ;        DS    - 65C02 RAM space
  78. ;
  79. ;    Registers on Exit:
  80. ;
  81. ;        None
  82. ;
  83. ;******************************************************************************
  84.         Even            ; Force procedure to even address
  85. Empty_Init    Proc    Near        ; Empty slot initialization procedure
  86.     ret                ; Return to the caller
  87. Empty_Init    Endp            ; End of the Empty_Init procedure
  88.     Subttl    Empty_Ctrl    Empty Slot Control
  89.     Page    +
  90. ;******************************************************************************
  91. ;
  92. ;    Empty_Ctrl(RAM_Space, Slot_Number)
  93. ;
  94. ;        Return to the caller
  95. ;
  96. ;    Registers on Entry:
  97. ;
  98. ;        AX    - Slot number (0 - 7)
  99. ;        DS    - 65C02 RAM space
  100. ;
  101. ;    Registers on Exit:
  102. ;
  103. ;        None
  104. ;
  105. ;******************************************************************************
  106.         Even            ; Force procedure to even address
  107. Empty_Ctrl    Proc    Near        ; Empty slot control procedure
  108.     ret                ; Return to the caller
  109. Empty_Ctrl    Endp            ; End of the Empty_Ctrl procedure
  110.     Subttl    Empty_Rd    Empty Slot Read
  111.     Page    +
  112. ;******************************************************************************
  113. ;
  114. ;    Empty_Rd(Effective_Address)
  115. ;
  116. ;        Read the memory location value (Byte)
  117. ;        Return to the caller
  118. ;
  119. ;    Registers on Entry:
  120. ;
  121. ;        DS:DI - 65C02 Effective address
  122. ;
  123. ;    Registers on Exit:
  124. ;
  125. ;        AL    - Memory value
  126. ;
  127. ;******************************************************************************
  128.         Even            ; Force procedure to even address
  129. Empty_Rd    Proc    Near        ; Empty slot read procedure
  130.     mov    al,ds:[di]        ; Read the memory location
  131.     ret                ; Return to the caller
  132. Empty_Rd    Endp            ; End of the Empty_Rd procedure
  133.     Subttl    Empty_Wrt    Empty Slot Write
  134.     Page    +
  135. ;******************************************************************************
  136. ;
  137. ;    Empty_Wrt(Effective_Address)
  138. ;
  139. ;        Write value to memory location value (Byte)
  140. ;        Return to the caller
  141. ;
  142. ;    Registers on Entry:
  143. ;
  144. ;        AL    - Memory value
  145. ;        DS:DI - 65C02 Effective address
  146. ;
  147. ;    Registers on Exit:
  148. ;
  149. ;        None
  150. ;
  151. ;******************************************************************************
  152.         Even            ; Force procedure to even address
  153. Empty_Wrt    Proc    Near        ; Empty slot write procedure
  154.     mov    ds:[di],al        ; Write the memory location
  155.     ret                ; Return to the caller
  156. Empty_Wrt    Endp            ; End of the Empty_Wrt procedure
  157.     Subttl    Empty_Mem_Rd    Empty Slot Memory Read
  158.     Page    +
  159. ;******************************************************************************
  160. ;
  161. ;    Empty_Mem_Rd(Effective_Address)
  162. ;
  163. ;        Read the memory location value (Byte)
  164. ;        Return to the caller
  165. ;
  166. ;    Registers on Entry:
  167. ;
  168. ;        DS:DI - 65C02 Effective address
  169. ;
  170. ;    Registers on Exit:
  171. ;
  172. ;        AL    - Memory value
  173. ;
  174. ;******************************************************************************
  175.         Even            ; Force procedure to even address
  176. Empty_Mem_Rd    Proc    Near        ; Empty slot memory read procedure
  177.     mov    al,ds:[di]        ; Read the memory location
  178.     ret                ; Return to the caller
  179. Empty_Mem_Rd    Endp            ; End of the Empty_Mem_Rd procedure
  180.     Subttl    Empty_Mem_Wrt    Empty Slot Memory Write
  181.     Page    +
  182. ;******************************************************************************
  183. ;
  184. ;    Empty_Mem_Wrt(Effective_Address)
  185. ;
  186. ;        Write value to memory location value (Byte)
  187. ;        Return to the caller
  188. ;
  189. ;    Registers on Entry:
  190. ;
  191. ;        AL    - Memory value
  192. ;        DS:DI - 65C02 Effective address
  193. ;
  194. ;    Registers on Exit:
  195. ;
  196. ;        None
  197. ;
  198. ;******************************************************************************
  199.         Even            ; Force procedure to even address
  200. Empty_Mem_Wrt    Proc    Near        ; Empty slot memory write procedure
  201.     mov    ds:[di],al        ; Write the memory location
  202.     ret                ; Return to the caller
  203. Empty_Mem_Wrt    Endp            ; End of the Empty_Mem_Wrt procedure
  204.     Subttl    Empty_Exp_Rd    Empty Slot Expansion Read
  205.     Page    +
  206. ;******************************************************************************
  207. ;
  208. ;    Empty_Exp_Rd(Effective_Address)
  209. ;
  210. ;        Read the memory location value (Byte)
  211. ;        Return to the caller
  212. ;
  213. ;    Registers on Entry:
  214. ;
  215. ;        DS:DI - 65C02 Effective address
  216. ;
  217. ;    Registers on Exit:
  218. ;
  219. ;        AL    - Memory value
  220. ;
  221. ;******************************************************************************
  222.         Even            ; Force procedure to even address
  223. Empty_Exp_Rd    Proc    Near        ; Empty slot expansion read procedure
  224.     mov    al,ds:[di]        ; Read the memory location
  225.     ret                ; Return to the caller
  226. Empty_Exp_Rd    Endp            ; End of the Empty_Exp_Rd procedure
  227.     Subttl    Empty_Exp_Wrt    Empty Slot Expansion Write
  228.     Page    +
  229. ;******************************************************************************
  230. ;
  231. ;    Empty_Exp_Wrt(Effective_Address)
  232. ;
  233. ;        Return to the caller (Area is NOT writable)
  234. ;
  235. ;    Registers on Entry:
  236. ;
  237. ;        AL    - Memory value
  238. ;        DS:DI - 65C02 Effective address
  239. ;
  240. ;    Registers on Exit:
  241. ;
  242. ;        None
  243. ;
  244. ;******************************************************************************
  245.         Even            ; Force procedure to even address
  246. Empty_Exp_Wrt    Proc    Near        ; Empty slot expansion write procedure
  247.     ret                ; Return to the caller
  248. Empty_Exp_Wrt    Endp            ; End of the Empty_Exp_Wrt procedure
  249.     Page
  250. ;******************************************************************************
  251. ;
  252. ;    Define the empty slot data structures
  253. ;
  254. ;******************************************************************************
  255. Empty_ID    Equ    This Byte    ; Empty slot ID string
  256.         Db    "Empty Slot",0
  257. ;******************************************************************************
  258. ;
  259. ;    Define the end of the Emulator Code Segment
  260. ;
  261. ;******************************************************************************
  262. Emulate Ends
  263.     End                ; End of the Empty module
  264.