home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / GEOSApps / GEOSTECHREF2.ARC / PAGE39-53 < prev    next >
Text File  |  2019-04-13  |  31KB  |  991 lines

  1.  
  2.  
  3.  
  4.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-36
  5.  
  6.  
  7.           ╞UNCTION ╬AME: ╔╥╤╥╘╬
  8.           ╨URPOSE: ╚ANDLES  SEVERAL  ITEMS  THAT  OCCUR  AT  REGULAR  TIMED
  9.                    INTERVALS.
  10.           ├ALL ADDRESS: $├100
  11.           ╧UTPUTS: ╙EE DESCRIPTION
  12.  
  13.           ─ESCRIPTION: ╟┼╧╙ SETS UP THE RASTER INTERRUPT ON THE ╓╔├ CHIP TO
  14.           CAUSE  AN INTERRUPT EVERY SIXTIETH OF A SECOND.  ╘HIS ROUTINE  IS
  15.           CALLED  BY  ╟┼╧╙ AFTER EACH INTERRUPT.  ╞IRST IT READS THE  INPUT
  16.           DEVICE  AND  UPDATES  THE MOUSE'S  POSITION,  TURNING  IT  ON  IF
  17.           NECESSARY. ╔T THEN SCANS THE COMMAND TABLE AT $8719 TO SEE IF ANY
  18.           OF THE COMMAND BYTES HAVE BOTH BITS 4 AND 5 RESET. ╔F SO, IT THEN
  19.           DECREMENTS  THE  ASSOCIATED  COUNTER AT  $86╞1.  ╔F  THE  COUNTER
  20.           REACHES  ZERO,  ITS  VALUE IS RESET AND BIT 7 OF  THE  ASSOCIATED
  21.           COMMAND  BYTE IS SET.  ╘HIS WILL CAUSE THE APPROPRIATE SUBROUTINE
  22.           TO BE EXECUTED THE NEXT TIME THE TABLE IS POLLED.  ╘HE NEXT  PART
  23.           OF THIS ROUTINE IS TO DECREMENT ALL NONZERO COUNTERS IN THE STACK
  24.           AT  $877╞.  ╘HE ROUTINE TO BLINK THE TEXT CURSOR IS CALLED  NEXT.
  25.           ╞INALLY, THE RANDOM NUMBER GENERATOR AT $850┴ IS UPDATED.
  26.  
  27.  
  28.           ╞UNCTION ╬AME: ╠├╚┴╔╬
  29.           ╨URPOSE: ╠OAD MEMORY FROM DISK.
  30.           ├ALL ADDRESS: $├1╞╞
  31.           ╔NPUT REQUIREMENTS:
  32.                $04       ╔NITIAL TRACK NUMBER.
  33.                $05       ╔NITIAL SECTOR NUMBER.
  34.                $06-$07   ┬YTE COUNT OF LOAD.
  35.                $10-$11   ╠OAD ADDRESS.
  36.           ╧UTPUT:
  37.                $0├       ╔NDEX TO LAST SECTOR LOADED.
  38.                $8300-    ╠IST OF TRACKS AND SECTORS TRACK WERE LOADED.
  39.           ╨REPARATORY ROUTINES: ╠╧┴─┴─
  40.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  41.  
  42.           ─ESCRIPTION:  ╘HIS ROUTINE ASSUMES THAT THE FILE HAS BEEN LOCATED
  43.           IN THE DIRECTORY AND THAT THE INITIAL TRACK AND SECTOR ARE KNOWN.
  44.  
  45.  
  46.           ╞UNCTION ╬AME: ╠─╙╫┴╨
  47.           ╨URPOSE: ╥ELOAD THE ╙╫┴╨╞╔╠┼.
  48.           ├ALL ADDRESS: $├23┼
  49.           ╨REPARATORY ROUTINES: ╠╧┴─╙╫
  50.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  51.  
  52.           ─ESCRIPTION:  ╘HIS ROUTINE RELOADS THE ╙╫┴╨╞╔╠┼, THEN DELETES IT.
  53.           ╘HE  LAST WINDOW DESCRIPTION IS REPROCESSED TO RESTORE THE SCREEN
  54.           AND  CONTROL  IS  RETURNED TO THE ORIGINAL  PROGRAM  THAT  CALLED
  55.           ╠╧┴─╙╫.
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-37
  71.  
  72.  
  73.           ╞UNCTION ╬AME: ╠╔╬┼
  74.           ╨URPOSE: ─RAWS, ERASES OR COPIES A LINE ON THE HIRES SCREEN.
  75.           ├ALL ADDRESS: $├130
  76.           ╔NPUT REQUIREMENTS:
  77.                ╬ FLAG  ├ ╞LAG   ╧PERATION
  78.                   1       ╪     ├OPY
  79.                   0       1     ─RAW
  80.                   0       0     ┼RASE
  81.                $08-$09   ╘HE COLUMN FOR THE FIRST ENDPOINT.
  82.                $0┴-$0┬   ╘HE COLUMN FOR THE SECOND ENDPOINT.
  83.                $18       ╘HE ROW FOR THE FIRST ENDPOINT.
  84.                $19       ╘HE ROW FOR THE SECOND ENDPOINT.
  85.  
  86.           ─ESCRIPTION:  ╘HIS  IS A VERY VERSATILE ROUTINE.  ╔T CAN COPY  AN
  87.           ARBITRARY  LINE  FROM ONE SCREEN TO ANOTHER,  AS WELL AS DRAW  OR
  88.           ERASE LINES.  ╘HIS ROUTINE PLACES NO RESTRICTIONS ON THE RELATIVE
  89.           POSITIONS OF THE ENDPOINTS.  ╘HIS ROUTINE CALLS ╨╠╧╘ TO PLOT  THE
  90.           POINTS. ╙EE ALSO ╥╧╫┴─╥.
  91.  
  92.  
  93.           ╞UNCTION ╬AME: ╠╧┴─
  94.           ╨URPOSE: ╠OAD AND RUN A FILE.
  95.           ├ALL ADDRESS: $├208
  96.           ╔NPUT REQUIREMENTS:
  97.                $02       ╞LAG BYTE (╙EE DESCRIPTION).
  98.                $06-$07   ╧PTIONAL DATA POINTER.
  99.                $08-$09   ╧PTIONAL DATA POINTER.
  100.                $0┼-$0╞   ╨OINTER TO FILENAME.
  101.                $10-$11   ╠OAD ADDRESS (OPTIONAL).
  102.           ╧UTPUT:
  103.                $8100-$81╞╞ ╔NFO SECTOR FOR FILE.
  104.                $8300-$83╞╞ ╘ABLE OF TRACKS AND SECTORS THAT WERE LOADED.
  105.           ┼RRORS: ╙EE ┴PPENDIX
  106.  
  107.           ─ESCRIPTION:  ╘HIS ROUTINE LOADS AND RUNS A GIVEN FILE.  ╘HE FILE
  108.           MUST BE ONE OF THE FOLLOWING ╟┼╧╙ TYPES:
  109.                          ╙YSTEM ╞ILE         ─ESK ┴CCESSORY
  110.                          ┴PPLICATION         ┴PPLICATION ─ATA
  111.                          ╨RINTER ─RIVER      ╔NPUT ─RIVER
  112.           ╘HE EXECUTION ADDRESS IS TAKEN FROM THE INFORMATION SECTOR. ╔F IT
  113.           IS ZERO,  THE FILE IS NOT EXECUTED, ONLY LOADED.  ╓╠╔╥ FILES HAVE
  114.           ONLY  THEIR  FIRST CHAIN LOADED.  ─ESK ┴CCESSORIES SWAP  OUT  THE
  115.           MEMORY  THAT  THEY USE TO  THE  ╙╫┴╨╞╔╠┼.  ╒PON  COMPLETION,  THE
  116.           ╙╫┴╨╞╔╠┼  IS  RELOADED.  ╘HE  FLAG BYTE AT LOCATION $02  HAS  TWO
  117.           PURPOSES.  ╘HIS  FIRST  IS IF BIT 0 IS SET AND THE  FILE  WAS  AN
  118.           APPLICATION, THEN IT IS NOT EXECUTED.  ┴LSO IF BIT 0 IS SET, THEN
  119.           LOCATIONS  $10-$11  HAVE THE LOAD ADDRESS;  OTHERWISE,  THE  LOAD
  120.           ADDRESS IS TAKEN FROM THE INFORMATION SECTOR.  ╘HIS BIT DOES  NOT
  121.           APPLY  TO ─ESK ┴CCESSORIES.  ╔F EITHER BIT 6 OR 7 ARE  SET,  THEN
  122.           $06-$07  POINTS TO 16 BYTES WHICH ARE COPIED TO $8453 (─ISK  NAME
  123.           FOR DRIVE 10),  AND $07-$08 POINT TO 16 BYTES WHICH ARE COPIED TO
  124.           $8442 (─ISK NAME FOR DRIVE 11). 
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-38
  137.  
  138.  
  139.           ╞UNCTION ╬AME: ╠╧┴─2
  140.           ╨URPOSE: ╠OAD A FILE.
  141.           ├ALL ADDRESS: $├211
  142.           ╔NPUT REQUIREMENTS:
  143.                $14-$15   ╨OINTER TO DIRECTORY ENTRY.
  144.                $886┬     ╞LAG BYTE.
  145.                $886├-$886─ ╠OAD ADDRESS.
  146.           ╧UTPUT:
  147.                $8100-$81╞╞ ╔NFO SECTOR FOR FILE.
  148.                $8300-$83╞╞ ╘ABLE OF TRACKS AND SECTORS THAT WERE LOADED.
  149.           ╨REPARATORY ROUTINES: ╠╧╧╦╒╨ (╨OINTER MUST BE COPIED)
  150.           ┼RRORS: ╙EE ┴PPENDIX
  151.  
  152.           ─ESCRIPTION:  ╘HIS ROUTINE IS CALLED BY ╠╧┴─ TO PERFORM THE LOAD.
  153.           ╘HIS  ROUTINE DOES NOT TRY TO EXECUTE THE FILE LOADED,  NOR IS IT
  154.           LIMITED TO THE FILE TYPES THAT ╠╧┴─ IS. ╚OWEVER, THIS ROUTINE CAN
  155.           NOT  BE USED TO LOAD ╬ON-╟┼╧╙ FILES BECAUSE THE INFO SECTOR  MUST
  156.           BE  PRESENT.  ╔F BIT 0 OF LOCATION $886┬ IS SET,  THEN  THE  LOAD
  157.           ADDRESS  IS TAKEN FROM LOCATIONS $886├-$886─ INSTEAD OF THE  INFO
  158.           SECTOR.  ╘HE  DIRECTORY ENTRY  POINTER SHOULD POINT TO $8400  AND
  159.           NOT  THE  POINTER  RETURNED  BY ╠╧╧╦╒╨.  ╘HIS IS  DUE  TO  MEMORY
  160.           CONFLICTS THAT WILL ARISE.
  161.  
  162.  
  163.           ╞UNCTION ╬AME: ╠╧┴─3
  164.           ╨URPOSE: ╠OAD AND POSSIBLY RUN A FILE.
  165.           ├ALL ADDRESS: $├21─
  166.                $02       ╞LAG BYTE (╙EE DESCRIPTION).
  167.                $06-$07   ╧PTIONAL DATA POINTER.
  168.                $08-$09   ╧PTIONAL DATA POINTER.
  169.                $0┼-$0╞   ╨OINTER TO FILENAME.
  170.                $10-$11   ╠OAD ADDRESS (OPTIONAL).
  171.           ╧UTPUT:
  172.                $8100-$81╞╞ ╔NFO SECTOR FOR FILE.
  173.                $8300-$83╞╞ ╘ABLE OF TRACKS AND SECTORS THAT WERE LOADED.
  174.           ┼RRORS: ╙EE ┴PPENDIX
  175.  
  176.           ─ESCRIPTION:  ╘HIS ROUTINE IS CALLED BY ╠╧┴─ TO LOAD  ┴PPLICATION
  177.           FILES.  ╠IKE ╠╧┴─2, THIS ROUTINE IS NOT LIMITED TO ANY PARTICULAR
  178.           FILE TYPE, EXCEPT THAT IT ALSO CAN NOT LOAD A ╬ON-╟┼╧╙ FILE.  ╙EE
  179.           ╠╧┴─  FOR A DESCRIPTION OF THE FLAG BYTE,  DATA POINTERS AND LOAD
  180.           ADDRESS.
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-39
  203.  
  204.  
  205.           ╞UNCTION ╬AME: ╠╧┴─┴─
  206.           ╨URPOSE: ╟ET THE LOAD ADDRESS OF A FILE.
  207.           ├ALL ADDRESS: $├229
  208.           ╔NPUT REQUIREMENTS:
  209.                $14-$15   ╨OINTER TO DIRECTORY ENTRY.
  210.           ╧UTPUT:
  211.                $04       ╘RACK OF FILE'S FIRST SECTOR.
  212.                $05       ╙ECTOR OF FILE'S FIRST SECTOR.
  213.                $10-$11   ╠OAD ADDRESS FOR FILE.
  214.                $8100-$81╞╞ ╔NFO SECTOR FOR FILE.
  215.                $8300-$8301 ╘RACK AND SECTOR OF INFO SECTOR.
  216.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  217.  
  218.           ─ESCRIPTION:  ╘HIS  ROUTINE LOADS THE INFO SECTOR FOR A FILE INTO
  219.           THE  BUFFER AT $8100.  ╘HE LOAD ADDRESS IS SET FROM  $8147-$8148.
  220.           ╘HIS ROUTINE IS CALLED BY ALL THE LOAD ROUTINES.
  221.  
  222.  
  223.           ╞UNCTION ╬AME: ╠╧┴─╙╫
  224.           ╨URPOSE: ╠OAD AND RUN A FILE USING THE ╙╫┴╨╞╔╠┼.
  225.           ├ALL ADDRESS: $├217
  226.           ╔NPUT REQUIREMENTS:
  227.                $14-$15   ╨OINTER TO DIRECTORY ENTRY.
  228.           ╧UTPUT:
  229.                $8100-$81╞╞ ╔NFO SECTOR FOR FILE (═ODIFIED).
  230.                $8300-$83╞╞ ╠IST OF TRACKS AND SECTORS THAT WERE LOADED.
  231.           ╨REPARATORY ROUTINES: ╠╧╧╦╒╨ (╨OINTER MUST BE COPIED).
  232.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  233.  
  234.           ─ESCRIPTION:  ╘HIS ROUTINE IS USED TO LOAD ─ESK ┴CCESSORIES.  ╘HE
  235.           INFO  SECTOR IS LOADED TO DETERMINE THE NECESSARY MEMORY  REGION.
  236.           ╘HIS  REGION  IS SAVED TO A FILE CALLED  '╙╫┴╨╞╔╠┼',  WHOSE  INFO
  237.           SECTOR  IS THE SAME AS THE FILE TO BE LOADED.  ╘HE DIFFERENCE  IS
  238.           THAT THE TEXT FIELD IS CLEARED,  AND THE FILE TYPE IS ╙YSTEM FILE
  239.           (╘YPE 4). ╠─╙╫┴╨ MUST BE EVENTUALLY CALLED TO RELOAD THE ╙╫┴╨╞╔╠┼
  240.           AND  RETURN  TO NORMAL OPERATION.  ╘HE  DIRECTORY  ENTRY  POINTER
  241.           SHOULD  POINT TO $8400, AND THE POINTER RETURNED BY ╠╧╧╦╒╨.  ╘HIS
  242.           IS DUE TO MEMORY CONFLICTS THAT WILL ARISE.
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-40
  269.  
  270.  
  271.           ╞UNCTION ╬AME: ╠╧╧╦╒╨
  272.           ╨ROCEDURE: ╠OOKUP A FILENAME IN THE DIRECTORY.
  273.           ├ALL ADDRESS: $├20┬
  274.           ╔NPUT REQUIREMENTS:
  275.                $0┼-$0╞   ╨OINTER TO FILENAME.
  276.                $886┼     ╞LAG BYTE.
  277.           ╧UTPUT:
  278.                $04       ╘RACK FOR DIRECTORY SECTOR.
  279.                $05       ╙ECTOR FOR DIRECTORY SECTOR.
  280.                $0├-$0─   ╨OINTER TO FILE NAME ENTRY.
  281.                $8000-$80╞╞ ─IRECTORY SECTOR.
  282.                $8400-$841─ ├OPY OF DIRECTORY ENTRY.
  283.           ┼RRORS: ╙EE ┴PPENDIX
  284.  
  285.           ─ESCRIPTION:  ╘HIS IS A VERY USEFUL ROUTINE.  ╟IVEN A TEXT STRING
  286.           OF A FILENAME, THIS ROUTINE WILL FIND IT IN THE DIRECTORY. ╔F THE
  287.           FLAG  BYTE  AT $886┼ IS $00,  THEN BOTH DRIVES 8 AND  9  WILL  BE
  288.           SCANNED IF NECESSARY. ╔F THE FLAG IS $╞╞, THEN THE LOOKUP IS ONLY
  289.           TO THE CURRENT DRIVE.  ╔F THERE IS ONLY ONE DRIVE, THEN THIS FLAG
  290.           HAS  NO EFFECT.  ╘HE DIRECTORY SECTOR IS LOADED INTO A BUFFER  AT
  291.           $8000, AND THE TRACK AND SECTOR ARE IN LOCATIONS $04 AND $05. ╘HE
  292.           PARTICULAR  DIRECTORY ENTRY IS COPIED TO $8400 AND THE POINTER TO
  293.           THE ENTRY IN THE BUFFER IS STORED AT $0├-$0─.
  294.  
  295.  
  296.           ╞UNCTION ╬AME: ═┴╔╬
  297.           ╨URPOSE: ┼NTERS ╟┼╧╙'S MAIN LOOP.
  298.           ├ALL ADDRESS: $├1├3
  299.           ╔NPUT REQUIREMENTS:
  300.                $849┬-$849C ┴DDRESS OF USER'S ADDITION TO ╟┼╧╙'S MAIN LOOP
  301.                            (OPTIONAL).
  302.  
  303.           ─ESCRIPTION: ╘HIS LOOP DOES WHATEVER POLLING IS NEEDED. ╞IRST THE
  304.           BUTTON  IS  CHECKED,  AS WELL AS  THE  KEYBOARD AND  THE  MOUSE'S
  305.           POSITION.  ╘HE COMMAND TABLE AT $8719 (╙EE ├═─╘┬╠) IS SCANNED FOR
  306.           EXECUTABLE  ROUTINES.  ╘HEN THE COUNTERS AT $877╞ (╙EE ─┼╠┴┘) ARE
  307.           CHECKED;  THOSE  THAT  HAVE REACHED ZERO  HAVE  THEIR  ASSOCIATED
  308.           ROUTINES EXECUTED. ╘HE MEMORY IMAGE OF THE CLOCK IS UPDATED. ╘HEN
  309.           THE ALARM CLOCK IS CHECKED.  ╞INALLY,  THE USER'S ADDITION TO THE
  310.           MAIN  LOOP,  IF THERE IS ONE,  IS EXECUTED.  ╘HIS LOOP  CONTINUES
  311.           FOREVER.
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-41
  335.  
  336.  
  337.           ╞UNCTION ╬AME: ═┴╦├╒╥
  338.           ╨URPOSE: ═AKES A VERTICAL BAR CURSOR SPRITE.
  339.           ├ALL ADDRESS: $├1├0
  340.           ╔NPUT REQUIREMENTS:
  341.                ┴         ╘HE HEIGHT OF THE CURSOR MINUS 1 (0-41)
  342.           ╧UTPUT:
  343.                ╙PRITE BLOCK #41 ($8┴40-$8┴7┼) IS MADE INTO A VERTICAL BAR
  344.                OF A GIVEN HEIGHT.
  345.  
  346.           ─ESCRIPTION:  ╟IVEN THE DESIRED HEIGHT, A VERTICAL BAR IS CREATED
  347.           IN THE SPRITE BLOCK.  ╔F THE HEIGHT IS GREATER THAN 21,  THEN THE
  348.           HEIGHT  IS  HALVED  AND THE SPRITE IS  ┘-EXPANDED.  ╬O  CHECK  IS
  349.           PERFORMED ON THE HEIGHT. ╔F A HEIGHT GREATER THAN 41 IS USED THEN
  350.           THE MEMORY FOR NEXT FEW SPRITES WILL BE AFFECTED.
  351.  
  352.  
  353.           ╞UNCTION ╬AME: ═┴╙╠
  354.           ╨URPOSE: 16 BIT MULTIPLE ARITHMETIC SHIFT LEFTS.
  355.           ├ALL ADDRESS: $├15─
  356.           ╔NPUT REQUIREMENTS:
  357.                ┘         ╘HE SHIFT COUNT.
  358.                ╪         ╘HE ADDRESS OF THE 16 BIT VALUE TO BE SHIFTED.
  359.           ╧UTPUT:
  360.                ╪         ╥ESULT OF SHIFTS.
  361.  
  362.           ─ESCRIPTION: ╘HIS ROUTINE IS ONE OF THE ╟┼╧╙ MATH ROUTINES. ╪ HAS
  363.           THE  ADDRESS  OF A 16 BIT INTEGER IN ZERO PAGE,  WHICH IS  TO  BE
  364.           SHIFTED LEFT BY THE COUNT IN ┘.
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-42
  401.  
  402.  
  403.           ╞UNCTION ╬AME: ═┼╬╒
  404.           ╨URPOSE: ─RAWS AND SETS EVERYTHING UP FOR PULL DOWN MENUS AND
  405.                    SUBMENUS.
  406.           ├ALL ADDRESS: $├151
  407.           ╔NPUT REQUIREMENTS:
  408.                ┴         ═ENU OPTION TO POSITION MOUSE ON (0 TO #OPTIONS-1)
  409.                $02-$03   ╨OINTER TO THE MENU DESCRIPTOR.
  410.  
  411.           ─ESCRIPTION:  ╘HIS  IS  AN ┼╪╘╥┼═┼╠┘ POWERFUL  ROUTINE.  ╔T  DOES
  412.           ┼╓┼╥┘╘╚╔╬╟  FOR  MENU  PROCESSING.  ╧NCE CONTROL RETURNS  TO  THE
  413.           PROGRAM THAT CREATED THE MENU, THE PROGRAM CAN RETURN TO THE ╟┼╧╙
  414.           MAIN  LINE,  OR DO ANYTHING ELSE.  ╔T IS IMPORTANT TO  NOTE  THAT
  415.           MENUS ONLY APPEAR ON SCREEN 1. ╠OCATION $2╞ IS SAVED AND RESTORED
  416.           DURING  THE  DRAWING PHASE.  ╘HE LEFT AND RIGHT MARGINS ARE  ALSO
  417.           LEFT  UNALTERED.  ╘HE  FOLLOWING  IS  A  DESCRIPTION  OF  A  MENU
  418.           DESCRIPTOR:
  419.                #BYTES    ─ESCRIPTION
  420.                   1      ╘OP MARGIN OF ENTIRE MENU.
  421.                   1      ┬OTTOM MARGIN OF ENTIRE MENU.
  422.                   2      ╠EFT MARGIN OF ENTIRE MENU.
  423.                   2      ╥IGHT MARGIN OF ENTIRE MENU.
  424.                   1      ├ODE BYTE:
  425.                           BIT 7 - VERTICAL MENU.
  426.                           BIT 6 - SET  SECONDARY  BOX  DESCRIPTOR  TO  FULL
  427.                                   SCREEN; THIS ALLOWS THE MOUSE TO BE MOVED
  428.                                   OUTSIDE  OF A MENU WITHOUT CAUSING IT  TO
  429.                                   BE CLOSED.
  430.                           BITS 0-4 - # ENTRIES IN MENU.
  431.           ╘HIS  IS  FOLLOWED  BY SETS OF 5 BYTES;  AS  MANY  AS  THERE  ARE
  432.           ENTRIES.
  433.                   2      ┴DDRESS OF THE TEXT FOR THIS OPTION.
  434.                   1      ├ODE BYTE WHICH DESCRIBES WHAT TO DO WITH THE
  435.                          ADDRESS THAT FOLLOWS:
  436.                           BIT 7 - OPERAND IS THE ADDRESS OF A SUBMENU
  437.                                   DESCRIPTOR.
  438.                           BIT 6 - CALL SUBROUTINE, IT MUST RETURN A RESULT
  439.                                   IN $02-$03 WHICH IS EITHER 0 OR THE
  440.                                   ADDRESS OF THE NEXT SUBMENU.
  441.                           ╔F  NEITHER BIT IS SET,  THEN WHEN THIS OPTION IS
  442.                           SELECTED  IT  WILL FLASH  BEFORE  THE ROUTINE  IS
  443.                           EXECUTED.  ├ONTROL  DOES NOT RETURN TO  THE  MENU
  444.                           PROCESSOR.
  445.                   2       ┴DDRESS OF EITHER A SUBMENU DESCRIPTOR OR A
  446.                           ROUTINE TO BE EXECUTED.
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-43
  467.  
  468.  
  469.           ╞UNCTION ╬AME: ═╠╙╥
  470.           ╨URPOSE: 16 BIT MULTIPLE LOGICAL SHIFT RIGHTS.
  471.           ├ALL ADDRESS: $├262
  472.           ╔NPUT REQUIREMENTS:
  473.                ┘         ╘HE SHIFT COUNT.
  474.                ╪         ╘HE ADDRESS OF THE 16 BIT VALUE TO BE SHIFTED.
  475.           ╧UTPUT:
  476.                ╪         ╥ESULT OF SHIFTS.
  477.  
  478.           ─ESCRIPTION: ╘HIS ROUTINE IS ONE OF THE ╟┼╧╙ MATH ROUTINES. ╪ HAS
  479.           THE  ADDRESS  OF A 16 BIT INTEGER IN ZERO PAGE,  WHICH IS  TO  BE
  480.           SHIFTED RIGHT BY THE COUNT IN ┘.
  481.  
  482.  
  483.           ╞UNCTION ╬AME: ═╧╒╙╧╞
  484.           ╨URPOSE: ╘URNS OFF THE MOUSE.
  485.           ├ALL ADDRESS: $├18─
  486.  
  487.           ─ESCRIPTION:  ╘HIS  ROUTINE  RESETS BIT 7 OF  LOCATION  $30,  AND
  488.           ACTUALLY TURNS OFF THE MOUSE SPRITE.
  489.  
  490.  
  491.           ╞UNCTION ╬AME: ═╧╒╙╧╬
  492.           ╨URPOSE: ╘URNS ON THE MOUSE.
  493.           ├ALL ADDRESS: $├18┴
  494.  
  495.           ─ESCRIPTION:  ╘HIS  ROUTINE  SETS  BIT 7  OF  LOCATION  $30.  ╘HE
  496.           INTERRUPT ROUTINES WILL TURN ON THE MOUSE WHEN IT TRIES TO UPDATE
  497.           ITS POSITION.
  498.  
  499.  
  500.           ╞UNCTION ╬AME: ╬┼╟16
  501.           ╨URPOSE: ╬EGATES A 16 BIT VALUE.
  502.           ├ALL ADDRESS: $├172
  503.           ╔NPUT REQUIREMENTS:
  504.                ╪         ╘HE ADDRESS OF THE 16 BIT INTEGER
  505.           ╧UTPUT:
  506.                ╪         ╘HE ADDRESS OF THE 16 BIT RESULT.
  507.  
  508.           ─ESCRIPTION:  ╘HIS  ROUTINE IS ONE OF THE ╟┼╧╙ MATH  ROUTINES.  ╪
  509.           POINTS TO A 16 BIT VALUE WHICH IS NEGATED.  ╘HE VALUE OF ╪ IS NOT
  510.           AFFECTED.
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-44
  533.  
  534.  
  535.           ╞UNCTION ╬AME: ╬┼╪╘
  536.           ╨URPOSE: ═OVE TO NEXT ╓╠╔╥ CHAIN.
  537.           ├ALL ADDRESS: $├27┴
  538.           ╧UTPUT:
  539.                ┘         ╘RACK OF ╓╠╔╥ CHAIN.
  540.                $04       ╘RACK OF ╓╠╔╥ CHAIN.
  541.                $05       ╙ECTOR OF ╓╠╔╥ CHAIN.
  542.                $8496     ╔NCREMENTED BY 1.
  543.           ╨REPARATORY ROUTINES: ╓╧╨┼╬
  544.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  545.  
  546.           ─ESCRIPTION:  ╘HIS ROUTINE GETS THE TRACK AND SECTOR OF THE  NEXT
  547.           CHAIN  IN  THE OPEN ╓╠╔╥ FILE.  ╔T DOES NOT CHECK TO SEE  IF  THE
  548.           CHAIN EXISTS (IE. TRACK IS ZERO).  ╔T DOES CHECK IF THIS CHAIN IS
  549.           IN RANGE (AGAINST $8497).
  550.  
  551.  
  552.           ╞UNCTION ╬AME: ╬╒═┬╠╦
  553.           ╨URPOSE: ├OUNTS THE NUMBER OF FREE BLOCKS IN THE ┬┴═ THAT IS IN
  554.                    ╥┴═.
  555.           ├ALL ADDRESS: $├1─┬
  556.           ╔NPUT REQUIREMENTS:
  557.                $0├-$0─   ╨OINTER TO BUFFER WITH TRACK 18 SECTOR 0.
  558.           ╧UTPUT:
  559.                $0┴-$0┬   ╘HE NUMBER OF FREE BLOCKS.
  560.           ╨REPARATORY ROUTINES: ╥─180
  561.  
  562.           ─ESCRIPTION:  ╘HIS  ROUTINE EXPECTS THAT THE ┬┴═ HAS ALREADY BEEN
  563.           READ INTO MEMORY.  ┴LL THAT IT DOES IS ADD UP THE NUMBER OF  FREE
  564.           BLOCKS IN EACH TRACK.
  565.  
  566.  
  567.           ╞UNCTION ╬AME: ╧╨╬─╙╦
  568.           ╨URPOSE: ╧PENS A DISK TO ╟┼╧╙.
  569.           ├ALL ADDRESS: $├2┴1
  570.           ╔NPUT REQUIREMENTS:
  571.                $8489     ├URRENT DRIVE NUMBER.
  572.           ╧UTPUT:
  573.                $848┬     $00/$╞╞ ╟EOS FORMAT OR NOT.
  574.                $841┼-$8465 ┴PPROPRIATE BUFFER WILL HAVE DISK'S NAME.
  575.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  576.  
  577.           ─ESCRIPTION:  ╘HE CURRENT DRIVE IS INITIALIZED BY CALLING ╔╬╔╘─╓.
  578.           ╟┼╧╙  FORMAT IS CHECKED FOR,  AND THE DISK'S NAME IS COPIED  INTO
  579.           THE APPROPRIATE BUFFER AT $841┼-$8465.
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-45
  599.  
  600.  
  601.           ╞UNCTION ╬AME: ╧╨╬╙┼╥
  602.           ╨URPOSE: ╧PEN SERIAL COMMUNICATION.
  603.           ├ALL ADDRESS: $├25├
  604.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  605.  
  606.           ─ESCRIPTION:  ╘HIS  ROUTINE SETS UP THE ╔/╧ PORTS FOR HIGH  SPEED
  607.           SERIAL COMMUNICATION WITH THE DISK DRIVES. ╘HIS ROUTINE IS CALLED
  608.           PRIOR TO CALLING ╥┼┴─2, ╫╥╔╘┼2 OR ├╫╥╔╘┼.
  609.  
  610.  
  611.           ╞UNCTION ╬AME: ╨┬╧╪
  612.           ╨URPOSE: ─RAWS THE OUTLINE OF A RECTANGULAR BOX IN A GIVEN
  613.                    PATTERN.
  614.           ├ALL ADDRESS: $├127
  615.           ╔NPUT REQUIREMENTS:
  616.                ┴         ╘HE ACTUAL BIT PATTERN FOR THE BOX.
  617.                $06       ╘HE TOP MARGIN.
  618.                $07       ╘HE BOTTOM MARGIN.
  619.                $08-$09   ╘HE LEFT MARGIN.
  620.                $0┴-$0┬   ╘HE RIGHT MARGIN.
  621.  
  622.           ─ESCRIPTION:  ╘HIS ROUTINE DRAWS THE OUTLINE OF A RECTANGULAR BOX
  623.           IN  A GIVEN PATTERN.  ╘HIS ROUTINE CALLS ╚╠╔╬┼ AND ╓╠╔╬┼ TO  DRAW
  624.           THE OUTLINE. ╙EE ALSO ╥╧╫┴─╥.
  625.  
  626.  
  627.           ╞UNCTION ╬AME: ╨┬╧╪2
  628.           ╨URPOSE: ╔DENTICAL TO ╨┬╧╪, BUT WITH INLINE DATA.
  629.           ├ALL ADDRESS: $├1┴2
  630.  
  631.           ─ESCRIPTION:  ╘HIS ROUTINE DRAWS A SOLID OUTLINE OF A BOX,  WHICH
  632.           IS DESCRIBED BY INLINE CODE. ╙EE ╨╞╔╠╠2 FOR AN EXAMPLE.
  633.  
  634.  
  635.           ╞UNCTION ╬AME: ╨┼╥═╔╘
  636.           ╨URPOSE: ┼NABLES THE EXECUTION OF A TIMED EVENT.
  637.           ├ALL ADDRESS: $├10╞
  638.           ╔NPUT REQUIREMENTS:
  639.                ╪         ╘HE INDEX INTO THE COMMAND TABLE AT $8719.
  640.           ╨REPARATORY ROUTINES: ├═─╘┬╠
  641.  
  642.           ─ESCRIPTION: ╘HIS ROUTINE RESETS BIT 6 OF A SPECIFIC COMMAND BYTE
  643.           IN  THE TABLE AT $8719.  ╘HIS ALLOWS THE ASSOCIATED ROUTINE TO BE
  644.           EXECUTED WHEN ITS TIMER RUNS OUT.  ╔F THE TIMER HAD RUN OUT WHILE
  645.           THE ROUTINE WAS DISABLED,  ╟┼╧╙ WILL EXECUTE THE ROUTINE WHEN  IT
  646.           GETS TO IT. ╘HIS IS THE COMPLEMENT TO ╞╧╥┬╔─.
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-46
  665.  
  666.  
  667.           ╞UNCTION ╬AME: ╨╞╔╠╠
  668.           ╨URPOSE: ╞ILLS A RECTANGULAR BOX WITH A SELECTED DESIGN.
  669.           ├ALL ADDRESS: $├124
  670.           ╔NPUT REQUIREMENTS:
  671.                $06       ╘HE TOP MARGIN.
  672.                $07       ╘HE BOTTOM MARGIN.
  673.                $08-$09   ╘HE LEFT MARGIN.
  674.                $0┴-$0┬   ╘HE RIGHT MARGIN.
  675.           ╨REPARATORY ROUTINES: ╙┼╘╨┴╘
  676.  
  677.           ─ESCRIPTION:  ╘HIS  ROUTINE  FILLS A RECTANGULAR BOX IN  A  GIVEN
  678.           DESIGN.  ╘HIS ROUTINE CALLS ╚╠╔╬┼ REPEATEDLY. ╙EE ALSO ╥╧╫┴─╥.
  679.  
  680.  
  681.           ╞UNCTION ╬AME: ╨╞╔╠╠2
  682.           ╨URPOSE: ╔DENTICAL TO ╨╞╔╠╠, BUT WITH INLINE DATA.
  683.           ├ALL ADDRESS: $├19╞
  684.           ╨REPARATORY ROUTINES: ╙┼╘╨┴╘
  685.  
  686.           ─ESCRIPTION:  ╘HIS ROUTINE IS IDENTICAL TO ╨╞╔╠╠ EXCEPT THAT DATA
  687.           THAT DESCRIBES THE BOX IS PART OF THE INLINE CODE.  ╞OR EXAMPLE:
  688.                 ╩╙╥ ╨╞╔╠╠2
  689.                .┬┘╘┼ ╘OP MARGIN
  690.                .┬┘╘┼ ┬OTTOM MARGIN
  691.                .╫╧╥─ ╠EFT MARGIN
  692.                .╫╧╥─ ╥IGHT MARGIN
  693.                ├ONTROL RETURNS HERE AFTER BOX IS FILLED.
  694.  
  695.  
  696.           ╞UNCTION ╬AME: ╨╠╧╘
  697.           ╨URPOSE: ─RAWS, ERASES OR COPIES A PIXEL ON THE HIRES SCREEN.
  698.           ├ALL ADDRESS: $├133
  699.           ╔NPUT REQUIREMENTS:
  700.                ╬ FLAG  ├ ╞LAG   ╧PERATION
  701.                   1       ╪     ├OPY
  702.                   0       1     ─RAW
  703.                   0       0     ┼RASE
  704.                $08-$09   ╘HE COLUMN NUMBER.
  705.                $18       ╘HE ROW NUMBER.
  706.  
  707.           ─ESCRIPTION:  ╘HIS  IS A VERY VERSATILE ROUTINE.  ╔T CAN  COPY  A
  708.           POINT  FROM ONE SCREEN TO ANOTHER,  AS WELL AS DRAW OR ERASE  IT.
  709.           ╘HIS ROUTINE IS CALLED BY ╠╔╬┼ TO DRAW LINES. ╙EE ALSO ╥╧╫┴─╥.
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-47
  731.  
  732.  
  733.           ╞UNCTION ╬AME: ╨╧╙╙╨╥
  734.           ╨URPOSE: ╙ETS THE POSITION OF A SPRITE.
  735.           ├ALL ADDRESS: $├1├╞
  736.           ╔NPUT REQUIREMENTS:
  737.                $08       ╙PRITE NUMBER (0-7).
  738.                $0┴-$0┬   ╙PRITE ╪ POSITION.
  739.                $0├       ╙PRITE ┘ POSITION.
  740.           ╨REPARATORY ROUTINES: ├╧╨┘╙╨
  741.  
  742.           ─ESCRIPTION: ╘HIS ROUTINE COPIES THE SPRITE'S POSITION TO THE ╓╔├
  743.           CHIP,  RELIEVING THE USER OF THE BURDEN OF HANDLING THE CROSSOVER
  744.           IN THE SCREEN FROM COLUMN 255 TO COLUMN 256.
  745.  
  746.  
  747.           ╞UNCTION ╬AME: ╨╥┼╓
  748.           ╨URPOSE: ═OVE TO PREVIOUS ╓╠╔╥ CHAIN.
  749.           ├ALL ADDRESS: $├27─
  750.           ╧UTPUT:
  751.                ┘         ╘RACK OF ╓╠╔╥ CHAIN.
  752.                $04       ╘RACK OF ╓╠╔╥ CHAIN.
  753.                $05       ╙ECTOR OF ╓╠╔╥ CHAIN.
  754.                $8496     ─ECREMENTED BY 1.
  755.           ╨REPARATORY ROUTINES: ╓╧╨┼╬
  756.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  757.  
  758.           ─ESCRIPTION:  ╘HIS  ROUTINE  GETS  THE TRACK AND  SECTOR  OF  THE
  759.           PREVIOUS CHAIN IN THE OPEN ╓╠╔╥ FILE. ╔T DOES NOT CHECK TO SEE IF
  760.           THE CHAIN EXISTS (IE. TRACK IS ZERO). ╔T DOES CHECK IF THIS CHAIN
  761.           IS GREATER THAN ZERO.
  762.  
  763.  
  764.           ╞UNCTION ╬AME: ╥┴╬─╧═
  765.           ╨URPOSE: ═ODIFIES THE RANDOM NUMBER GENERATOR AT $850┴-$850┬.
  766.           ├ALL ADDRESS: $├187
  767.           ╧UTPUT:
  768.                $850┴-$850┬    ╬EW SEED VALUE.
  769.  
  770.           ─ESCRIPTION:  ╘HIS  ROUTINE CHANGES THE 16 BIT RANDOM  NUMBER  AT
  771.           $850┴-$850┬, USING A SIMPLE YET ELABORATE FORMULA.
  772.  
  773.  
  774.           ╞UNCTION ╬AME: ╥─180
  775.           ╨URPOSE: ╥EAD TRACK 18, SECTOR 0 FROM THE DISK.
  776.           ├ALL ADDRESS: $├247
  777.           ╧UTPUT:
  778.                $04       $12, TRACK NUMBER.
  779.                $05       $00, SECTOR NUMBER.
  780.                $0┴-$0┬   $8200, ADDRESS OF BUFFER AREA.
  781.                $8200-$82╞╞ ─ATA FROM TRACK 18 SECTOR 0.
  782.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  783.  
  784.           ─ESCRIPTION:  ╘HIS  ROUTINE SETS UP THE POINTERS FOR  ╥┼┴─,  THEN
  785.           CALLS  IT TO READ THE SECTOR.  ╘HIS IS GENERALLY USED TO GET  THE
  786.           ┬┴═ INTO MEMORY.
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-48
  797.  
  798.  
  799.           ╞UNCTION ╬AME: ╥┼┴─
  800.           ╨URPOSE: ╥EAD A GIVEN TRACK AND SECTOR.
  801.           ├ALL ADDRESS: $├1┼4
  802.           ╔NPUT REQUIREMENTS:
  803.                $04       ╘RACK OF SECTOR TO BE READ.
  804.                $05       ╙ECTOR NUMBER TO BE READ.
  805.                $0┴-$0┬   ╨OINTER TO BUFFER.
  806.           ┼RRORS: ╙EE ┴PPENDIX
  807.  
  808.           ─ESCRIPTION:  ╠OADS AND RUNS TURBODOS IF IT IS NOT ALREADY THERE.
  809.           ╘HEN READS THE DESIRED BLOCK FROM THE DISK INTO THE BUFFER.
  810.  
  811.  
  812.           ╞UNCTION ╬AME: ╥┼┴─2
  813.           ╨URPOSE: ╥EAD A SECTOR FROM THE DISK.
  814.           ├ALL ADDRESS: $├21┴
  815.           ╔NPUT REQUIREMENTS:
  816.                $04       ╘RACK TO BE READ.
  817.                $05       ╙ECTOR TO BE READ.
  818.                $0┴-$0┬   ╨OINTER TO BUFFER FOR DATA.
  819.           ╧UTPUT:
  820.                ─ATA IS READ INTO THE DESIRED BUFFER.
  821.           ╨REPARATORY ROUTINES: ─╙┼╘╒╨
  822.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  823.  
  824.           ─ESCRIPTION: ╘HIS ROUTINE IS CALLED BY ╥┼┴─ TO READ A SECTOR. ╘HE
  825.           DIFFERENCE  BETWEEN  THIS  ROUTINE AND ╥┼┴─ IS  THAT  ╥┼┴─  CALLS
  826.           ─╙┼╘╒╨  BEFORE  TRYING TO READ THE SECTOR.  ╘HIS ROUTINE  ASSUMES
  827.           THAT THE DRIVE IS READY WITH TURBODOS RUNNING.
  828.  
  829.  
  830.           ╞UNCTION ╬AME: ╥┼┬╧╧╘
  831.           ╨URPOSE: ╥EBOOT ╟┼╧╙.
  832.           ├ALL ADDRESS: $├000
  833.           ┼RRORS: ╔F LOAD FAILS, SYSTEM RESETS TO ┬┴╙╔├.
  834.  
  835.           ─ESCRIPTION:  ╘HIS  ROUTINE IS NOT PART OF THE NORMAL ╟┼╧╙ ╦┼╥╬┴╠
  836.           JUMP  TABLE.  ╘HIS  IS  THE ROUTINE THAT IS SET  UP  AS  THE  ╬═╔
  837.           INTERRUPT  (╥┼╙╘╧╥┼ KEY) BY ╟┼╧╙ WHEN ╟┼╧╙ RETURNS TO  ┬┴╙╔├.  ╔T
  838.           LOADS '╟┼╧╙ ┬╧╧╘', AND EXECUTES IT.
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-49
  863.  
  864.  
  865.           ╞UNCTION ╬AME: ╥┼═╧╓┼
  866.           ╨URPOSE: ╥EMOVE A ╓╠╔╥ CHAIN.
  867.           ├ALL ADDRESS: $├283
  868.           ╔NPUT REQUIREMENTS:
  869.                $8496     ╓╠╔╥ CHAIN NUMBER.
  870.           ╧UTPUT:
  871.                $8496     ─ECREMENTED IF GREATER THAN OR EQUAL TO $8497.
  872.                $8497     ─ECREMENTED BY 1.
  873.           ╨REPARATORY ROUTINES: ╓╧╨┼╬
  874.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  875.  
  876.           ─ESCRIPTION:  ╘HE  CURRENT  ╓╠╔╥ CHAIN IS REMOVED FROM  THE  ╓╠╔╥
  877.           SECTOR,  AND  ALL THE FOLLOWING CHAINS ARE MOVED  DOWN  ONE.  ╘HE
  878.           SECTORS ASSOCIATED WITH THAT CHAIN ARE FREED UP.
  879.  
  880.  
  881.           ╞UNCTION ╬AME: ╥┼╬┴═┼
  882.           ╨URPOSE: ╥ENAME A FILE.
  883.           ├ALL ADDRESS: $├259
  884.           ╔NPUT REQUIREMENTS:
  885.                $02-$03   ╨OINTER TO NEW FILE NAME.
  886.                $0┼-$0╞   ╨OINTER TO OLD FILE NAME.
  887.           ╧UTPUT:
  888.                $04       ╘RACK OF DIRECTORY SECTOR.
  889.                $05       ╙ECTOR OF DIRECTORY SECTOR.
  890.                $0├-$0─   ╨OINTER TO FILE NAME IN DIRECTORY ENTRY.
  891.                $8400-$841─ ├OPY OF OLD DIRECTORY ENTRY.
  892.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  893.  
  894.           ─ESCRIPTION: ╘HIS ROUTINE RENAMES A FILE BY CALLING  ╠╧╧╦╒╨, THEN
  895.           COPYING  THE  NEW NAME INTO THE ENTRY.  ╞INALLY,  THE  SECTOR  IS
  896.           REWRITTEN TO THE DISK.
  897.  
  898.  
  899.           ╞UNCTION ╬AME: ╥┼╙┼╘═
  900.           ╨URPOSE: ╥ESET THE MOUSE.
  901.           ├ALL ADDRESS: $├19├
  902.  
  903.           ─ESCRIPTION:  ╘HE  FLAG AT LOCATION $30 IS SET TO  $00,  AND  THE
  904.           MOUSE SPRITE IS TURNED OFF.  ╚OWEVER, SINCE BIT 7 OF LOCATION $30
  905.           IS NOT SET, THE NEXT INTERRUPT WILL TURN IT BACK ON.
  906.  
  907.  
  908.           ╞UNCTION ╬AME: ╥┼╙╘╥╘
  909.           ╨URPOSE: ╥ESTART ─┼╙╦╘╧╨.
  910.           ├ALL ADDRESS: $├22├
  911.  
  912.           ─ESCRIPTION: ╘HIS ROUTINE LOADS ─┼╙╦╘╧╨ AND RUNS IT. ╔T IS CALLED
  913.           AS THE LAST PART OF THE BOOTUP PROCEDURE. ╘HIS IS WHERE A PROGRAM
  914.           SHOULD TERMINATE.
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-50
  929.  
  930.  
  931.           ╞UNCTION ╬AME: ╥╧╫┴─╥
  932.           ╨URPOSE: ├OMPUTES THE ADDRESS OF A GIVEN ROW ON THE HIRES
  933.                    SCREENS.
  934.           ├ALL ADDRESS: $├13├
  935.           ╔NPUT REQUIREMENTS:
  936.                ╪         ╘HE ROW NUMBER.
  937.                $2╞       ╙EE DESCRIPTION.
  938.           ╧UTPUT:
  939.                $0├-$0─   ╨OINTER TO THE ROW ON THE DESTINATION SCREEN.
  940.                $0┼-$0╞   ╨OINTER TO THE ROW ON THE SOURCE SCREEN.
  941.  
  942.           ─ESCRIPTION:  ╘HIS ROUTINE COMPUTES THE ADDRESS OF COLUMN 0 ON  A
  943.           GIVEN ROW OF THE HIRES SCREENS. ┴LL OF THE GRAPHICS ROUTINES RELY
  944.           ON THIS ROUTINE TO GET THE ADDRESS OF THE HIRES SCREENS. ╘HEY ALL
  945.           TAKE  THE DATA POINTED TO BY $0┼-$0╞ AND STORE THEIR DATA TO BOTH
  946.           $0├-$0─  AND  $0┼-$0╞.  ╠OCATION $2╞ DETERMINES WHICH  SCREEN  IS
  947.           POINTED TO BY WHICH POINTER. ╘HIS IS AS FOLLOWS:
  948.                ┬IT 7  ┬IT 6   $0├-$0─   $0┼-$0╞
  949.                  0      0      $┴╞00     $┴╞00   ┴PPROXIMATELY THE
  950.                                                  MIDDLE OF SCREEN 1
  951.                  0      1     ╙CREEN 2  ╙CREEN 2
  952.                  1      0     ╙CREEN 1  ╙CREEN 1
  953.                  1      1     ╙CREEN 1  ╙CREEN 2 (─EFAULT AT RESET)
  954.  
  955.  
  956.           ╞UNCTION ╬AME: ╥╒╬
  957.           ╨URPOSE: ┼XECUTE A PROGRAM ALREADY IN MEMORY.
  958.           ├ALL ADDRESS: $├22╞
  959.           ╔NPUT REQUIREMENTS:
  960.                $02       ╞LAG BYTE.
  961.                $06-$07   ─ATA POINTER (OPTIONAL).
  962.                $08-$09   ─ATA POINTER (OPTIONAL).
  963.                $10-$11   ╙TART ADDRESS.
  964.           ╧UTPUT:
  965.                $06-$07   ╨OINTER TO DRIVE NAME 2.
  966.                $08-$09   ╨OINTER TO DRIVE NAME 3.
  967.  
  968.           ─ESCRIPTION:  ╘HIS  ROUTINE PERFORMS SOME INITIALIZATIONS  BEFORE
  969.           EXECUTING A LOADED PROGRAM.  ╔F EITHER BIT 6 OR BIT 7 OF THE FLAG
  970.           BYTE AT LOCATION $02 IS SET,  THEN THE DATA POINTED TO BY $06-$07
  971.           AND $08-$09 ARE COPIED INTO THE BUFFERS FOR THE 3RD AND 4TH DRIVE
  972.           NAMES.  ╘HESE  DATA  BLOCKS  ARE LIMITED TO 16  BYTES  EACH.  ╘HE
  973.           INITIALIZATION  PROCESS SELECTS THE ┬╙╫ FONT AND INITIALIZES  ALL
  974.           OF ╟┼╧╙'S GLOBAL VARIABLES.
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.