home *** CD-ROM | disk | FTP | other *** search
/ ftp.update.uu.se / ftp.update.uu.se.2014.03.zip / ftp.update.uu.se / pub / pdp8 / os278-src.tar.Z / os278-src.tar / ccldrv.ma < prev    next >
Text File  |  1992-09-18  |  6KB  |  268 lines

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