home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / MLCOLUMN.ARC / MLCOL.7 < prev    next >
Encoding:
Text File  |  2019-04-13  |  6.7 KB  |  143 lines

  1.                     ═┴├╚╔╬┼ ╠┴╬╟╒┴╟┼ ╨┴╥╘ ╓╔╔
  2.  
  3.                  BY ╠YLE ╟IESE (╠┘╠┼╟ ON ─┼╠╨╚╔)
  4.  
  5.  
  6. ╔T LOOKS LIKE THIS MONTH WE WILL FINISH UP THE ╙EQUENTIAL ╞ILE ╥EADER.
  7. ╙O WHAT WILL ╔ DO NEXT MONTH? ╠ET ME KNOW WHAT ┘╧╒ WANT WRITTEN ABOUT.
  8. ╔ REALLY WANT TO WRITE ABOUT SOMETHING THAT WILL INTEREST YOU, AND THE
  9. BEST WAY TO DO THAT IS TO TELL ME! ═Y ─┼╠╨╚╔ USERNAME IS ╠┘╠┼╟, AND IF
  10. YOU ARE ON ╟ENIE TELL DEB! AND SHE WILL FORWARD THE COMMENTS TO ME.
  11.  
  12. ╫HEN WE LEFT OFF LAST MONTH WE JUST OPENED THE FILE TO BE READ AND NOW
  13. ARE READY TO DECIDE IF WE WANT TO SEND IT TO THE PRINTER OR THE
  14. SCREEN. ╧F COURSE, WE FIRST PRINT A MESSAGE TO THE SCREEN ASKING
  15. ╙CREEN OR ╨RINTER?
  16.  
  17. ╔N LINE 1280, WE GET A CHARACTER FROM THE KEYBOARD (IF THERE IS ONE,
  18. REMEMBER THIS ROUTINE WILL A ├╚╥$(0) IF THERE ARE NO KEYS PRESSED). ╫E
  19. CHECK FOR AN "S" FOR THE SCREEN. ╔F WE FOUND ONE WE ╩╙╥ TO THE SCREEN
  20. SETUP ROUTINE. ╔F NOT WE CHECK FOR A "P".
  21.  
  22. ╠ET'S LOOK AT THE '╧╙├╥' SUBROUTINE STARTING AT LINE 6500. ╫HY ARE WE
  23. OPENING A LOGICAL FILE FOR THE SCREEN? ─OESN'T THE ╨ROGRAMMERS
  24. ╥EFERENCE ╟UIDE SAY IT IS NOT NEEDED? ┘ES, THAT IS TRUE. ┬UT OUR
  25. OUTPUT ROUTINE WILL NEED TO BE ABLE TO SEND TO THE SCREEN OR THE
  26. PRINTER. ╘HE PRINTER NEEDS THE LOGICAL FILE TO BE THERE. ╙O IT CAN BE
  27. EASIER TO SEND THE OUTPUT TO A LOGICAL FILE RATHER THAT DECIDE FOR
  28. EACH CHARACTER HOW TO SEND IT, DEPENDING ON THE OUTPUT DEVICE
  29. SELECTED.
  30.  
  31. ╧F COURSE, WE COULD HAVE WRITTEN TWO OUTPUT ROUTINES. ╘HEN EVERY TIME
  32. WE SENT A CHARACTER, WE WOULD HAVE TO CHECK AND SEE WHICH OUTPUT
  33. DEVICE WAS SELECTED AND BRANCH TO THE PROPER ROUTINE.
  34.  
  35. ╧K, NOW IF WE WANT TO SEND OUR FILE TO OUR PRINTER WE WILL GO TO LINE
  36. 6000 FOR THE ╨╥╔╬╘┼╥ SUBROUTINE. ╘HERE WE ASK WHAT DEVICE NUMBER WE
  37. ARE GOING TO USE. ╚ERE (IN LINES 6060-6090) WE LIMIT THE DEVICE NUMBER
  38. TO 4 THROUGH 7. ┴FTER WE GET THE DEVICE NUMBER WE CONVERT IT FROM
  39. ╨┼╘╙├╔╔ TO THE NUMBER WE MUST USE FOR THE ╙┼╘╠╞╙ ROUTINE.
  40.  
  41. ╬EXT WE CAN SELECT THE SECONDARY ADDRESS WITHIN THE LIMITS ZERO TO
  42. NINE. ╔ LIMITED MYSELF TO THIS RANGE TO MAKE THE ROUTINES HERE SIMPLE.
  43. ┴GAIN, WE HAVE TO CONVERT FROM ╨┼╘╙├╔╔ TO THE NUMBER TO BE USED FOR
  44. THE ╙┼╘╠╞╙ ROUTINE.
  45.  
  46. ╬OW WE CAN OPEN THE LOGICAL FILE. ╞OR A PRINTER CHANNEL, WE DON'T NEED
  47. A FILE NAME AND SET THE LENGTH OF THE FILENAME TO ZERO AND FINALLY ╩╙╥
  48. ╧╨┼╬. ╫HY DON'T WE CHECK THE PRINTER FILE THE SAME WAY WE DID THE DISK
  49. FILE?
  50.  
  51. ╫ELL, FIRST OF ALL, NOTHING HAS BEEN SENT TO THE PRINTER YET. ╒NTIL WE
  52. OPEN THE OUTPUT CHANNEL (╩╙╥ ├╚╦╧╒╘) THE SECONDARY ADDRESS AND THE
  53. LISTEN COMMANDS ARE NOT SENT. ┴T THAT TIME IS WHEN WE FIND OUT IF THE
  54. PRINTER IS NOT THERE, WHEN THE PROGRAM HANGS UP (DEPENDING ON THE
  55. PRINTER AND INTERFACE).
  56.  
  57. ╞INALLY WE ARE GETTING TO THE HEART OF THE WHOLE THING! ╥EAD A
  58. CHARACTER AND SEND IT TO OUR OUTPUT DEVICE. ╞IRST (IN LINE 1400-1410)
  59. WE OPEN AN INPUT CHANNEL TO THE DISK DRIVE. ┴ND THEN WE TRY TO GET
  60. OUR FIRST CHARACTER FROM THE DISK DRIVE.
  61.  
  62. ╙OME OF ├┬═'S ─╧╙ ROUTINES (DEPENDING ON THE TYPE OF DRIVE) WILL SEND
  63. SEVERAL NULL BYTES BEFORE SENDING THE FIRST BYTE OF THE FILE, AND HERE
  64. WE TRAP THEM. ╬EXT WE MUST STORE THAT CHARACTER AS WE MUST READ THE
  65. STATUS BYTE AND STORE IT ALSO.
  66.  
  67. ╬OW HERE IS WHERE ╔ MADE THE ROUTINE "GENERIC", BY LOADING UP THE BYTE
  68. REPRESENTING THE OUTFILE AND OPENING AN OUTPUT CHANNEL TO IT. ┴T THIS
  69. POINT WE COULD CARE LESS IF THE OUTPUT DEVICE WAS THE SCREEN, PRINTER
  70. OR EVEN A DISK DRIVE (OF COURSE WE WOULD HAVE TO WRITE A DIFFERENT
  71. SUBROUTINE FOR OPENING AN OUTPUT FILE ON THE DISK DRIVE.)
  72.  
  73. ╔N LINE 1490, WE ARE CHECKING FOR A SUCCESSFUL OPENING OF THE OUTPUT
  74. CHANNEL. ╔F THE CHANNEL IS NOT OPENNING, ╔ DO A ├╠╥├╚╬ (RESTORE DEFAULT
  75. ╔/╧) AND TRY AGAIN. ╫HY? ╔ HAD QUITE A BIT OF TROUBLE WITH THIS
  76. ROUTINE LOCKING UP WHEN SENDING A FILE TO MY PRINTER UNTIL ╔ PUT LINES
  77. 1490-1530 IN.
  78.  
  79. ╔T SEEMS THAT MY PRINTER INTERFACE COULD NOT KEEP UP WITH THE RAPID
  80. OPENING AND CLOSING OF CHANNELS ON THE SERIAL BUS. ╔T WOULD MISS THE
  81. ╩╙╥ ├╚╦╧╒╘ IN LINE 1480 ONCE IN A WHILE. ╘HEN IN LINE 1550, ├╚╥╧╒╘
  82. ASSUMES THE CHANNEL IS PROPERLY OPENED AND WILL CRASH YOUR PROGRAM.
  83.  
  84. ╘HIS ONE PLACE WHERE THE ╨╥╟ MISSES AN IMPORTANT POINT. ╔F YOU LOOK AT
  85. THE DESCRIPTION OF ├╚╥╧╒╘ ON PAGE 278-279 (OF THE ╨╥╟ FOR THE ├-64),
  86. THEY MISS THAT LITTLE DETAIL. ┴ND OF COURSE ╔ PUT IN A WAY TO BREAK
  87. OUT OF THIS LOOP IN CASE THE PRINTER REALY WASN'T THERE (LINES
  88. 1510-1530).
  89.  
  90. ╬OW IS THE TIME TO CHECK THE STATUS BYTE WE STORED IN LINE 1460. ┴T
  91. THIS POINT WE ARE ONLY INTERESTED IN THE END OF FILE BIT AND USE THE
  92. ┴╬─ INSTRUCTION TO LOOK AT ONLY THAT BIT. ╔F IT IS NOT SET WE WILL
  93. CONTINUE ON AS WE HAVE NOT REACHED THE END OF THE FILE YET.
  94.  
  95. ╔ DECIDED THAT IT WOULD BE NICE TO BE ABLE TO PAUSE THE OUTPUT IN
  96. ORDER TO TAKE TIME TO READ THE CONTENTS OF THE SCREEN BEFORE IT
  97. SCROLLS OUT OF SIGHT. ╧R A WAY TO ABORT OUT IF WE FOUND OUT THIS FILE
  98. WAS NOT THE ONE WE REALLY WANTED TO LOOK AT OR IF WE WANTED TO JUST
  99. SEE WHAT THE FILE CONTAINED.
  100.  
  101. ╔ USED THE ╙╚╞╠┴╟ BYTE AT $028─ TO SEE IF THE ╙HIFT KEY IS PRESSED.
  102. ╘HIS BYTE IS UPDATED BY THE SYSTEMS NORMAL ╔╥╤ ROUTINES. ╔F THE SHIFT
  103. KEY ONLY IS DOWN THIS BYTE HOLDS A VALUE OF 1. ╔F THE ├╘╥╠ KEY IS
  104. DOWN, A 4 IS PLACED THERE. ┴ND IF THE LOGO KEY IS DOWN A 2 IS FOUND
  105. HERE. ╔F 2 OR MORE OF THESE KEYS ARE DEPRESSED THE SUM OF THE KEY
  106. VALUES IS FOUND THERE AT $028─.
  107.  
  108. ┴S LONG AS THE SHIFT KEY IS DOWN (OR SHIFT LOCK), THE PROGRAM WILL GO
  109. INTO A LOOP RECHECKING THE ╙╚╞╠┴╟ BYTE. ╔F THE ╙HIFT AND ├ONTROL KEYS
  110. ARE DOWN (FOR A VALUE OF 6), THEN ABORT OUT JUST AS IF WE HIT THE END
  111. OF THE FILE.
  112.  
  113. ╔N LINE 1650 WE JUMP BACK TO AND GET ANOTHER BYTE FOR OUTPUTING.
  114.  
  115. ╬OW WHEN WE FINISH WE HAVE TO START CLOSING CHANNELS AND LOGICAL FILES
  116. IN LINE 1680. ╫E HAVE TO CLOSE THE READ FILE BEFORE THE DISK COMMAND
  117. CHANNEL. ╔N THIS PROGRAM, IT IS NOT AS IMPORTANT. ┬UT IF WE WERE
  118. WRITING TO A DISK FILE AND CLOSED THE COMMAND FILE, THAT WOULD CLOSE
  119. ┴╠╠ OPEN FILES IN THE DRIVE, EVEN IF WE DIDN'T WANT THEM CLOSED YET.
  120.  
  121. ╬EXT WE GO AFTER THE PRINTER (OR SCREEN). ╧N SOME PRINTERS, INCOMING
  122. CHARACTERS ARE BUFFERED UNTIL THE BUFFER IS FULL OR A CARRIAGE RETURN
  123. IS RECEIVED. ╙O HERE WE SEND A CARRIAGE RETURN TO MAKE SURE THE BUFFER
  124. IS EMPTYED BEFORE WE CLOSE UP.
  125.  
  126. ╬OW A MESSAGE IS PRINTED TO TELL US TO PRESS THE RETURN KEY BEFORE THE
  127. PROGRAM IS ALLOWED TO START OVER, WHICH CLEARS THE SCREEN. ╘HERE (IF
  128. YOU REMEMBER) HITTING THE RETURN WITH NO CHARACTER IN OUR FILENAME
  129. BUFFER WILL EXIT THIS PROGRAM.
  130.  
  131. ┴ND THAT CONCLUDES OUR FILE READER FINALLY! ╬EXT MONTH??? ┘OU TELL ME.
  132. ╨╠┼┴╙┼!
  133.  
  134. ╠YLE ╟IESE
  135. ┴╦┴ ╠┘╠┼╟
  136.  
  137. [┼─. ╬╧╘┼: ╘HIS IS ╠┘╠┼╟'╙ FINAL ARTICLE IN HIS MULTI-PART SERIES ON A
  138. ╙EQUENTIAL ╞ILE ╥EADER.  ╔NCLUDED IN THIS ISSUE OF THE *╙TAR┬OARD*
  139. ╩OURNAL IS THE FULL ╨┴╠ SOURCE CODE AND THE OBJECT CODE.  ╠OAD ╧BJECT
  140. ├ODE,8,1 AND THEN ╙┘╙49152 TO USE. ╔F YOU HAVEN'T BEEN FOLLOWING ALONG
  141. FOR THE LAST FEW MONTHS, BE SURE TO GO BACK AND RETRIEVE HIS EARLIER
  142. ARTICLES.  ╘HEY ARE EXCELLENT!
  143.