home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / GEOSApps / GEOSTECHREF2.ARC / PAGE26-38 next >
Text File  |  2019-04-13  |  29KB  |  859 lines

  1.  
  2.  
  3.  
  4.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-23
  5.  
  6.  
  7.           ╞UNCTION ╬AME: ─╥┴╫├╚
  8.           ╨URPOSE: ─RAWS A CHARACTER.
  9.           ├ALL ADDRESS: $├202
  10.           ╔NPUT REQUIREMENTS:
  11.                ┴         ╘HE ┴╙├╔╔ VALUE OF THE CHARACTER.
  12.                $05       ╥OW TO PRINT ON (1 ABOVE THE UNDERLINE).
  13.                $18-$19   ├OLUMN TO PRINT IN.
  14.                $33       ╘HE TOP MARGIN (╒SUALLY 0).
  15.                $34       ╘HE BOTTOM MARGIN (╒SUALLY 199).
  16.  
  17.           ─ESCRIPTION: ╘HIS ROUTINE IS NOT EXACTLY THE SAME AS ─╙╨├╚╥. ╘HIS
  18.           ROUTINE DOES NOT PROCESS CONTROL CHARACTERS AT ALL.  ╔T ALSO DOES
  19.           NOT  CHECK LEFT AND RIGHT MARGINS AT ALL.  ╔T ONLY CHECKS TOP AND
  20.           BOTTOM MARGINS SO THAT IT STAYS ON SCREEN.
  21.  
  22.  
  23.           ╞UNCTION ╬AME: ─╥╓╬┴═
  24.           ╨URPOSE: ├OMPUTE THE ADDRESS OF THE DISK'S NAME.
  25.           ├ALL ADDRESS: $├298
  26.           ╔NPUT REQUIREMENTS:
  27.                ╪         ┴DDRESS TO PLACE POINTER IN.
  28.                $8489     ├URRENT DRIVE NUMBER.
  29.           ╧UTPUT:
  30.                ╠OCATION IN ZERO PAGE POINTED TO BY ╪ HAS THE ADDRESS OF THE
  31.                CURRENT DRIVE'S NAME.
  32.           ╨REPARATORY ROUTINES: ╧╨╬─╙╦
  33.  
  34.           ─ESCRIPTION:  ╘HIS  ROUTINE  COMPUTES THE ADDRESS OF THE  CURRENT
  35.           DRIVE'S  NAME  BY MULTIPLYING THE DRIVE NUMBER (MINUS 8)  BY  18,
  36.           THEN  THE  OFFSET OF $841┼ IS ADDED TO THAT.  ╘HE RESULT  OF  THE
  37.           COMPUTATION IS STORED AT THE ZERO PAGE ADDRESS IN ╪.
  38.  
  39.  
  40.           ╞UNCTION ╬AME: ─╥╓╙┼╘
  41.           ╨URPOSE: ╙ET CURRENT DRIVE.
  42.           ├ALL ADDRESS: $├2┬0
  43.           ╔NPUT REQUIREMENTS:
  44.                ┴         ─EVICE NUMBER OF DRIVE (8-11).
  45.           ╧UTPUT:
  46.                $┬┴       ╙ET TO NEW DEVICE NUMBER.
  47.                $8489     ╙ET TO NEW DRIVE NUMBER.
  48.  
  49.           ─ESCRIPTION:  ╔F  THE  DRIVE BEING SPECIFIED IS NOT  THE  CURRENT
  50.           DRIVE  THEN  ├╠╥╥─┘ IS CALLED TO CLEAR THE  CURRENT  DRIVE.  ╘HEN
  51.           LOCATIONS $┬┴ AND $8489 ARE SET TO THE NEW DRIVE NUMBER. ╬O OTHER
  52.           LOCATIONS  ARE AFFECTED,  NOR IS ANYTHING ACTUALLY DONE WITH  THE
  53.           DRIVE.
  54.  
  55.  
  56.           ╞UNCTION ╬AME: ─╥╫═╬╒
  57.           ╨URPOSE: ╥EDRAWS THE PRESENT MENU.
  58.           ├ALL ADDRESS: $├193
  59.  
  60.           ─ESCRIPTION: ╘HIS ROUTINE REDRAWS THE CURRENT MENU.
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-24
  71.  
  72.  
  73.           ╞UNCTION ╬AME: ─╙┼╘╒╨
  74.           ╨URPOSE: ╙ETS UP A DRIVE WITH TURBODOS.
  75.           ├ALL ADDRESS: $├214
  76.           ╔NPUT REQUIREMENTS:
  77.                $8489     ├URRENT DRIVE NUMBER.
  78.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  79.  
  80.           ─ESCRIPTION:  ╘HIS ROUTINE INITIALIZES THE CURRENT DRIVE, SENDING
  81.           TURBODOS IF NECESSARY.  ╔T THEN CAUSES THE DRIVE TO RUN TURBODOS.
  82.           ╘HIS ROUTINE IS CALLED BY SEVERAL OF THE DISK ╔/╧ ROUTINES,  MOST
  83.           NOTABLY  ARE  ╥┼┴─ AND ╫╥╔╘┼.  ╒PON INITIALIZING THE  DRIVE,  THE
  84.           DRIVE'S STATUS BYTE IS SET TO THE APPROPRIATE VALUE.  ╘HE  STATUS
  85.           BYTES  ARE  STORED  AT  $8492-$8495 AND  HAVE THE  FOLLOWING  BIT
  86.           DEFINITIONS:
  87.                          ┬IT 7     ╘URBODOS IS LOADED.
  88.                          ┬IT 6     ╘URBODOS IS RUNNING.
  89.  
  90.  
  91.           ╞UNCTION ╬AME: ─╙╨├╚╥
  92.           ╨URPOSE: ─ISPLAYS A CHARACTER ON THE SCREEN.
  93.           ├ALL ADDRESS: $├145
  94.           ╔NPUT REQUIREMENTS:
  95.                ┴         ╘HE CHARACTER TO BE PRINTED.
  96.                $02-$03   ╨OINTER TO EXTRA DATA (╒SED BY A FEW CONTROL
  97.                          CHARACTERS, NOT NEEDED OTHERWISE).
  98.                $05       ╘HE ROW FOR PRINTING (1 ABOVE THE UNDERLINE).
  99.                $18-$19   ╘HE COLUMN TO START PRINTING.
  100.                $33       ╘HE TOP MARGIN (╒SUALLY 0).
  101.                $34       ╘HE BOTTOM MARGIN (╒SUALLY 199).
  102.                $35-$36   ╘HE LEFT MARGIN.
  103.                $37-$38   ╘HE RIGHT MARGIN.
  104.           ╨REPARATORY ROUTINES: ╙┼╠┬╙╫ OR ╞╧╬╘
  105.           ┼RRORS: ┬RANCHES THROUGH $84┴┬-$84┴├ IF RIGHT MARGIN IS EXCEEDED.
  106.  
  107.           ─ESCRIPTION:  ╘HIS  ROUTINE  DISPLAYS  A  CHARACTER  IN  A  GIVEN
  108.           LOCATION  IN  THE  CURRENT FONT AND  STYLE.  ╘HE  STYLE  BYTE  IN
  109.           LOCATION $2┼ IS CODED AS FOLLOWS:
  110.                  ┬IT      ─ESCRIPTION
  111.                   7       ╒NDERLINE
  112.                   6       ┬OLDFACE
  113.                   5       ╥EVERSED
  114.                   4       ╔TALICS
  115.                   3       ╧UTLINED
  116.           ┼ITHER ╙┼╠┬╙╫ OR ╞╧╬╘ MUST BE CALLED PRIOR TO USING THIS ROUTINE,
  117.           IN  ORDER  TO SET UP THE FONT POINTERS.  ╙┼╠┬╙╫ IS CALLED  DURING
  118.           ╟┼╧╙'S  BOOTUP  PROCEDURE,  AS  WELL AS BY  THE  MENU  PROCESSOR.
  119.           ╙EVERAL CONTROL CHARACTERS HAVE SPECIAL PROPERTIES.  ╘HOSE  WHICH
  120.           REQUIRE A DATA POINTER ARE MARKED WITH AN ASTERISK.
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-25
  137.  
  138.  
  139.                                ├ONTROL ├HARACTER ╘ABLE
  140.  
  141.                ├TRL-╚  ─ELETE PREVIOUS CHARACTER.
  142.                ├TRL-╔  ╘AB.
  143.                ├TRL-╩  ═OVE STRAIGHT DOWN A LINE.
  144.                ├TRL-╦  ╙ET TEXT CURSOR TO 0,0.
  145.                ├TRL-╠  ═OVE STRAIGHT UP A LINE.
  146.                ├TRL-═  ═OVE TO THE BEGINNING OF THE NEXT LINE.
  147.                ├TRL-╬  ╘URN ON UNDERLINING.
  148.                ├TRL-╧  ╘URN OFF UNDERLINING.
  149.              * ├TRL-╨  ╞OLLOWED BY A TABLE SUITABLE FOR ╟╥╨╚╔├.
  150.                ├TRL-╥  ╘URN ON REVERSE VIDEO.
  151.                ├TRL-╙  ╘URN OFF REVERSE VIDEO.
  152.              * ├TRL-╘  ╞OLLOWED BY 2 BYTES WHICH SPECIFY THE NEW COLUMN.
  153.              * ├TRL-╒  ╞OLLOWED BY A BYTE WHICH SPECIFIES THE NEW ROW.
  154.              * ├TRL-╓  ╞OLLOWED BY 3 BYTES WHICH SPECIFY THE NEW PRINT 
  155.                        POSITION.
  156.              * ├TRL-╫  ╙KIPS THE NEXT 3 BYTES.
  157.                ├TRL-╪  ╘URN ON ┬OLDFACE.
  158.                ├TRL-┘  ╘URN ON ╔TALICS.
  159.                ├TRL-┌  ╘URN ON ╧UTLINE.
  160.                ├TRL-  ╘URN OFF ALL EFFECTS, RETURN TO PLAIN TEXT.
  161.  
  162.           ╘HOSE  ENTRIES  MARKED WITH AN ASTERISK (*) SHOULD ONLY  BE  USED
  163.           FROM  ─╙╨╘╪╘ BECAUSE THEY REQUIRE $02-$03 TO BE A POINTER TO  GET
  164.           EXTRA  DATA.  ┴S  WITH ╟╥╨╚╔├,  ├TRL-╨ MUST BE THE  LAST  COMMAND
  165.           BECAUSE  THE  ZERO  BYTE THAT TERMINATES  ╟╥╨╚╔├  WILL  TERMINATE
  166.           ─╙╨╘╪╘.
  167.  
  168.  
  169.           ╞UNCTION ╬AME: ─╙╨╬╒═
  170.           ╨URPOSE: ─ISPLAY AN UNSIGNED 16 BIT INTEGER.
  171.           ├ALL ADDRESS: $├184
  172.           ╔NPUT REQUIREMENTS:
  173.                ┴         ├ONTROL VALUE (╙EE DESCRIPTION).
  174.                $02-$03   ╘HE VALUE TO BE DISPLAYED.
  175.  
  176.           ─ESCRIPTION:  ╘HIS  ROUTINE  CONVERTS  THE VALUE  AT  $02-$03  TO
  177.           DECIMAL ┴╙├╔╔ AND DISPLAYS IT USING ─╙╨├╚╥.  ╘HE CONTROL VALUE IN
  178.           ┴ IS DEFINED AS FOLLOWS:
  179.                BIT 7     0 - RIGHT JUSTIFY THE NUMBER.
  180.                          1 - LEFT JUSTIFY THE NUMBER, IE. NO JUSTIFY.
  181.                BIT 6     0 - PRINT LEADING ZEROES.
  182.                          1 - SKIP LEADING ZEROES.
  183.                BITS 0-5  ╘HE FIELD WIDTH IN PIXELS FOR RIGHT JUSTIFICATION.
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-26
  203.  
  204.  
  205.           ╞UNCTION ╬AME: ─╙╨╘╪2
  206.           ╨URPOSE: ╔DENTICAL TO ─╙╨╘╪╘, BUT WITH INLINE CODE.
  207.           ├ALL ADDRESS: $├1┴┼
  208.           ╔NPUT REQUIREMENTS:
  209.                $35-$36   ╘HE LEFT MARGIN.
  210.                $37-$38   ╘HE RIGHT MARGIN.
  211.           ╨REPARATORY ROUTINES: ╙┼╠┬╙╫ OR ╞╧╬╘
  212.           ┼RRORS: ┬RANCHES THROUGH $84┴┬-$84┴├ IF RIGHT MARGIN IS EXCEEDED.
  213.  
  214.           ─ESCRIPTION:  ╘HIS ROUTINE CREATES A POINTER TO THE  TEXT,  CALLS
  215.           ─╙╨╘╪╘, THEN RETURNS TO THE CODE IMMEDIATELY FOLLOWING THE TEXT.
  216.                 ╩╙╥ ─╙╨╘╪2
  217.                .╫╧╥─ ╘HE COLUMN TO START PRINTING IN
  218.                .┬┘╘┼ ╥OW FOR LINE OF PRINT (1 ABOVE THE UNDERLINE)
  219.                .┬┘╘┼ ╘EXT TO BE DISPLAYED
  220.                .┬┘╘┼ 0
  221.                ├ONTROL RETURNS HERE AFTER TEXT IS PRINTED.
  222.  
  223.  
  224.           ╞UNCTION ╬AME: ─╙╨╘╪╘
  225.           ╨URPOSE: ─ISPLAYS AN ENTIRE STRING OF TEXT.
  226.           ├ALL ADDRESS: $├148
  227.           ╔NPUT REQUIREMENTS:
  228.                $02-$03   ╨OINTER TO TEXT STRING.
  229.                $05       ╘HE ROW FOR PRINTING (1 ABOVE THE UNDERLINE).
  230.                $18-$19   ╘HE COLUMN IN WHICH TO START PRINTING.
  231.                $33       ╘HE TOP MARGIN (╒SUALLY 0).
  232.                $34       ╘HE BOTTOM MARGIN (╒SUALLY 199).
  233.                $35-$36   ╘HE LEFT MARGIN.
  234.                $37-$38   ╘HE RIGHT MARGIN.
  235.           ╨REPARATORY ROUTINES: ╙┼╠┬╙╫ OR ╞╧╬╘
  236.           ┼RRORS: ┬RANCHES THROUGH $84┴┬-$84┴├ IF RIGHT MARGIN IS EXCEEDED.
  237.  
  238.           ─ESCRIPTION:  ╘HIS ROUTINE CALLS ─╙╨├╚╥ TO DISPLAY EACH CHARACTER
  239.           IN A STRING. ╘HE STRING IS TERMINATED BY A ZERO BYTE.
  240.  
  241.  
  242.           ╞UNCTION ╬AME: ┼╬┴┬╠┼
  243.           ╨URPOSE: ┼NABLES A RECURRING TIMED EVENT.
  244.           ├ALL ADDRESS: $├106
  245.           ╔NPUT REQUIREMENTS:
  246.                ╪         ╘HE INDEX INTO THE COMMAND TABLE AT $8719.
  247.           ╨REPARATORY ROUTINES: ├═─╘┬╠
  248.  
  249.           ─ESCRIPTION:  ╘HIS ROUTINE ENABLES A SPECIFIC TIMER IN THE  TABLE
  250.           AT $8719 BY RESETTING BITS 5 AND 6 IN THE COMMAND TABLE.  ╔T ALSO
  251.           COPIES  THE  INITIAL  VALUE INTO THE TIMER TABLE  AT  $87╞1.  ╘HE
  252.           COMMAND  TABLE  MUST  HAVE BEEN PREVIOUSLY SET UP BY  A  CALL  TO
  253.           ├═─╘┬╠.
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-27
  269.  
  270.  
  271.           ╞UNCTION ╬AME: ┼╥┴═╬╙
  272.           ╨URPOSE: ┼RASES ALL OPEN MENUS.
  273.           ├ALL ADDRESS: $├157
  274.           ╨REPARATORY ROUTINES: ═┼╬╒
  275.  
  276.           ─ESCRIPTION:  ╘HIS  ROUTINE  ERASES ALL OF THE  MENUS.  ╔T  CALLS
  277.           ┼╥┴═╬╒ REPEATEDLY TO ACCOMPLISH THIS. ╔T THEN SETS THE MENU LEVEL
  278.           COUNTER ($84┬7) TO $00.
  279.  
  280.  
  281.           ╞UNCTION ╬AME: ┼╥┴═╬╒
  282.           ╨URPOSE: ┼RASES THE CURRENT MENU FROM THE SCREEN.
  283.           ├ALL ADDRESS: $├154
  284.           ╨REPARATORY ROUTINES: ═┼╬╒
  285.  
  286.           ─ESCRIPTION:  ╘HIS  ROUTINE WILL ERASE THE CURRENT MENU.  ╔T DOES
  287.           ╬╧╘ POP UP A LEVEL.  ╔T SIMPLY ERASES IT FROM THE SCREEN.  ╔F THE
  288.           VECTOR AT $84┬1 WAS SET, THEN THAT IS THE ROUTINE CALLED TO ERASE
  289.           THE MENU;  OTHERWISE, A BLANK PATTERN IS SELECTED WITH ╙┼╘╨┴╘ AND
  290.           ╨╞╔╠╠ IS CALLED. ╘HE DEFAULT SETTING FOR $84┬1 IS ├╧╨┘┬.
  291.  
  292.  
  293.           ╞UNCTION ╬AME: ┼╪┼╥╘╬
  294.           ╨URPOSE: ╞ORCES A TIMED EVENT TO EXECUTE,REGARDLESS OF ITS TIMER.
  295.           ├ALL ADDRESS: $├109
  296.           ╔NPUT REQUIREMENTS:
  297.                ╪         ╘HE INDEX INTO THE COMMAND BYTE TABLE AT $8719.
  298.           ╨REPARATORY ROUTINES: ├═─╘┬╠
  299.  
  300.           ─ESCRIPTION:  ╘HIS  ROUTINE SETS BIT 7 OF A SPECIFIC COMMAND BYTE
  301.           IN THE TABLE AT $8719. ╘HIS SIMULATES THE TIMER HAVING RUN OUT.
  302.  
  303.  
  304.           ╞UNCTION ╬AME: ╞┴╠╠╧├
  305.           ╨URPOSE: ┴LLOCATE ENOUGH SECTORS FOR A FILE.
  306.           ├ALL ADDRESS: $├1╞├
  307.           ╔NPUT REQUIREMENTS:
  308.                $06-$07   ╬UMBER OF BYTES TO BE SAVED.
  309.                $0┴-$0┬   ┴DDRESS OF BUFFER FOR TRACK AND SECTOR LIST.
  310.           ╧UTPUT:
  311.                ┬UFFER IS FILLED WITH A SET OF TRACKS AND SECTORS.
  312.           ┼RRORS: ╙EE ┴PPENDIX
  313.  
  314.           ─ESCRIPTION:  ╟IVEN A BYTE COUNT AND A POINTER TO A BUFFER,  THIS
  315.           ROUTINE  ATTEMPTS  TO ALLOCATE ENOUGH SECTORS.  ╘HIS  ROUTINE  IS
  316.           CALLED PRIOR TO SAVING A FILE.  ╘HE TRACK AND SECTOR LIST IS  NOT
  317.           LIMITED  IN LENGTH,  AVAILABLE DISK SPACE NOT  WITHSTANDING.  ╘HE
  318.           LIST   IS  TERMINATED  WITH  A  TRACK  NUMBER  OF  ZERO  AND  THE
  319.           APPROPRIATE BYTE COUNT IN THE SECTOR LOCATION.  ╬OTE IF AN  ERROR
  320.           OCCURS  DURING THE ALLOCATION,  THE SECTORS ALREADY ALLOCATED ARE
  321.           NOT  FREED  UP.  ┼ITHER  THIS MUST BE DONE OR THE  DISK  MUST  BE
  322.           VALIDATED.
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-28
  335.  
  336.  
  337.           ╞UNCTION ╬AME: ╞┴╠╧├2
  338.           ╨URPOSE: ┴LLOCATE ENOUGH SECTORS FOR A FILE.
  339.           ├ALL ADDRESS: $├24─
  340.           ╔NPUT REQUIREMENTS:
  341.                $06-$07   ╬UMBER OF BYTES TO BE SAVED.
  342.                $08       ╘RACK TO START LOOKING FROM.
  343.                $09       ╙ECTOR TO START LOOKING FROM.
  344.                $0┴-$0┬   ┴DDRESS OF BUFFER FOR TRACK AND SECTOR LIST.
  345.           ╧UTPUT:
  346.                ┬UFFER IS FILLED WITH A SET OF TRACKS AND SECTORS.
  347.           ┼RRORS: ╙EE ┴PPENDIX
  348.  
  349.           ─ESCRIPTION:  ╘HIS  ROUTINE IS ALMOST IDENTICAL TO ╞┴╠╠╧├.  ┴S  A
  350.           MATTER OF FACT, ╞┴╠╠╧├ FALLS INTO THIS ROUTINE AFTER SETTING $08-
  351.           $09 TO POINT TO TRACK 1 SECTOR 0. ╘HIS ROUTINE ALLOWS THE USER TO
  352.           SPECIFY  WHERE  ON THE DISK TO START LOOKING  FOR  FREE  SECTORS,
  353.           POSSIBLY SPEEDING THINGS UP.
  354.  
  355.  
  356.           ╞UNCTION ╬AME: ╞╧╬╘
  357.           ╨URPOSE: ├HANGE THE CURRENT FONT.
  358.           ├ALL ADDRESS: $├1├├
  359.           ╔NPUT REQUIREMENTS:
  360.                $02-$03   ╨OINTER TO FONT HEADER IN MEMORY.
  361.           ╧UTPUT:
  362.                $26       # PIXELS ABOVE LINE OF PRINT.
  363.                $27-$28   ╘HE NUMBER OF BYTES IN THE BIT STREAM.
  364.                $29       ╘HE POINT SIZE.
  365.                $2┴-$2┬   ╨OINTER TO THE TABLE OF THE BIT STREAM INDICES.
  366.                $2├-$2─   ╨OINTER TO THE BIT STREAM.
  367.  
  368.           ─ESCRIPTION: ╘HIS ROUTINE SIMPLY COPIES THE HEADER BLOCK FROM THE
  369.           FONT TO ZERO PAGE.  ╘HIS MAKES THE FONT THE CURRENT FONT FOR  ALL
  370.           CHARACTER OUTPUT. (╙EE ─╙╨├╚╥, ─╙╨╘╪╘ AND ─╙╨╘╪2).
  371.  
  372.  
  373.           ╞UNCTION ╬AME: ╞╧╥┬╔─
  374.           ╨URPOSE: ─ISABLES THE EXECUTION OF A TIMED EVENT.
  375.           ├ALL ADDRESS: $├10├
  376.           ╔NPUT REQUIREMENTS:
  377.                ╪         ╘HE INDEX INTO THE COMMAND TABLE AT $8719.
  378.           ╨REPARATORY ROUTINES: ├═─╘┬╠
  379.  
  380.           ─ESCRIPTION:  ╘HIS ROUTINE SETS BIT 6 OF A SPECIFIC COMMAND  BYTE
  381.           IN THE TABLE AT $8719.  ╘HIS PREVENTS THE ASSOCIATED ROUTINE FROM
  382.           EXECUTING, REGARDLESS OF ITS TIMER.  ╘HIS DOES ╬╧╘ STOP THE TIMER
  383.           FROM  RUNNING.  ╔F  THE  TIMER  RUNS OUT  WHILE  THE  ROUTINE  IS
  384.           DISABLED,  WHEN  THE TIMER IS REENABLED,  THE ASSOCIATED  ROUTINE
  385.           WILL BE EXECUTED. ╘HIS ROUTINE IS THE COMPLEMENT TO ╨┼╥═╔╘.
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-29
  401.  
  402.  
  403.           ╞UNCTION ╬AME: ╞╥┼┼
  404.           ╨URPOSE: ─EALLOCATES ALL OF A FILE'S SECTORS.
  405.           ├ALL ADDRESS: $├226
  406.           ╔NPUT REQUIREMENTS:
  407.                $14-$15   ╨OINTER TO DIRECTORY ENTRY.
  408.           ╨REPARATORY ROUTINES: ╠╧╧╦╒╨ (╨OINTER MUST BE COPIED).
  409.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  410.  
  411.           ─ESCRIPTION:  ╟IVEN  THE  DIRECTORY ENTRY OF A FILE,  ALL OF  ITS
  412.           SECTORS ARE  RETURNED TO THE FREE  POOL.  ╘HE  DIRECTORY  POINTER
  413.           SHOULD  BE  POINTING TO THE DIRECTORY ENTRY AT $8400 AND NOT  THE
  414.           POINTER RETURNED BY ╠╧╧╦╒╨.  ╘HIS IS DUE TO MEMORY CONFLICTS THAT
  415.           WILL ARISE. ╘HIS ROUTINE USES $8000-$82╞╞ FOR ITS BUFFER AREAS.
  416.  
  417.  
  418.           ╞UNCTION ╬AME: ╟┼╧╙├╦
  419.           ╨URPOSE: ├HECKS IF A DISK IS ╟┼╧╙ FORMAT OR NOT.
  420.           ├ALL ADDRESS: $├1─┼
  421.           ╔NPUT REQUIREMENTS:
  422.                $0├-$0─   ╨OINTER TO BUFFER WITH TRACK 18 SECTOR 0.
  423.           ╧UTPUT:
  424.                ┌         ╙ET IF NON-╟┼╧╙, RESET IF ╟┼╧╙ FORMAT.
  425.                ┴,$848┬   $00 IF NON-╟┼╧╙, $╞╞ IF ╟┼╧╙ FORMAT.
  426.  
  427.           ─ESCRIPTION:  ╘HIS  ROUTINE  EXPECTS THAT TRACK 18 SECTOR  0  HAS
  428.           ALREADY  BEEN  READ.  ╔T  COMPARES 11 BYTES,  STARTING  WITH  THE
  429.           173RD,  AGAINST '╟┼╧╙ FORMAT'.  ╔T SETS $848┬ SO THAT THE CURRENT
  430.           DRIVE IS KEPT TRACK OF.
  431.  
  432.  
  433.           ╞UNCTION ╬AME: ╟┼╘┬┘╘
  434.           ╨URPOSE: ╥EAD A BYTE FROM A FILE.
  435.           ├ALL ADDRESS: $├2┬6
  436.           ╔NPUT REQUIREMENTS:
  437.                $0├       ╔NDEX OF LAST BYTE IN BUFFER.
  438.                $0─       ╔NDEX TO NEXT CHARACTER IN BUFFER.
  439.                $0┴-$0┬   ╨OINTER TO DISK BUFFER.
  440.           ╧UTPUT:
  441.                ┴         ├HARACTER THAT WAS READ.
  442.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  443.  
  444.           ─ESCRIPTION:  ╘HE INITIAL SECTOR MUST HAVE BEEN READ BECAUSE  THE
  445.           FIRST TWO BYTES IN THE BUFFER ARE USED TO FIND THE NEXT TRACK AND
  446.           SECTOR.  ┬YTES  ARE READ FROM THE BUFFER UNTIL THERE ARE NO MORE,
  447.           THEN  THE NEXT SECTOR IS READ FROM THE DISK.  ╘HIS  CAN  CONTINUE
  448.           UNTIL  THE LAST CHARACTER OF THE LAST SECTOR IS READ.  ┴FTER THIS
  449.           AN ERROR 11 (┼ND OF FILE) WILL BE RETURNED.
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-30
  467.  
  468.  
  469.           ╞UNCTION ╬AME: ╟┼╘╔╬
  470.           ╨URPOSE: ╟ET A KEY FROM THE KEYBOARD.
  471.           ├ALL ADDRESS: $├2┴7
  472.           ╧UTPUT:
  473.                ┴         ├HARACTER OR $00 IF THERE ARE NONE.
  474.  
  475.           ─ESCRIPTION: ╘HIS ROUTINE TAKES A KEY FROM  THE  KEYBOARD BUFFER,
  476.           IF THERE IS ONE. ╔F THERE ARE NO CHARACTERS IN THE BUFFER, THEN A
  477.           ZERO IS RETURNED.
  478.  
  479.  
  480.           ╞UNCTION ╬AME: ╟╧╘╧
  481.           ╨URPOSE: ╟ET A SPECIFIC ╓╠╔╥ CHAIN.
  482.           ├ALL ADDRESS: $├280
  483.           ╔NPUT REQUIREMENTS:
  484.                ┴         ╓╠╔╥ CHAIN NUMBER.
  485.           ╧UTPUT:
  486.                ┘         ╘RACK OF ╓╠╔╥ CHAIN.
  487.                $04       ╘RACK OF ╓╠╔╥ CHAIN.
  488.                $05       ╙ECTOR OF ╓╠╔╥ CHAIN.
  489.                $8496     ╙ET TO ┴.
  490.           ╨REPARATORY ROUTINES: ╓╧╨┼╬
  491.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  492.  
  493.           ─ESCRIPTION: ╘HIS ROUTINE GETS THE TRACK AND SECTOR OF A SPECIFIC
  494.           CHAIN  IN  THE OPEN ╓╠╔╥ FILE.  ╔T DOES NOT CHECK TO SEE  IF  THE
  495.           CHAIN EXISTS (IE.  TRACK IS ZERO). ╔T DOES CHECK IF THIS CHAIN IS
  496.           GREATER  THAN  ZERO  AND  LESS THAN THE  NUMBER  OF  ╓╠╔╥  CHAINS
  497.           (╠OCATION $8497). ╓╠╔╥ CHAINS ARE NUMBERED FROM 0 TO ╬-1, WHERE ╬
  498.           IS THE NUMBER OF CHAINS.
  499.  
  500.  
  501.           ╞UNCTION ╬AME: ╟╥╨╚├2
  502.           ╨URPOSE: ╔DENTICAL TO ╟╥╨╚╔├, BUT WITH INLINE DATA.
  503.           ├ALL ADDRESS: $├1┴8
  504.  
  505.           ─ESCRIPTION:  ╘HIS ROUTINE TAKES AN INLINE DATA TABLE, CREATES  A
  506.           POINTER TO IT, THEN CALLS ╟╥╨╚╔├ TO PROCESS IT. ╙EE ╨╞╔╠╠2 FOR AN
  507.           EXAMPLE OF INLINE DATA TABLES.
  508.  
  509.  
  510.           ╞UNCTION ╬AME: ╟╥╨╚╔├
  511.           ╨URPOSE: ╨ROCESS SEVERAL GRAPHICS COMMANDS DESIGNATED BY A TABLE.
  512.           ├ALL ADDRESS: $├136
  513.           ╔NPUT REQUIREMENTS:
  514.                $02-$03   ╨OINTER TO THE TABLE OF COMMANDS.
  515.  
  516.           ─ESCRIPTION: ╘HIS ROUTINE EXECUTES  THE GRAPHIC  COMMANDS PRESENT
  517.           IN A TABLE. ╘HIS ROUTINE IS USED BY ─╙╨├╚╥ (├ONTROL-╨),─╙╨╘╪╘ (┬Y
  518.           CALLING  ─╙╨├╚╥), AND ╫╔╬─╧╫ (├OMMAND 15).  ╘HE  FOLLOWING  TABLE
  519.           DESCRIBES THE AVAILABLE COMMANDS.
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-31
  533.  
  534.  
  535.                                 ╟RAPHIC ├OMMAND ╘ABLE
  536.  
  537.                 ├OMMAND   #┬YTES  ─ESCRIPTION
  538.                   0         1     ╙TOP, END OF TABLE.
  539.                   1         4     ╙ET COLUMN AND ROW VARIABLES.
  540.                   2         4     ─RAW A LINE.
  541.                   3         4     ╨ATTERN FILL A REGION.
  542.                   4         1     ╬O OPERATION.
  543.                   5         2     ╙ET FILL PATTERN.
  544.                   6         4+    ╙ET POSITION AND DISPLAY TEXT. ═╒╙╘ ┬┼
  545.                                   LAST COMMAND BECAUSE THE ZERO BYTE THAT
  546.                                   ENDS THE TEXT ALSO ENDS THIS COMMAND
  547.                                   TABLE.
  548.                   7         4     ─RAW A SOLID LINED BOX.
  549.                   8         3     ┴DD AN OFFSET TO COLUMN VARIABLE.
  550.                   9         2     ┴DD AN OFFSET TO ROW VARIABLE.
  551.                   10        4     ┴DD OFFSETS TO BOTH COLUMN AND ROW
  552.                                   VARIABLES.
  553.  
  554.           ├OMMAND 1 IS USED TO SET THE COLUMN AND ROW VARIABLES USED BY ALL
  555.           OF THE OTHER COMMANDS WHICH REQUIRE TWO POINTS. ╘HE FORMAT OF THE
  556.           COMMANDS  IS  THAT ALL OF THE NECESSARY DATA FOLLOWS THE  COMMAND
  557.           BYTE.  ╞OR EXAMPLE, THE COMMANDS TO ERASE THE ENTIRE SCREEN WOULD
  558.           LOOK LIKE THIS:
  559.                .┬┘╘┼ $05,$00
  560.                .┬┘╘┼ $01
  561.                .╫╧╥─ 0
  562.                .┬┘╘┼ 0
  563.                .┬┘╘┼ $03
  564.                .╫╧╥─ 320
  565.                .┬┘╘┼ 199
  566.                .┬┘╘┼ $00
  567.           ╔N THE CASE OF COMMAND 6,  AFTER THE COLUMN AND ROW BYTES IN  THE
  568.           COMMAND COMES THE TEXT THAT IS TO BE DISPLAYED.  ╞OR EXAMPLE:
  569.                .┬┘╘┼ $06
  570.                .╫╧╥─ 50
  571.                .┬┘╘┼ 50
  572.                .┬┘╘┼ '╚ELLO WORLD!'
  573.                .┬┘╘┼ $00
  574.  
  575.  
  576.           ╞UNCTION ╬AME: ╚╠╔╬┼
  577.           ╨URPOSE: ─RAWS A HORIZONAL LINE ON THE SCREEN.
  578.           ├ALL ADDRESS: $├118
  579.           ╔NPUT REQUIREMENTS:
  580.                ┴         ╘HE ACTUAL BIT PATTERN FOR THE LINE.
  581.                $08-$09   ╘HE LEFT MARGIN.
  582.                $0┴-$0┬   ╘HE RIGHT MARGIN.
  583.                $18       ╘HE ROW NUMBER.
  584.  
  585.           ─ESCRIPTION:  ╘HIS  ROUTINE DRAWS A HORIZONTAL LINE ON THE  HIRES
  586.           SCREEN IN A GIVEN PATTERN.  ╙EE ALSO ╥╧╫┴─╥.
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-32
  599.  
  600.  
  601.           ╞UNCTION ╬AME: ╚╧╠┼
  602.           ╨URPOSE: ╞IND A HOLE IN THE DIRECTORY, OR MAKE ONE.
  603.           ├ALL ADDRESS: $├1╞6
  604.           ╧UTPUT:
  605.                ┘         ╔NDEX OF HOLE IN BUFFER.
  606.                $04       ─IRECTORY TRACK NUMBER (╙HOULD BE 18).
  607.                $05       ─IRECTORY SECTOR NUMBER.
  608.                $16       # DIRECTORY SECTORS TO SKIP FIRST.
  609.                $8000-$80╞╞ ┬UFFER FOR DIRECTORY SECTOR.
  610.  
  611.           ─ESCRIPTION:  ╘HIS ROUTINE SCANS THE DISK'S DIRECTORY LOOKING FOR
  612.           A  DELETED FILE, BY FIRST SKIPPING A CERTAIN NUMBER  OF  SECTORS.
  613.           ╘HIS  ALLOWS THE  USER TO FIND A HOLE IN A GIVEN  DIRECTORY PAGE.
  614.           ╔F ONE IS NOT FOUND IN ANY  OF THE  AVAILABLE  DIRECTORY SECTORS,
  615.           THEN A NEW SECTOR IS ADDED TO THE DIRECTORY.
  616.  
  617.  
  618.           ╞UNCTION ╬AME: ╔╬─╩═╨
  619.           ╨URPOSE: ├ONDITIONAL JUMP.
  620.           ├ALL ADDRESS: $├1─8
  621.           ╔NPUT REQUIREMENTS:
  622.                ┴         ╘HE HIGH BYTE OF THE JUMP VECTOR.
  623.                ╪         ╘HE LOW BYTE OF THE JUMP VECTOR.
  624.  
  625.           ─ESCRIPTION: ╔F ┴ AND ╪ ARE ZERO, THE JUMP IS NOT PERFORMED. ╔F ┴
  626.           AND ╪ ARE NONZERO, THE JUMP IS PERFORMED.
  627.  
  628.  
  629.           ╞UNCTION ╬AME: ╔╬╔╘01
  630.           ╨URPOSE: ╨ART OF ╟┼╧╙'S BOOTUP PROCESS.
  631.           ├ALL ADDRESS: $├271
  632.  
  633.           ─ESCRIPTION:  ╔NITIALIZES  THE ╓╔├ CHIP AND THE ╔/╧  CHIPS.  ╙OME
  634.           GLOBAL   MEMORY   IS  ALSO  INITIALIZED.   ╔T  ALSO  RESETS   THE
  635.           PREFERENCES AND ALL THE DRIVES.  ╘HE DEFAULT DRIVE IS RESET BY  A
  636.           CALL TO ─╙┼╘╒╨.
  637.  
  638.  
  639.           ╞UNCTION ╬AME: ╔╬╔╘─╓
  640.           ╨URPOSE: ╔NITIALIZES A DRIVE.
  641.           ├ALL ADDRESS: $├1┼1
  642.           ╔NPUT REQUIREMENTS:
  643.                $04       ╘RACK TO POSITION THE DISK DRIVE HEAD AT.
  644.                $05       ╙ECTOR TO POSITION THE DISK DRIVE HEAD AT.
  645.           ┼RRORS: ╙EE ┴PPENDIX
  646.  
  647.           ─ESCRIPTION:  ═AKES SURE THAT CURRENT DRIVE HAS TURBODOS RUNNING.
  648.           ╔T ALSO POSITIONS THE HEAD OVER A PARTICULAR SECTOR.
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-33
  665.  
  666.  
  667.           ╞UNCTION ╬AME: ╔╬╔╘═╙
  668.           ╨URPOSE: ╔NITIALIZES THE MOUSE.
  669.           ├ALL ADDRESS: $├14┼
  670.           ╔NPUT REQUIREMENTS:
  671.                ├ FLAG    ├LEAR IF THE MOUSE POSITION SHOULD NOT BE SET.
  672.                ├ FLAG    ╙ET IF THE MOUSE POSITION SHOULD BE SET.
  673.                ┘         ╘HE ROW POSITION FOR THE MOUSE (OPTIONAL).
  674.                $18-$19   ╘HE COLUMN POSITION FOR THE MOUSE (OPTIONAL).
  675.  
  676.           ─ESCRIPTION: ╘HIS ROUTINE TURNS ON THE MOUSE AND  POSITIONS IT IF
  677.           DESIRED.  ╔F THE COLUMN IS SET TO 0,  THE MOUSE IS NOT POSITIONED
  678.           EVEN  IS  THE ├ FLAG IS SET.  ╔T ALSO SETS UP THE BUTTON  PRESSED
  679.           VECTOR $84┴1-$84┴2 AND THE CLOSE MENU VECTOR $84┴7-$84┴8. ╔T ALSO
  680.           CLEARS THE FLAG AT $84┬6.  ╘HIS ROUTINE DOES NOT ACTUALLY TURN ON
  681.           THE MOUSE.  ╔T CALLS ═╧╒╙╧╬ TO RESET BIT 7 OF LOCATION $30;  THIS
  682.           WILL CAUSE ╟┼╧╙'S INTERRUPT ROUTINES TO TURN ON THE MOUSE.
  683.  
  684.  
  685.           ╞UNCTION ╬AME: ╔╬╨╒╘
  686.           ╨URPOSE: ╔NPUT A LINE OF TEXT FROM THE USER.
  687.           ├ALL ADDRESS: $├1┬┴
  688.           ╔NPUT REQUIREMENTS:
  689.                $02-$03   ┴DDRESS OF TEXT AND BUFFER.
  690.                $04       ╞LAG BYTE ($87─3).
  691.                $05       ╥OW TO PRINT TEXT ON (1 ABOVE THE UNDERLINE).
  692.                $06       ═AXIMUM LENGTH OF INPUT.
  693.                $0┴-$0┬   ╓ECTOR FOR USER ROUTINE FOR RIGHT MARGIN EXCEEDED
  694.                          (OPTIONAL).
  695.                $18-$19   ├OLUMN TO START PRINTING TEXT AT.
  696.                $84┴3-$84┴4 ┴DDRESS FOR ├╥ ENTERED.
  697.           ╧UTPUT:
  698.                $24-$25   ╨OINTER TO TEXT BUFFER (COPIED FROM $02-$03).
  699.                ┬UFFER WILL BE MODIFIED ACCORDING TO THE USER'S INPUT.
  700.                $84┴3-$84┴4 ├LEARED TO $0000.
  701.  
  702.           ─ESCRIPTION:  ╘HIS ROUTINE IS RATHER POWERFUL. ╔T DISPLAYS A LINE
  703.           OF TEXT,  IF THERE WAS ANY TEXT TO DISPLAY.  ╘HEN THE TEXT CURSOR
  704.           IS  TURNED  ON.  ╙EVERAL OF THE JUMP VECTORS ARE USED.
  705.           $84┴┬-$84┴├  IS THE VECTOR FOR THE RIGHT MARGIN  BEING  EXCEEDED.
  706.           $84┴9-$84┴┴  IS  THE VECTOR FOR A CHARACTER BEING  TYPED.  $84┴3-
  707.           $84┴4 IS THE VECTOR FOR ├╥ ENTERED.  ┴FTER EVERYTHING IS SET  UP,
  708.           CONTROL RETURNS TO THE CALLER;  HOWEVER,  THE INPUT IS HANDLED BY
  709.           THE INTERRUPT DRIVERS. ╫HEN A ├╥ IS ENTERED, CONTROL GOES THROUGH
  710.           THE  VECTOR  AT $84┴3-$84┴4.  ╘HE FLAG BYTE AT  LOCATION  $04  IS
  711.           COPIED TO $87─3 AND HAS THE FOLLOWING PROPERTY:  ╔F BIT 7 IS SET,
  712.           THEN  USE THE USER'S ROUTINE WHOSE ADDRESS IS STORED AT LOCATIONS
  713.           $0┴-$0┬ FOR THE RIGHT MARGIN IS EXCEEDED ROUTINE.
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-34
  731.  
  732.  
  733.           ╞UNCTION ╬AME: ╔╬╙┼╥╘
  734.           ╨URPOSE: ╔NSERT A NEW CHAIN IN A ╓╠╔╥ FILE.
  735.           ├ALL ADDRESS: $├286
  736.           ╔NPUT REQUIREMENTS:
  737.                $8496     ├URRENT CHAIN NUMBER.
  738.           ╧UTPUT:
  739.                $8497     ╔NCREMENTED BY 1.
  740.           ╨REPARATORY ROUTINES: ╓╧╨┼╬
  741.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  742.  
  743.           ─ESCRIPTION: ┴ HOLE IS OPENED UP IN THE ╓╠╔╥ SECTOR STARTING WITH
  744.           THE  CURRENT  CHAIN.  ╘HE  HOLE  IS  FILLED  WITH  $00,$╞╞.  ╘HIS
  745.           REPRESENTS A NULL CHAIN.
  746.  
  747.  
  748.           ╞UNCTION ╬AME: ╔╬╘┬═
  749.           ╨URPOSE: ╔NTELLIGENT BLOCK MOVE.
  750.           ├ALL ADDRESS: $├17┼
  751.           ╔NPUT REQUIREMENTS:
  752.                $02-$03   ╘HE SOURCE ADDRESS.
  753.                $04-$05   ╘HE DESTINATION ADDRESS.
  754.                $06-$07   ╘HE LENGTH OF THE REGION TO BE MOVED.
  755.  
  756.           ─ESCRIPTION:  ╘HIS  ROUTINE  WILL  PERFORM  AN  INTELLIGENT,  IE.
  757.           NONCONFLICTING,  BLOCK MOVE OF MEMORY.  ╔F AN ATTEMPT IS MADE  TO
  758.           MOVE A BLOCK OF MEMORY TO A DESTINATION THAT IS WITHIN THE BLOCK,
  759.           THE  TRANSFER  IS  DONE FROM BACK TO FRONT SO AS TO  PREVENT  THE
  760.           CONFLICT, OR 'RIPPLE EFFECT'.
  761.  
  762.  
  763.           ╞UNCTION ╬AME: ╔╬╘┬═2
  764.           ╨URPOSE: ╔DENTICAL TO ╔╬╘┬═, BUT WITH INLINE DATA.
  765.           ├ALL ADDRESS: $├1┬7
  766.  
  767.           ─ESCRIPTION:  ╘HIS ROUTINE USES THE INLINE DATA TO SET EVERYTHING
  768.           UP BEFORE CALLING ╔╬╘┬═. ╞OR EXAMPLE:
  769.                 ╩╙╥ ╔╬╘┬═2
  770.                .╫╧╥─ ╙OURCE ADDRESS
  771.                .╫╧╥─ ─ESTINATION ADDRESS
  772.                .╫╧╥─ ╠ENGTH OF TRANSFER
  773.                ├ONTROL RETURNS HERE UPON COMPLETION.
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-35
  797.  
  798.  
  799.           ╞UNCTION ╬AME: ╔╬╒╙┼
  800.           ╨URPOSE: ├HECK IF A DISK SECTOR IS IN USE.
  801.           ├ALL ADDRESS: $├2┴─
  802.           ╔NPUT REQUIREMENTS:
  803.                $0┼       ╘RACK TO BE CHECKED.
  804.                $0╞       ╙ECTOR TO BE CHECKED.
  805.                $8200-$82╞╞ ╘RACK 18 SECTOR 0, ┬┴═ BUFFER.
  806.           ╧UTPUT:
  807.                ╪         ╔NDEX INTO ┬┴═ OF THE APPROPRIATE BYTE.
  808.                ┌ FLAG    ╙ET IF THE SECTOR IS IN USE.
  809.                $11       ╔NDEX TO TRACK'S DATA IN ┬┴═.
  810.                $13       ┬IT MASK FOR THE DESIRED SECTOR.
  811.           ╨REPARATORY ROUTINES: ╥─180
  812.  
  813.           ─ESCRIPTION: ╘HIS ROUTINE IS USED BY ┴╠╠╧├ TO TEST IF A SECTOR IS
  814.           ALREADY IN USE.
  815.  
  816.  
  817.           ╞UNCTION ╬AME: ╔╬╓┬╧╪
  818.           ╨URPOSE: ╔NVERTS THE PIXELS IN A BOX.
  819.           ├ALL ADDRESS: $├12┴
  820.           ╔NPUT REQUIREMENTS:
  821.                $06       ╘HE TOP MARGIN.
  822.                $07       ╘HE BOTTOM MARGIN.
  823.                $08-$09   ╘HE LEFT MARGIN.
  824.                $0┴-$0┬   ╘HE RIGHT MARGIN.
  825.  
  826.           ─ESCRIPTION:  ╘HIS ROUTINE REVERSES THE PIXELS IN A GIVEN BOX  BY
  827.           REPEATEDLY CALLING ╔╬╓╠╔╬. ╙EE ALSO ╥╧╫┴─╥.
  828.  
  829.  
  830.           ╞UNCTION ╬AME: ╔╬╓╠╔╬
  831.           ╨URPOSE: ╔NVERTS A HORIZONAL LINE ON THE SCREEN.
  832.           ├ALL ADDRESS: $├11┬
  833.           ╔NPUT REQUIREMENTS:
  834.                $08-$09   ╘HE LEFT MARGIN.
  835.                $0┴-$0┬   ╘HE RIGHT MARGIN.
  836.                $18       ╘HE ROW NUMBER.
  837.  
  838.           ─ESCRIPTION:  ╘HIS  ROUTINE REVERSES THE PIXELS ON  A  HORIZONTAL
  839.           LINE ON THE HIRES SCREEN. ╔F THE PIXEL WAS ON IT WILL NOW BE OFF;
  840.           IF IT WAS OFF IT WILL NOW BE TURNED ON. ╙EE ALSO ╥╧╫┴─╥.
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.