home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / GEOSApps / GEOSTECHREF2.ARC / PAGE54-65 < prev   
Text File  |  2019-04-13  |  26KB  |  793 lines

  1.  
  2.  
  3.  
  4.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-51
  5.  
  6.  
  7.           ╞UNCTION ╬AME: ╙┴╓┼
  8.           ╨URPOSE: ╙AVE MEMORY TO A FILE.
  9.           ├ALL ADDRESS: $├1┼─
  10.           ╔NPUT REQUIREMENTS:
  11.                $14-$15   ╨OINTER TO INFORMATION SECTOR DATA.
  12.                $16       # DIRECTORY SECTORS TO SKIP FIRST.
  13.           ┼RRORS: ╙EE ┴PPENDIX
  14.  
  15.           ─ESCRIPTION: ╘HIS ROUTINE WILL SAVE MEMORY TO A FILE; EACH SECTOR
  16.           IS VERIFIED AFTER THE WRITE IS FINISHED.  ╘HE INFO SECTOR HAS ALL
  17.           THE NECESSARY INFORMATION.  IE.  START AND STOP  ADDRESSES,  FILE
  18.           TYPE  AND  STRUCTURE.  ╔T  MUST ALSO CONTAIN THE ADDRESS  OF  THE
  19.           FILENAME  STRING SOMEWHERE IN MEMORY, IN THE FIRST TWO BYTES.  ╔F
  20.           THE FILE IS A ╓╠╔╥ FILE, THE MEMORY IS SAVED TO CHAIN 0. ╠OCATION
  21.           $16  SPECIFIES THE NUMBER OF DIRECTORY SECTORS TO SKIP FOR ─╔╥─╙╦
  22.           AND ╚╧╠┼.
  23.  
  24.  
  25.           ╞UNCTION ╬AME: ╙┴╓┼2
  26.           ╨URPOSE: ╙AVE MEMORY TO SPECIFIED SECTORS ON THE DISK.
  27.           ├ALL ADDRESS: $├1╞9
  28.           ╔NPUT REQUIREMENTS:
  29.                $0┼-$0╞   ╨OINTER TO LIST OF TRACKS AND SECTORS TO USE.
  30.                $10-$11   ╙TART ADDRESS OF MEMORY TO BE SAVED.
  31.           ╨REPARATORY ROUTINES: ╞┴╠╠╧├
  32.           ┼RRORS: ╙EE ┴PPENDIX
  33.  
  34.           ─ESCRIPTION:  ╘HIS ROUTINE IS CALLED BY ╙┴╓┼ TO ACTUALLY SAVE THE
  35.           MEMORY.  ┴LL  OF THE SECTORS SHOULD HAVE ALREADY BEEN  ALLOCATED.
  36.           ╘HIS  ROUTINE  STOPS SAVING MEMORY WHEN TRACK 0 IS FOUND  IN  THE
  37.           LIST OF TRACKS AND SECTORS.
  38.  
  39.  
  40.           ╞UNCTION ╬AME: ╙─1616
  41.           ╨URPOSE: ╙IGNED 16 BIT BY 16 BIT DIVISION.
  42.           ├ALL ADDRESS: $├16├
  43.           ╔NPUT REQUIREMENTS:
  44.                ┘         ╘HE ADDRESS OF THE 16 BIT DIVISOR.
  45.                ╪         ╘HE ADDRESS OF THE 16 BIT DIVIDEND.
  46.           ╧UTPUT:
  47.                ╪         ╘HE ADDRESS OF THE 16 BIT QUOTIENT.
  48.                $12-$13   ╘HE 16 BIT REMAINDER.
  49.  
  50.           ─ESCRIPTION: ╘HIS ROUTINE IS ONE OF THE ╟┼╧╙ MATH ROUTINES. ╪ AND
  51.           ┘ EACH HAVE THE ADDRESS OF A TERM IN THE DIVISION. ┬OTH TERMS ARE
  52.           MADE POSITIVE WITH ┴┬╙16. ╒─1616 IS THEN CALLED; IF THE RESULT OF
  53.           THE DIVISION SHOULD BE NEGATIVE, ╬┼╟16 IS CALLED. ╘HE QUOTIENT IS
  54.           STORED  IN PLACE OF THE ORIGINAL DIVIDEND THAT ╪ POINTED TO.  ╘HE
  55.           DIVIDEND  IS LEFT UNTOUCHED.  ╘HE REMAINDER IS ALWAYS A  POSITIVE
  56.           INTEGER.
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-52
  71.  
  72.  
  73.           ╞UNCTION ╬AME: ╙┼╠┬╙╫
  74.           ╨URPOSE: ╙ELECTS THE ┬ERKELEY ╙OFTWORKS FONT.
  75.           ├ALL ADDRESS: $├14┬
  76.           ╧UTPUT:
  77.                $26       # PIXELS ABOVE LINE OF PRINT.
  78.                $27-$28   ╘HE NUMBER OF BYTES IN THE BIT STREAM.
  79.                $29       ╘HE POINT SIZE.
  80.                $2┴-$2┬   ╘HE POINTER TO THE TABLE OF INDICES INTO THE BIT
  81.                          STREAM.
  82.                $2├-$2─   ╘HE POINTER TO THE BIT STREAM.
  83.  
  84.           ─ESCRIPTION:  ╘HIS ROUTINE SIMPLY COPIES THE FONT HEADER DATA FOR
  85.           THE ┬╙╫ FONT TO ZERO PAGE FOR USE BY ─╙╨├╚╥ AND ─╙╨╘╪╘.
  86.  
  87.  
  88.           ╞UNCTION ╬AME: ╙┼╘╨┴╘
  89.           ╨URPOSE: ╙ETS THE CURRENT FILL PATTERN.
  90.           ├ALL ADDRESS: $├139
  91.           ╔NPUT REQUIREMENTS:
  92.                ┴         ╘HE PATTERN NUMBER (0-31).
  93.  
  94.           ─ESCRIPTION:  ╘HIS  ROUTINE SETS THE FILL PATTERN USED BY  ╨╞╔╠╠,
  95.           ╨╞╔╠╠2, ╨┬╧╪ AND ╨┬╧╪2.
  96.  
  97.  
  98.           ╞UNCTION ╬AME: ╙╨╥╧╞╞
  99.           ╨URPOSE: ╘URNS OFF A SPRITE.
  100.           ├ALL ADDRESS: $├1─5
  101.           ╔NPUT REQUIREMENTS:
  102.                $08       ╙PRITE NUMBER (0-7).
  103.           ╨REPARATORY ROUTINES: ├╧╨┘╙╨, ╨╧╙╙╨╥, ╙╨╥╧╬
  104.  
  105.           ─ESCRIPTION:  ╘HIS ROUTINE TURNS THE SPRITE OFF, SO THAT IT IS NO
  106.           LONGER VISIBLE.
  107.  
  108.  
  109.           ╞UNCTION ╬AME: ╙╨╥╧╬
  110.           ╨URPOSE: ╘URNS ON A SPRITE.
  111.           ├ALL ADDRESS: $├1─2
  112.           ╔NPUT REQUIREMENTS:
  113.                $08       ╙PRITE NUMBER (0-7).
  114.           ╨REPARATORY ROUTINES: ├╧╨┘╙╨, ╨╧╙╙╨╥
  115.  
  116.           ─ESCRIPTION:  ╘HIS  ROUTINE  TURNS THE SPRITE ON,  SO THAT IT  IS
  117.           VISIBLE.
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-53
  137.  
  138.  
  139.           ╞UNCTION ╬AME: ╙╘┴╥╘
  140.           ╨URPOSE: ╥ESTARTS THE TIMER ON A TIMED EVENT.
  141.           ├ALL ADDRESS: $├115
  142.           ╔NPUT REQUIREMENTS:
  143.                ╪         ╘HE INDEX INTO THE COMMAND TABLE AT $8719.
  144.           ╨REPARATORY ROUTINES: ├═─╘┬╠
  145.  
  146.           ─ESCRIPTION: ╘HIS ROUTINE RESETS BIT 5 OF A SPECIFIC COMMAND BYTE
  147.           IN THE TABLE AT $8719.  ╘HIS ENABLES THE ASSOCIATED COUNTER. ╘HIS
  148.           ROUTINE  IS  THE  COMPLEMENT  TO ╙╘╧╨.  ╘HIS  ROUTINE  IS  ╬╧╘  A
  149.           REPLACEMENT  FOR ┼╬┴┬╠┼.  ╘HIS ROUTINE DOES NOT COPY THE  TIMER'S
  150.           INITIAL VALUE AS DOES ┼╬┴┬╠┼.
  151.  
  152.  
  153.           ╞UNCTION ╬AME: ╙╘╧╨
  154.           ╨URPOSE: ╙TOPS THE TIMER ON A TIMED EVENT.
  155.           ├ALL ADDRESS: $├112
  156.           ╔NPUT REQUIREMENTS:
  157.                ╪         ╘HE INDEX INTO THE COMMAND TABLE AT $8719.
  158.           ╨REPARATORY ROUTINES: ├═─╘┬╠
  159.  
  160.           ─ESCRIPTION:  ╘HIS ROUTINE SETS BIT 5 OF A SPECIFIC COMMAND  BYTE
  161.           IN  THE TABLE AT $8719.  ╘HIS PREVENTS THE ASSOCIATED TIMER  FROM
  162.           RUNNING. ╘HIS ROUTINE IS THE COMPLEMENT TO ╙╘┴╥╘.
  163.  
  164.  
  165.           ╞UNCTION ╬AME: ╙╘╥├═╨
  166.           ╨URPOSE: ├OMPARE TWO STRINGS FOR EQUALITY.
  167.           ├ALL ADDRESS: $├26┬
  168.           ╔NPUT REQUIREMENTS:
  169.                ╪         ┴DDRESS OF A ZERO PAGE POINTER.
  170.                ┘         ┴DDRESS OF A ZERO PAGE POINTER.
  171.           ╧UTPUT:
  172.                ┌ FLAG    ╙ET ACCORDINGLY.
  173.  
  174.           ─ESCRIPTION:  ╘HE  ╪ AND ┘ REGISTERS POINT TO ZERO PAGE POINTERS.
  175.           ╘HE TWO STRINGS ARE COMPARED UP TO A ZERO BYTE. ╘HE ┌ FLAG IS SET
  176.           ACCORDINGLY.
  177.  
  178.  
  179.           ╞UNCTION ╬AME: ╙╘╥├╨┘
  180.           ╨URPOSE: ├OPY A STRING.
  181.           ├ALL ADDRESS: $├265
  182.           ╔NPUT REQUIREMENTS:
  183.                ╪         ┴DDRESS OF ZERO PAGE SOURCE POINTER.
  184.                ┘         ┴DDRESS OF ZERO PAGE DESTINATION POINTER.
  185.  
  186.           ─ESCRIPTION:  ╘HE  ╪ AND ┘ REGISTERS POINT TO ZERO PAGE POINTERS.
  187.           ─ATA IS COPIED UP TO AND INCLUDING A ZERO BYTE.  ╘HIS ROUTINE  IS
  188.           USED TO COPY STRINGS BY SETTING ┴ TO ZERO AND CALLING ┬╠╦═╧╓.
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-54
  203.  
  204.  
  205.           ╞UNCTION ╬AME: ╙┘╙┼╥╥
  206.           ╨URPOSE: ─RAW A SYSTEM ERROR WINDOW, AND HALT SYSTEM.
  207.           ├ALL ADDRESS: $├2├2
  208.  
  209.           ─ESCRIPTION:  ┴  WINDOW  IS DRAWN WITH THE MESSAGE '╙YSTEM  ERROR
  210.           NEAR  $XXXX',  WHERE  XXXX IS THE HEX ADDRESS OF THE  ╩╙╥  ╙┘╙┼╥╥
  211.           INSTRUCTION.  ╙INCE  THE SYSTEM ERROR WINDOW HAS NO WAY OF  BEING
  212.           CLOSED, ╟┼╧╙ SIMPLY SITS IN ITS MAIN LOOP FOREVER. ╘HE ┬╥╦ VECTOR
  213.           AT $84┴╞-$84┬0 IS INITIALLY SET TO THIS ROUTINE.
  214.  
  215.  
  216.           ╞UNCTION ╬AME: ╘┴┬╠┼
  217.           ╨URPOSE: ├REATE A LIST OF FILENAMES.
  218.           ├ALL ADDRESS: $├23┬
  219.           ╔NPUT REQUIREMENTS:
  220.                $0┼-$0╞   ╨OINTER TO BUFFER AREA FOR FILE NAMES.
  221.                $10       ╟┼╧╙ FILE TYPE.
  222.                $11       ═AXIMUM NUMBER OF FILE NAMES.
  223.                $16-$17   ╨OINTER TO CLASS.
  224.           ╧UTPUT:
  225.                $11       ╬UMBER OF FILES NOT FOUND.
  226.                ╘HE TABLE IS FILLED WITH FILENAMES.
  227.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  228.  
  229.           ─ESCRIPTION:  ╘HIS  IS A VERY USEFUL ROUTINE.  ╟IVEN A ╟┼╧╙  FILE
  230.           TYPE,  A  LIST OF FILES WITH THAT TYPE IS CREATED.  ╔F THE  CLASS
  231.           POINTER  IS NON-ZERO THEN EACH FILE'S INFO SECTOR IS CHECKED  FOR
  232.           PROPER  CLASS.  ╘HIS IS HOW ╟┼╧PAINT AND ╟┼╧WRITE CAN BOTH CREATE
  233.           ┴PPLICATION  ─ATA  FILES  AND NOT  SEE  EACH  OTHERS  FILES.  ╘HE
  234.           FILENAMES ARE TEXT STRINGS WITH ZERO BYTE TERMINATORS. ┼ACH ENTRY
  235.           IS INDEXED WITH A MULTIPLE OF 17 (16 BYTE FILENAME MAX. PLUS ZERO
  236.           BYTE).  ╠OCATION  $11 HAS THE NUMBER OF TABLE ENTRIES NOT FILLED.
  237.           ╘O  GET THE NUMBER OF FILES ACTUALLY FOUND,  THIS VALUE  MUST  BE
  238.           SUBTRACTED FROM THE ORIGINAL MAXIMUM BUFFER LENGTH.
  239.  
  240.  
  241.           ╞UNCTION ╬AME: ╘┬╠╩═╨
  242.           ╨URPOSE: ╩UMP THROUGH A TABLE.
  243.           ├ALL ADDRESS: $├2┴4
  244.           ╔NPUT REQUIREMENTS:
  245.                ┴         ╧FFSET INTO TABLE.
  246.                $3─-$3┼   ╘ABLE ADDRESS.
  247.  
  248.           ─ESCRIPTION:  ╘HIS ROUTINE IS CALLED BY ALL OF THE ROUTINES  THAT
  249.           HAVE  INLINE DATA.  ╘HEY ALL SET $3─-$3┼ TO THE RETURN ADDRESS OF
  250.           THE  CALLER,  INDEX OFF OF THIS POINTER TO GET THEIR  DATA,  THEN
  251.           CALL  THE APPROPRIATE ROUTINE.  ╫HEN THE ROUTINE FINISHES,  ┴  IS
  252.           LOADED WITH THE DATA TABLE'S LENGTH AND THIS ROUTINE IS CALLED TO
  253.           RETURN CONTROL TO THE CALLER AFTER THE DATA TABLE.
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-55
  269.  
  270.  
  271.           ╞UNCTION ╬AME: ╘┼╙╘
  272.           ╨URPOSE: ╘ESTS THE VALUE OF A POINT ON THE HIRES SCREEN.
  273.           ├ALL ADDRESS: $├13╞
  274.           ╔NPUT REQUIREMENTS:
  275.                $08-$09   ╘HE COLUMN NUMBER.
  276.                $18       ╘HE ROW NUMBER.
  277.           ╧UTPUT:
  278.                ├ FLAG IS SET TO THE VALUE OF THE PIXEL.
  279.  
  280.           ─ESCRIPTION: ╘ESTS WHETHER OR NOT A GIVEN PIXEL IS ON OR NOT. ╘HE
  281.           CARRY FLAG IS SET TO THE VALUE OF THE PIXEL.
  282.  
  283.  
  284.           ╞UNCTION ╬AME: ╘╥┴├┼
  285.           ╨URPOSE: ├REATE A TABLE OF TRACKS AND SECTORS.
  286.           ├ALL ADDRESS: $├205
  287.           ╔NPUT REQUIREMENTS:
  288.                $04       ╔NITIAL TRACK NUMBER.
  289.                $05       ╔NITIAL SECTOR NUMBER.
  290.                $08-$09   ┴DDRESS OF TABLE TO BE CREATED.
  291.           ╧UTPUT:
  292.                ╘ABLE  POINTED  TO BY $08-$09 IS FILLED WITH ALL THE  TRACKS
  293.                AND SECTORS LINKED TO THE INITIAL SECTOR.
  294.           ┼RRORS: ╙EE ┴PPENDIX
  295.  
  296.           ─ESCRIPTION:  ╟IVEN  AN INITIAL TRACK AND  SECTOR,  THIS  ROUTINE
  297.           TRACES  A CHAIN AND RETURNS A LIST OF ALL THE TRACKS AND  SECTORS
  298.           ENCOUNTERED.  ╘HIS ROUTINE USES THE BUFFER AT $8000-$80╞╞ TO READ
  299.           THE SECTORS.
  300.  
  301.  
  302.           ╞UNCTION ╬AME: ╒─1616
  303.           ╨URPOSE: ╒NSIGNED 16 BIT BY 16 BIT DIVISION.
  304.           ├ALL ADDRESS: $├169
  305.           ╔NPUT REQUIREMENTS:
  306.                ┘         ╘HE ADDRESS OF THE 16 BIT DIVISOR.
  307.                ╪         ╘HE ADDRESS OF THE 16 BIT DIVIDEND.
  308.           ╧UTPUT:
  309.                ╪         ╘HE ADDRESS OF THE 16 BIT QUOTIENT.
  310.                $12-$13   ╘HE 16 BIT REMAINDER.
  311.  
  312.           ─ESCRIPTION: ╘HIS ROUTINE IS ONE OF THE ╟┼╧╙ MATH ROUTINES. ╪ AND
  313.           ┘  EACH HAVE THE ADDRESS OF A TERM IN THE DIVISION.  ╘HE QUOTIENT
  314.           IS  STORED IN PLACE OF THE ORIGINAL DIVIDEND THAT ╪  POINTED  TO.
  315.           ╘HE DIVIDEND IS LEFT UNTOUCHED.
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-56
  335.  
  336.  
  337.           ╞UNCTION ╬AME: ╒═1616
  338.           ╨URPOSE: ╒NSIGNED 16 BIT BY 16 BIT MULTIPLY.
  339.           ├ALL ADDRESS: $├166
  340.           ╔NPUT REQUIREMENTS:
  341.                ┘         ╘HE ADDRESS OF THE 16 BIT MULTIPLIER.
  342.                ╪         ╘HE ADDRESS OF THE 16 BIT MULTIPLICAND.
  343.           ╧UTPUT:
  344.                ╪         ╘HE ADDRESS OF THE 16 BIT RESULT.
  345.  
  346.           ─ESCRIPTION: ╘HIS ROUTINE IS ONE OF THE ╟┼╧╙ MATH ROUTINES. ╪ AND
  347.           ┘ EACH HAVE  THE  ADDRESS  OF A TERM IN THE  MULTIPLICATION.  ╘HE
  348.           RESULT IS  STORED  IN  PLACE OF THE  ORIGINAL MULTIPLICAND THAT ╪
  349.           POINTED TO.  ╘HE MULTIPLIER POINTED TO BY ┘ IS UNTOUCHED.
  350.  
  351.  
  352.           ╞UNCTION ╬AME: ╒═168
  353.           ╨URPOSE: ╒NSIGNED 8 BIT BY 16 BIT MULTIPLY.
  354.           ├ALL ADDRESS: $├163
  355.           ╔NPUT REQUIREMENTS:
  356.                ┘         ╘HE ADDRESS OF THE 8 BIT MULTIPLIER.
  357.                ╪         ╘HE ADDRESS OF THE 16 BIT MULTIPLICAND.
  358.           ╧UTPUT:
  359.                ╪         ╘HE ADDRESS OF THE 16 BIT PRODUCT.
  360.  
  361.           ─ESCRIPTION: ╘HIS ROUTINE IS ONE OF THE ╟┼╧╙ MATH ROUTINES. ╪ AND
  362.           ┘  EACH  HAVE THE ADDRESS OF A TERM IN  THE  MULTIPLICATION.  ╘HE
  363.           RESULT  IS  STORED IN PLACE OF THE ORIGINAL MULTIPLICAND  THAT  ╪
  364.           POINTED  TO.  ╘HE BYTE FOLLOWING THE MULTIPLIER IS SET  TO  ZERO,
  365.           THEN CONTROL PASSES TO ╒═1616.
  366.  
  367.  
  368.           ╞UNCTION ╬AME: ╒═╒╠88
  369.           ╨URPOSE: ╒NSIGNED 8 BIT BY 8 BIT MULTIPLY.
  370.           ├ALL ADDRESS: $├160
  371.           ╔NPUT REQUIREMENTS:
  372.                ┘         ╘HE ADDRESS OF THE MULTIPLIER.
  373.                ╪         ╘HE ADDRESS OF THE MULTIPLICAND.
  374.           ╧UTPUT:
  375.                ╪         ╘HE ADDRESS OF THE 16 BIT PRODUCT.
  376.  
  377.           ─ESCRIPTION: ╘HIS ROUTINE IS ONE OF THE ╟┼╧╙ MATH ROUTINES. ╪ AND
  378.           ┘  EACH  HAVE THE ADDRESS OF A TERM IN  THE  MULTIPLICATION.  ╘HE
  379.           RESULT  IS  STORED IN PLACE OF THE ORIGINAL MULTIPLICAND  THAT  ╪
  380.           POINTED TO.  ╘HE VALUE THAT ┘ POINTS TO IS LEFT UNTOUCHED.
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-57
  401.  
  402.  
  403.           ╞UNCTION ╬AME: ╒╨─┴╘┼
  404.           ╨URPOSE: ╒PDATE A ╓╠╔╥ FILE.
  405.           ├ALL ADDRESS: $├295
  406.           ╧UTPUT:
  407.                $8498     ├LEARED TO $00.
  408.           ╨REPARATORY ROUTINES: ╓╧╨┼╬
  409.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  410.  
  411.           ─ESCRIPTION: ╘HIS ROUTINE WRITES THE OPEN ╓╠╔╥ FILE'S ╓╠╔╥ SECTOR
  412.           TO  DISK  AND UPDATES THE FILE'S DIRECTORY ENTRY ON  DISK  (╘IME,
  413.           DATE AND FILE SIZE).  ╘HIS OPERATION IS NOT PERFORMED IF LOCATION
  414.           $8498  IS ZERO TO START WITH.  ╘HAT LOCATION IS A FLAG THAT TELLS
  415.           WHETHER THE FILE HAS BEEN ALTERED OR NOT.  ╘HIS ROUTINE IS CALLED
  416.           BY ╓├╠╧╙┼.
  417.  
  418.  
  419.           ╞UNCTION ╬AME: ╓├╠╧╙┼
  420.           ╨URPOSE: ├LOSE A ╓╠╔╥ FILE.
  421.           ├ALL ADDRESS: $├277
  422.           ╧UTPUT:
  423.                $8873     ├LEARED TO $00.
  424.           ╨REPARATORY ROUTINES: ╓╧╨┼╬
  425.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  426.  
  427.           ─ESCRIPTION:  ╘HE  ╓╠╔╥  SECTOR IS REWRITTEN TO THE DISK AND  THE
  428.           DIRECTORY  IS  UPDATED WITH A NEW TIME,  DATE AND  FILE  SIZE  BY
  429.           CALLING  ╒╨─┴╘┼.  ╠OCATION $8873 IS THE TRACK NUMBER OF THE  ╓╠╔╥
  430.           SECTOR.  ┬Y CLEARING IT,  ╟┼╧╙ SAYS THAT THE FILE IS NO LONGER IN
  431.           MEMORY.
  432.  
  433.  
  434.           ╞UNCTION ╬AME: ╓╠╔╬┼
  435.           ╨URPOSE: ─RAWS A VERTICAL LINE ON THE SCREEN.
  436.           ├ALL ADDRESS: $├121
  437.           ╔NPUT REQUIREMENTS:
  438.                ┴         ╘HE ACTUAL BIT PATTERN FOR THE LINE.
  439.                $08       ╘HE TOP MARGIN.
  440.                $09       ╘HE BOTTOM MARGIN.
  441.                $0┴-$0┬   ╘HE RIGHT MARGIN.
  442.  
  443.           ─ESCRIPTION:  ╘HIS  ROUTINE  DRAWS A VERTICAL LINE ON  THE  HIRES
  444.           SCREEN IN A GIVEN PATTERN. ╙EE ALSO ╥╧╫┴─╥.
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-58
  467.  
  468.  
  469.           ╞UNCTION ╬AME: ╓╠╧┴─
  470.           ╨URPOSE: ╠OAD A ╓╠╔╥ CHAIN.
  471.           ├ALL ADDRESS: $├28├
  472.           ╔NPUT REQUIREMENTS:
  473.                $06-$07   ═AXIMUM BYTE COUNT OF LOAD.
  474.                $10-$11   ╠OAD ADDRESS.
  475.                $8496     ├URRENT CHAIN NUMBER.
  476.           ╧UTPUT:
  477.                $8302-$83╞╞ ╘ABLE OF TRACKS AND SECTORS THAT WERE LOADED.
  478.           ╨REPARATORY ROUTINES: ╓╧╨┼╬
  479.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  480.  
  481.           ─ESCRIPTION:  ╘HIS  ROUTINE  LOADS THE CURRENT CHAIN  BY  CALLING
  482.           ╠├╚┴╔╬.
  483.  
  484.  
  485.           ╞UNCTION ╬AME: ╓╧╨┼╬
  486.           ╨URPOSE: ╧PENS A ╓╠╔╥ FILE.
  487.           ├ALL ADDRESS: $├274
  488.           ╔NPUT REQUIREMENTS:
  489.                $02-$03   ╨OINTER TO FILE NAME.
  490.           ╧UTPUT:
  491.                $04       ╘RACK OF ╓╠╔╥ SECTOR.
  492.                $05       ╙ECTOR OF ╓╠╔╥ SECTOR.
  493.                $0├-$0─   ╨OINTER TO FILE'S DIRECTORY ENTRY.
  494.                $8100-$81╞╞ ╞ILE'S ╓╠╔╥ SECTOR.
  495.                $8496     ╔NITIAL CHAIN # (╙HOULD BE 0).
  496.                $8497     ╬UMBER OF CHAINS.
  497.                $8498     ├LEARED TO $00. (╓╠╔╥ FILE MODIFIED).
  498.                $8499-$849┴ ╞ILE SIZE.
  499.                $886╞     ╘RACK OF FILE'S DIRECTORY ENTRY.
  500.                $8870     ╙ECTOR OF FILE'S DIRECTORY ENTRY.
  501.                $8871-$8872 ╨OINTER TO DIRECTORY ENTRY.
  502.                $8873     ╘RACK FOR ╓╠╔╥ SECTOR.
  503.                $8874     ╙ECTOR FOR ╓╠╔╥ SECTOR.
  504.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  505.  
  506.           ─ESCRIPTION:  ╘HIS ROUTINE OPENS A ╓╠╔╥ FILE, AND SETS UP ALL THE
  507.           VARIABLES ASSOCIATED WITH IT. ╧NLY ONE ╓╠╔╥ FILE CAN BE OPEN AT A
  508.           TIME DUE TO THE FACT THAT THESE VARIABLES ARE GLOBAL.
  509.  
  510.  
  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-59
  533.  
  534.  
  535.           ╞UNCTION ╬AME: ╓╙┴╓┼
  536.           ╨URPOSE: ╙AVE MEMORY TO A ╓╠╔╥ CHAIN.
  537.           ├ALL ADDRESS: $├28╞
  538.           ╔NPUT REQUIREMENTS:
  539.                $06-$07   ╠ENGTH OF SAVE.
  540.                $10-$11   ┴DDRESS OF MEMORY TO BE SAVED.
  541.                $8496     ╓╠╔╥ CHAIN NUMBER.
  542.           ╧UTPUT:
  543.                $8300-$83╞╞ ╘ABLE OF TRACKS AND SECTORS THAT WERE SAVED TO.
  544.           ╨REPARATORY ROUTINES: ╓╧╨┼╬
  545.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  546.  
  547.           ─ESCRIPTION:  ╘HIS  ROUTINE  SAVES A BLOCK OF MEMORY  TO  A  ╓╠╔╥
  548.           CHAIN. ╔F THE CHAIN ALREADY EXISTED, THEN IT IS DELETED FIRST. ╔F
  549.           THE  LENGTH  OF THE SAVE IS 0,  THEN NO SAVE IS  PERFORMED.  ╘HIS
  550.           WOULD ALLOW THIS ROUTINE TO BE USED AS A DELETE CHAIN FUNCTION.
  551.  
  552.  
  553.           ╞UNCTION ╬AME: ╫╚┴╘╔╙
  554.           ╨URPOSE: ╫HO KNOWS?
  555.           ├ALL ADDRESS: $├196
  556.           ╧UTPUT:
  557.                $02-$03   ╓ALUE FROM $9╞27-$9╞28 ($3┼66).
  558.  
  559.           ─ESCRIPTION: ╘HIS ROUTINE SEEMS TO HAVE ABSOLUTELY NO PURPOSE. ╔T
  560.           COPIES  A VECTOR FROM $9╞27-$9╞28 ($3┼66) TO  $02-$03.  ╠OCATIONS
  561.           $9╞27  AND $9╞28 ARE CHECKED BY ANOTHER ROUTINE AT BOOTUP.  ╔F IT
  562.           IS ZERO THEN THE FIRST ╓╠╔╥ CHAIN OF THE KERNAL ($9000-$9╞╞╞)  IS
  563.           REWRITTEN  TO  THE  DISK.  ╘HIS  MAY BE A  REMNANT  OF  THE  ╟┼╧╙
  564.           DEVELOPMENT  ENVIRONMENT OR IT MAY BE SOME KIND OF KERNAL VERSION
  565.           NUMBER. ╘HE CODE LOOKS LIKE THIS:
  566.                 ╠─┴ $9╞28
  567.                 ╙╘┴ $03
  568.                 ╠─┴ $9╞27
  569.                 ╙╘┴ $02
  570.                 ╥╘╙
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-60
  599.  
  600.  
  601.           ╞UNCTION ╬AME: ╫╔╬─╧╫
  602.           ╨URPOSE: ╨ROCESS A WINDOW DESCRIPTOR.
  603.           ├ALL ADDRESS: $├256
  604.           ╔NPUT REQUIREMENTS:
  605.                $02-$03   ╨OINTER TO WINDOW DESCRIPTOR.
  606.           ╧UTPUT:
  607.                $02       ╫INDOW COMMAND THAT CLOSED THE WINDOW.
  608.                $851─     ╫INDOW COMMAND THAT CLOSED THE WINDOW.
  609.  
  610.           ─ESCRIPTION:  ╠IKE  ═┼╬╒,  THIS IS ANOTHER VERY POWERFUL ROUTINE.
  611.           ╟IVEN  A  DESCRIPTION OF THE WINDOW'S  COMMANDS, EVERYTHING  GETS
  612.           HANDLED.  ╘HE FORMAT OF THE WINDOW DESCRIPTOR IS AS FOLLOWS:
  613.                .┬┘╘┼ ╫INDOW TYPE.
  614.                          ┬IT 7     ╫INDOW  SIZE  FOLLOWS;   OTHERWISE,  USE
  615.                                    STANDARD  WINDOW  SIZE ROWS 40  TO  135,
  616.                                    COLUMNS 72 TO 263.
  617.                          ┬ITS 0-4  ╞ILL PATTERN FOR SHADOW.  ╔F ZERO,  THEN
  618.                                    NO SHADOW IS DRAWN.
  619.                ╘HE  FOLLOWING  SIX BYTES ARE ONLY PRESENT IF BIT 7  OF  THE
  620.                WINDOW TYPE IS SET.
  621.                .┬┘╘┼ ╘OP MARGIN.
  622.                .┬┘╘┼ ┬OTTOM MARGIN.
  623.                .╫╧╥─ ╠EFT MARGIN.
  624.                .╫╧╥─ ╥IGHT MARGIN.
  625.  
  626.                .┬┘╘┼ ├OMMAND BYTES FOLLOWED BY WHATEVER DATA IS NEEDED.
  627.  
  628.           ┴LL THE CLICK BOX DESCRIPTORS ARE STORED IN A TABLE AT $880├, FOR
  629.           ╟┼╧╙ TO PROCESS THEM.  ╘HIS LIMITS THE NUMBER OF CLICK BOXES IN A
  630.           WINDOW  TO  8.  ╙EVERAL  MEMORY  LOCATIONS  ARE  SAVED  PRIOR  TO
  631.           PROCESSING THE WINDOW;  ALSO THE STACK POINTER AND RETURN ADDRESS
  632.           ARE  SAVED.  ┴FTER THE WINDOW IS DRAWN,  CONTROL PASSES  BACK  TO
  633.           ═┴╔╬. ├╠╙╫╔╬ MUST BE CALLED TO RETURN TO THE CALLER. ╘HEREFORE IT
  634.           IS  ESSENTIAL  THAT  SOME  MEANS  OF  CLOSING  A  WINDOW  EXISTS,
  635.           OTHERWISE  A  SITUATION  LIKE ╙┘╙┼╥╥ WILL OCCUR (╙EE  THE  ╙┘╙┼╥╥
  636.           ROUTINE FOR MORE INFO).
  637.                ╘HE COMMAND THAT CLOSES THE WINDOW IS THE VALUE RETURNED  TO
  638.           THE USER.  IE.  IF A CLICK BOX CLOSES THE WINDOW THEN THE COMMAND
  639.           NUMBER  THAT  DREW THE CLICK BOX IS RETURNED.  ╚OWEVER IT IS  THE
  640.           USER'S  ROUTINE'S  RESPONSIBILITY  TO SET THE VALUE  OF  LOCATION
  641.           $851─ IF A USER CLICK BOX IS TO CLOSE THE WINDOW.  ├OMMAND #13 IS
  642.           ANOTHER ONE THAT CAN CLOSE THE WINDOW.  ╒SER ROUTINES DO NOT HAVE
  643.           TO CLOSE THE WINDOW BUT THEY MAY IF THEY SO DESIRE.
  644.                ╘HE  FOLLOWING  IS A LIST OF THE MEMORY ADDRESSES STORED  BY
  645.           THE WINDOW PROCESSOR:
  646.                $22-$38   $849┬-$84├0    $86├0-$87─3    $8╞╞8-$8╞╞╞
  647.                $3╞-$40   $─000-$─010    $─01┬-$─01─    $─025-$─026
  648.                $─015     $─028-$─02┼
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-61
  665.  
  666.  
  667.                               ╫INDOW ╨ROCESSOR ├OMMANDS
  668.  
  669.           0    ╬O DATA. ╘HIS COMMAND ENDS THE WINDOW DESCRIPTOR.
  670.           1    ╘HE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES  AND
  671.                THE ROW OFFSET IN PIXELS.  ─RAW AN '╧╦' CLICK BOX.
  672.           2    ╘HE  DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES AND
  673.                THE ROW OFFSET IN PIXELS.  ─RAW A '├ANCEL' CLICK BOX.
  674.           3    ╘HE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES  AND
  675.                THE ROW OFFSET IN PIXELS.  ─RAW A '┘ES' CLICK BOX.
  676.           4    ╘HE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES  AND
  677.                THE ROW OFFSET IN PIXELS.  ─RAW A '╬O' CLICK BOX.
  678.           5    ╘HE  DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES AND
  679.                THE ROW OFFSET IN PIXELS.  ─RAW AN '╧PEN' CLICK BOX.
  680.           6    ╘HE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES  AND
  681.                THE ROW OFFSET IN PIXELS.  ─RAW A '─ISK' CLICK BOX.
  682.           7-10 ┴RE UNDEFINED COMMANDS.
  683.           11   ╘HE  DATA  FOR THIS COMMAND IS THE COLUMN OFFSET IN  PIXELS,
  684.                THE ROW OFFSET IN PIXELS,  AND THE ADDRESS OF A TEXT STRING.
  685.                ╘HIS  COMMAND  DISPLAYS  THE TEXT STRING  AT  THE  SPECIFIED
  686.                OFFSET IN THE WINDOW.
  687.           12   ╘HE  DATA FOR THIS COMMAND IS THE COLUMN OFFSET  IN  PIXELS,
  688.                THE  ROW  OFFSET  IN  PIXELS AND ZERO PAGE  ADDRESS  OF  THE
  689.                ADDRESS OF A TEXT STRING. ╘HIS COMMAND IS SIMILAR TO COMMAND
  690.                11, EXCEPT FOR ITS METHOD OF ADDRESSING THE STRING.
  691.           13   ╘HE  DATA FOR THIS COMMAND IS THE COLUMN OFFSET  IN  PIXELS,
  692.                THE  ROW OFFSET IN PIXELS,  ZERO PAGE ADDRESS OF THE ADDRESS
  693.                OF  THE  TEXT  BUFFER TO BE USED BY ╔╬╨╒╘  AND  THE  MAXIMUM
  694.                LENGTH OF THE INPUT BUFFER.  ╙EE ╔╬╨╒╘ FOR MORE INFORMATION.
  695.           14   ╙ET THE VECTOR AT $84┴9-$84┴┴ TO CLOSE THE WINDOW. ╟ENERALLY
  696.                USED WITH COMMAND 13.
  697.           15   ╘HE DATA FOR THIS COMMAND IS THE ADDRESS OF A ╟╥╨╚╔├ COMMAND
  698.                TABLE.  ╙EE ╟╥╨╚╔├ FOR FURTHER INFORMATION.
  699.           16   ╘HE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN PIXELS AND
  700.                THE  ROW  OFFSET IN PIXELS.  ╘HIS COMMAND OPENS A  SCROLLING
  701.                WINDOW OF FILENAMES.  ╠OCATIONS $10 AND $16-$17 MUST BE  SET
  702.                PRIOR  TO  CALLING ╫╔╬─╧╫ (╙EE ╘┴┬╠┼ FOR MORE  INFORMATION).
  703.                ╘HE FILENAMES ARE STORED AT $8300-$83╞╞,  TO A MAXIMUM OF 15
  704.                FILENAMES.  ╠OCATION  $885├  WILL RETURN THE  INDEX  OF  THE
  705.                SELECTED  FILE  NAME.  ╔F MORE THAN 6 FILES ARE  FOUND,  THE
  706.                SUBWINDOW WILL HAVE A CLICK BOX FOR SCROLLING THE LIST.
  707.           17   ╘HE DATA FOR THIS COMMAND IS THE ADDRESS OF THE ROUTINE  FOR
  708.                BUTTON PRESSED.  ╘HIS COMMAND SETS THE VECTOR AT $84┴9-$84┴┴
  709.                TO A USER SPECIFIED ROUTINE.
  710.           18   ╘HE DATA FOR THIS COMMAND IS THE COLUMN OFFSET IN BYTES, THE
  711.                ROW  OFFSET  IN  PIXELS AND THE ADDRESS OF A USER'S  8  BYTE
  712.                CLICK BOX DESCRIPTION, IN THE FOLLOWING FORMAT:
  713.                          #BYTES    ─ESCRIPTION
  714.                             2      ┴DDRESS OF GRAPHIC DATA.
  715.                             2      ╬OT USED.
  716.                             1      ╫IDTH OF BOX IN BYTES.
  717.                             1      ╚EIGHT OF BOX IN PIXELS.
  718.                             2      ┴DDRESS OF ROUTINE TO PROCESS THIS BOX.
  719.           19   ╘HE  DATA  FOR  THIS  COMMAND  IS  THE  ADDRESS  OF  A  USER
  720.                SUBROUTINE.  ╘HIS COMMAND CALLS THE USER'S SUBROUTINE.
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.           ╟┼╧╙ ╦ERNAL ╥OUTINES                                      1-62
  731.  
  732.  
  733.           ╞UNCTION ╬AME: ╫╥180
  734.           ╨URPOSE: ╫RITE TRACK 18 SECTOR 0 BACK TO DISK.
  735.           ├ALL ADDRESS: $├24┴
  736.           ╔NPUT REQUIREMENTS:
  737.                $8200-$82╞╞ ─ATA FOR TRACK 18 SECTOR 0.
  738.           ╧UTPUT:
  739.                $04       $12, TRACK NUMBER.
  740.                $05       $00, SECTOR NUMBER.
  741.                $0┴-$0┬   $8200, ADDRESS OF BUFFER AREA.
  742.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  743.  
  744.           ─ESCRIPTION:  ╘HIS  ROUTINE SETS UP THE POINTERS FOR ╫╥╔╘┼,  THEN
  745.           CALLS  IT TO WRITE THE SECTOR.  ╘HIS IS GENERALLY USED TO  UPDATE
  746.           THE ┬┴═ ON THE DISK.
  747.  
  748.  
  749.           ╞UNCTION ╬AME: ╫╥╔╘┼
  750.           ╨URPOSE: ╫RITE A GIVEN TRACK AND SECTOR.
  751.           ├ALL ADDRESS: $├1┼7
  752.           ╔NPUT REQUIREMENTS:
  753.                $04       ╘RACK OF SECTOR TO BE WRITTEN.
  754.                $05       ╙ECTOR NUMBER TO BE WRITTEN.
  755.                $0┴-$0┬   ╨OINTER TO BUFFER.
  756.           ┼RRORS: ╙EE ┴PPENDIX
  757.  
  758.           ─ESCRIPTION: ╠OADS TURBODOS IF IT IS NOT ALREADY THERE BY CALLING
  759.           ─╙┼╘╒╨.  ╘HE DESIRED BLOCK IS THEN WRITTEN TO THE DISK BY CALLING
  760.           ╫╥╔╘┼2.  ╞INALLY ├╫╥╔╘┼ IS CALLED TO VERIFY THE SECTOR.
  761.  
  762.  
  763.           ╞UNCTION ╬AME: ╫╥╔╘┼2
  764.           ╨URPOSE: ╫RITE A SECTOR TO THE DISK.
  765.           ├ALL ADDRESS: $├220
  766.           ╔NPUT REQUIREMENTS:
  767.                $04       ╘RACK NUMBER.
  768.                $05       ╙ECTOR NUMBER.
  769.                $0┴-$0┬   ╨OINTER TO DATA BUFFER.
  770.           ╨REPARATORY ROUTINES: ─╙┼╘╒╨
  771.           ┼RRORS: ╙EE ┴PPENDIX ╔.
  772.  
  773.           ─ESCRIPTION:  ╘HIS  ROUTINE  IS TO ╫╥╔╘┼,  AS ╥┼┴─2 IS  TO  ╥┼┴─.
  774.           ─╙┼╘╒╨ MUST HAVE BEEN CALLED PRIOR TO USING THIS ROUTINE.
  775.  
  776.  
  777.           ╞UNCTION ╬AME: ┌╞╔╠╠
  778.           ╨URPOSE: ╞ILLS A MEMORY REGION WITH ZEROES.
  779.           ├ALL ADDRESS: $├178
  780.           ╔NPUT REQUIREMENTS:
  781.                $02-$03   ╘HE LENGTH OF THE REGION.
  782.                $04-$05   ╘HE ADDRESS OF THE REGION.
  783.  
  784.           ─ESCRIPTION:  ═EMORY  IS  FILLED WITH ZEROES BY STORING A $00  AT
  785.           LOCATION $06 AND CALLING ┬╠╦╞╔╠.
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.