home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / pdp8 / pdp-8 / fromnichols / os8v3f.exe / RESOVD.MA < prev    next >
Text File  |  1995-07-27  |  6KB  |  268 lines

  1. /OVRDRV - OVERLAY DRIVER FOR RESORC
  2. /ASSUMES EVERYTHING IS IN FIELD 1
  3. /
  4. /
  5. /
  6. /
  7. /
  8. /
  9. /
  10. /
  11. /
  12. /COPYRIGHT  (C)  1977,1978 BY DIGITAL EQUIPMENT CORPORATION
  13. /
  14. /
  15. /
  16. /
  17. /
  18. /
  19. /
  20. /
  21. /
  22. /
  23. /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
  24. /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
  25. /CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
  26. /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
  27. /
  28. /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
  29. /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
  30. /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
  31. /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
  32. /
  33. /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
  34. /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
  35. /DIGITAL.
  36. /
  37. /
  38. /
  39. /
  40. /
  41. /
  42. /
  43. /
  44. /
  45. /
  46.  
  47. /OVERLAY DRIVER
  48. /FOR LINKER PROGRAM MODULES
  49. /V1B
  50.  
  51.  
  52. /THIS SECT IS TWO LOCATIONS AND CONTAINS THE TRANSFER VECTOR TO SWAPER
  53. /AND A FLAG THAT INDICATES WHETHER A JMP (1) OR JMS (0) WAS PERFORMED
  54. /TO THE TRANSFER VECTOR
  55.  
  56.     .GLOBAL XFERV
  57.  
  58. /THIS IS THE MAIN DRIVER SECTION
  59.  
  60.     .SECT    SWAPER,R
  61.     .GLOBAL    SWPTAB
  62.  
  63.     FIELD    1
  64.  
  65. SWAP,    6102            /VERSION NUMBER
  66.     DCA    AC        /SAVE CALLING AC
  67.     RAL
  68.     DCA    LINK        /AND LINK
  69.     RDF            /GET CALLING DF
  70.     TAD    (CDF        /FORM CDF
  71. SWAP0,    JMP    ONCE        /DO ONCE ONLY CODE - REPLACED BY DCA EXIT
  72.     CDF    .        /CHANGE TO THIS DATA FIELD
  73.     TAD I    SWAP        /GET OVERLAY,LEVEL,FIELD
  74.     DCA    BINDAT        /SAVE
  75.     ISZ    SWAP        /BUMP POINTER
  76.     TAD I    SWAP        /GET SUBROUTINE ADDRESS
  77.     DCA    XITLOC        /SAVE
  78.     TAD    BINDAT        /FORM CDF TO CALLED SUBROUTINE
  79.     AND    (7
  80.     RAL CLL
  81.     RTL
  82.     TAD    (CDF
  83.     DCA    SWAP1A        /SAVE
  84.     TAD    SWAP1A        /FORM CIF TO CALLED SUBROUTINE
  85.     IAC
  86.     DCA    EXIT+1        /SAVE FOR EXIT
  87. /LOAD OVERLAY OF CALLED SUBROUTINE
  88.  
  89. LOAD,    TAD    BINDAT
  90.     AND    (1600        /EXTRACT LEVEL OF CALLED SUBROUTINE
  91.     RTR CLL            /5 RIGHT
  92.     RTR
  93.     RAR
  94.     DCA    PNTR        /SAVE
  95.     TAD    PNTR
  96.     TAD    (SWPTAB        /COMPUTE ENTRY INTO SWAP TABLE
  97.     DCA    FLD        /POINTS TO FIELD OF OVERLAY
  98.     TAD    PNTR        /COMPUTE ENTRY INTO CURRENT OVERLAY TABLE
  99.     RTR CLL
  100.     TAD    (CURTAB
  101.     DCA    PNTR
  102.     TAD    BINDAT        /EXTRACT DESIRED OVERLAY NUMBER
  103.     AND    (170
  104.     RTR CLL            /RIGHT 3
  105.     RAR
  106.     CIA            /NEGATE
  107.     DCA    TEMP
  108.     TAD    TEMP
  109.     TAD I    PNTR        /COMPARE WITH CURRENT OVERLAY NUMBER FOR LEVEL
  110.     SNA CLA            /SAME?
  111.     JMP    SWAP1        /YES, NO READING NEEDED
  112. LOAD1,    TAD    TEMP        /NO, SET TO NEW
  113.     CIA
  114.     DCA I    PNTR        /OVERLAY NUMBER
  115.     TAD    FLD        /SET UP POINTERS TO
  116.     IAC
  117.     DCA    ADDRES        /ADDRESS
  118.     TAD    ADDRES
  119.     IAC
  120.     DCA    RELBLK        /RELATIVE BLOCK NUMBER
  121.     TAD    RELBLK
  122.     IAC
  123.     DCA    LENGTH        /LENGTH OF OVERLAY
  124.     TAD    TEMP        /TEST OVERLAY NUMBER
  125.     SNA CLA            /0?
  126.     JMP    LOAD2        /YES, NO MULTIPLICATION NEEDED
  127.     TAD I    LENGTH        /BLOCK NUMBER = (LENGTH OF OVERLAY)
  128.     JMP I    .+1        /TIMES (THE NUMBER OF THE OVERLAY)
  129.     PATCH
  130. LOAD2,    TAD I    RELBLK        /PLUS (RELATIVE BLOCK OF LEVEL)
  131.     TAD    STRBLK        /PLUS (STARTING BLOCK OF PROGRAM)
  132.     DCA    REDBLK        /SAVE IN CALL LOCATION
  133.     TAD I    ADDRES        /GET ADDRESS TO LOAD
  134.     DCA    REDADD        /SAVE IN CALL LOCATION
  135.     TAD I    FLD        /GET FIELD
  136.     AND    (7        /MASK
  137.     RTR CLL
  138.     RAR            /POSITION
  139.     TAD I    LENGTH        /GET LENGTH
  140.     RTL
  141.     RTL
  142.     RTL
  143.     DCA    REDCNT        /FORM CONTROL WORD
  144.     CIF    0
  145.     JMS I    (7607        /CALL SYSTEM HANDLER TO READ IN OVERLAY
  146. REDCNT,    7756            /FUNCTION CONTROL WORD (POINTS TO MREAD-1 FOR "ONCE"
  147. REDADD,    -7607            /BUFFER ADDRESS (CONTAINS SYS: ENTRY POINT FOR "ONCE"
  148. REDBLK,    0            /STARTING BLOCK NUMBER
  149.     HLT            /ERROR RETURN ADDRESS
  150.  
  151. SWAP1,    TAD    XFERV        /GET JMP-JMS FLAG
  152.     SZA CLA            /SET?
  153.     JMP    SWAP2        /YES, EXECUTE A JMP
  154.     CLA CLL CMA RTL        /-3
  155.     TAD    SWAP        /BACK UP TO CALLER'S PC
  156.     DCA    SWAP
  157.     TAD I    SWAP
  158. SWAP1A,    0            /CDF TO CALLED SUBROUTINE
  159.     DCA I    XITLOC        /SAVE IN CALLED SUBROUTINE
  160.     ISZ    XITLOC        /BUMP TRANSFER ADDRESS
  161. /**    CDF    .
  162.     TAD    (ISZ XFERV
  163.     DCA I    SWAP        /SET BACK UP ENTRY IN XFER VECTOR TABLE
  164. SWAP2,    DCA    XFERV        /CLEAR FLAG
  165.     TAD    LINK        /RESTORE LINK AND AC
  166.     RAR CLL
  167.     TAD    AC
  168. EXIT,    0            /SET DF TO CALLING FIELD
  169.     0            /SET IF TO CALLED FIELD
  170.     JMP I    XITLOC        /GO TO CALLED SUBROUTINE
  171.  
  172. /VARIABLE LOCATIONS
  173. /SOME OF THE FOLLOWING LOCATIONS CONTAIN
  174. /ONCE ONLY CODE TO SET UP STARTING BLOCK
  175. /AND CHECK THAT FILE CAME FROM SYS:
  176. CURTAB=.            /CURRENT OVERLAY IN LEVEL TABLE (8 ENTRIES)
  177. STRBLK=.            /ENTRY 0 IS USED TO HOLD STARTING BLOCK OF FILE
  178. ONCE,    DCA    EXIT        /SAVE CALLING FIELD
  179.                 /ALSO ENTRY 0
  180.     TAD    .-1        /SET UP SO WON'T BE EXECUTED AGAIN
  181.                 /ALSO ENTRY 1
  182.     DCA    SWAP0
  183.                 /ALSO ENTRY 2
  184.     CDF    0
  185.                 /ALSO ENTRY 3
  186.     TAD I    FLD        /GET STARTING BLOCK FROM "SOFSET"
  187.                 /ALSO ENTRY 4
  188.     SNA
  189.                 /ALSO ENTRY 5
  190.     HLT            /ERROR, K.M. PATCHES NOT IN
  191.                 /ALSO ENTRY 6
  192.     DCA    STRBLK        /SAVE
  193.                 /ALSO ENTRY 7
  194.     TAD I    REDCNT        /CHECK FILE CAME FROM SYS:
  195.     TAD    REDADD
  196.  
  197. BINDAT,                /CONTAINS OVERLAY,LEVEL,FIELD OF DESIRED SUBROUTINE
  198.     SNA CLA            /FROM SYS: ?
  199. XITLOC,                /CONTAINS LOCATION TO GO TO IN DESIRED SUBROUTINE
  200.     JMP    SWAP0+1        /YES, OK
  201. PNTR,                /POINTS INTO CURTAB
  202.     HLT            /NO, ERROR
  203. TEMP,                /TEMP STORAGE
  204.     JMP    .-1        /DON'T ALLOW CONTINUE
  205. FLD,                /POINTS TO FIELD WORD IN SWPTAB
  206.     7747            /POINTER TO "SOFSET"
  207.  
  208. ADDRES=REDADD            /POINTS TO ADDRESS WORD IN SWPTAB
  209. RELBLK=REDBLK            /POINTS TO RELATIVE BLOCK WORD IN SWPTAB
  210. LENGTH=REDCNT            /POINTS TO LENGTH WORD IN SWPTAB
  211.  
  212. AC,    0            /SAVED AC
  213. LINK,    0            /SAVED LINK
  214.  
  215.     PAGE
  216.  
  217. /PATCH TO FIX BLOCK POSITION CALCULATION
  218. PATCH,    IAC        /CONVERT PAGES TO BLOCKS
  219.     CLL RAR
  220.     DCA    PTEMP
  221.     TAD    PTEMP    /MULTIPLY BLOCK LENGTH
  222.     ISZ I    PPNT    /BY OVERLAY NUMBER
  223.     JMP    .-2
  224.     JMP I    .+1
  225.     LOAD2
  226. PPNT,    TEMP
  227. PTEMP,    0
  228.  
  229.  
  230.  
  231. /THIS AREA CONTAINS OVERLAY DATA FOR MAIN AND THE 7 LEVELS
  232. /THE FORMAT OF EACH ENTRY IS:
  233. /WORD1:    FIELD OF LEVEL
  234. /WORD2:    ADDRESS OF LEVEL
  235. /WORD3:    RELATIVE BLOCK OF 1ST OVERLAY IN LEVEL
  236. /WORD4:    LENGTH OF THE LEVEL (ANY AND ALL OVERLAYS-EACH)
  237. /    (ALL OVERLAYS IN A LEVEL ARE THE SAME LENGTH)
  238.  
  239. SWPTAB,
  240.  
  241.     *.+40
  242.  
  243. /THIS AREA CONTAINS THE TRANSFER VECTORS FOR EACH ENTRY POINT
  244. /IN ALL THE OVERLAYS IN ALL THE LEVELS
  245. /ITS SIZE SHOULD BE MODIFIED BY THE USER
  246. /TO FIT THE MAXIMUM NUMBER OF TRANSFER VECTORS NEEDED
  247. /EACH TRANSFER VECTOR OCCUPIES 4 LOCATIONS
  248. /THE TABLE IS INITIALLY SET UP FOR 24(DEC) (30(OCT)) VECTORS
  249. /THE MAXIMUM SIZE THIS TABLE CAN BE IS 3774 (OCT) LOCATIONS FOR
  250. /511 (DEC) (777 (OCT)) VECTORS
  251. /THE FORMAT OF EACH VECTOR ENTRY IS:
  252. /WORD1:    ISZ    XFERV
  253. /WORD2:    JMS I    XFERV+1
  254. /WORD3:    LEVEL/OVERLAY/FIELD
  255. /WORD4:    ADDRESS
  256.  
  257.     .FSECT TRANVC
  258.     FIELD SWAPER
  259.  
  260.     SIZE=14        /MODIFY THIS LINE TO CHANGE THE SIZE OF THE TABLE
  261.  
  262.     *SIZE^4
  263.  
  264. XFERV,    0
  265.     SWAPER
  266.  
  267.  
  268.