home *** CD-ROM | disk | FTP | other *** search
- ═┴├╚╔╬┼ ╠┴╬╟╒┴╟┼ ╨┴╥╘ ╓╔╔
-
- BY ╠YLE ╟IESE (╠┘╠┼╟ ON ─┼╠╨╚╔)
-
-
- ╔T LOOKS LIKE THIS MONTH WE WILL FINISH UP THE ╙EQUENTIAL ╞ILE ╥EADER.
- ╙O WHAT WILL ╔ DO NEXT MONTH? ╠ET ME KNOW WHAT ┘╧╒ WANT WRITTEN ABOUT.
- ╔ REALLY WANT TO WRITE ABOUT SOMETHING THAT WILL INTEREST YOU, AND THE
- BEST WAY TO DO THAT IS TO TELL ME! ═Y ─┼╠╨╚╔ USERNAME IS ╠┘╠┼╟, AND IF
- YOU ARE ON ╟ENIE TELL DEB! AND SHE WILL FORWARD THE COMMENTS TO ME.
-
- ╫HEN WE LEFT OFF LAST MONTH WE JUST OPENED THE FILE TO BE READ AND NOW
- ARE READY TO DECIDE IF WE WANT TO SEND IT TO THE PRINTER OR THE
- SCREEN. ╧F COURSE, WE FIRST PRINT A MESSAGE TO THE SCREEN ASKING
- ╙CREEN OR ╨RINTER?
-
- ╔N LINE 1280, WE GET A CHARACTER FROM THE KEYBOARD (IF THERE IS ONE,
- REMEMBER THIS ROUTINE WILL A ├╚╥$(0) IF THERE ARE NO KEYS PRESSED). ╫E
- CHECK FOR AN "S" FOR THE SCREEN. ╔F WE FOUND ONE WE ╩╙╥ TO THE SCREEN
- SETUP ROUTINE. ╔F NOT WE CHECK FOR A "P".
-
- ╠ET'S LOOK AT THE '╧╙├╥' SUBROUTINE STARTING AT LINE 6500. ╫HY ARE WE
- OPENING A LOGICAL FILE FOR THE SCREEN? ─OESN'T THE ╨ROGRAMMERS
- ╥EFERENCE ╟UIDE SAY IT IS NOT NEEDED? ┘ES, THAT IS TRUE. ┬UT OUR
- OUTPUT ROUTINE WILL NEED TO BE ABLE TO SEND TO THE SCREEN OR THE
- PRINTER. ╘HE PRINTER NEEDS THE LOGICAL FILE TO BE THERE. ╙O IT CAN BE
- EASIER TO SEND THE OUTPUT TO A LOGICAL FILE RATHER THAT DECIDE FOR
- EACH CHARACTER HOW TO SEND IT, DEPENDING ON THE OUTPUT DEVICE
- SELECTED.
-
- ╧F COURSE, WE COULD HAVE WRITTEN TWO OUTPUT ROUTINES. ╘HEN EVERY TIME
- WE SENT A CHARACTER, WE WOULD HAVE TO CHECK AND SEE WHICH OUTPUT
- DEVICE WAS SELECTED AND BRANCH TO THE PROPER ROUTINE.
-
- ╧K, NOW IF WE WANT TO SEND OUR FILE TO OUR PRINTER WE WILL GO TO LINE
- 6000 FOR THE ╨╥╔╬╘┼╥ SUBROUTINE. ╘HERE WE ASK WHAT DEVICE NUMBER WE
- ARE GOING TO USE. ╚ERE (IN LINES 6060-6090) WE LIMIT THE DEVICE NUMBER
- TO 4 THROUGH 7. ┴FTER WE GET THE DEVICE NUMBER WE CONVERT IT FROM
- ╨┼╘╙├╔╔ TO THE NUMBER WE MUST USE FOR THE ╙┼╘╠╞╙ ROUTINE.
-
- ╬EXT WE CAN SELECT THE SECONDARY ADDRESS WITHIN THE LIMITS ZERO TO
- NINE. ╔ LIMITED MYSELF TO THIS RANGE TO MAKE THE ROUTINES HERE SIMPLE.
- ┴GAIN, WE HAVE TO CONVERT FROM ╨┼╘╙├╔╔ TO THE NUMBER TO BE USED FOR
- THE ╙┼╘╠╞╙ ROUTINE.
-
- ╬OW WE CAN OPEN THE LOGICAL FILE. ╞OR A PRINTER CHANNEL, WE DON'T NEED
- A FILE NAME AND SET THE LENGTH OF THE FILENAME TO ZERO AND FINALLY ╩╙╥
- ╧╨┼╬. ╫HY DON'T WE CHECK THE PRINTER FILE THE SAME WAY WE DID THE DISK
- FILE?
-
- ╫ELL, FIRST OF ALL, NOTHING HAS BEEN SENT TO THE PRINTER YET. ╒NTIL WE
- OPEN THE OUTPUT CHANNEL (╩╙╥ ├╚╦╧╒╘) THE SECONDARY ADDRESS AND THE
- LISTEN COMMANDS ARE NOT SENT. ┴T THAT TIME IS WHEN WE FIND OUT IF THE
- PRINTER IS NOT THERE, WHEN THE PROGRAM HANGS UP (DEPENDING ON THE
- PRINTER AND INTERFACE).
-
- ╞INALLY WE ARE GETTING TO THE HEART OF THE WHOLE THING! ╥EAD A
- CHARACTER AND SEND IT TO OUR OUTPUT DEVICE. ╞IRST (IN LINE 1400-1410)
- WE OPEN AN INPUT CHANNEL TO THE DISK DRIVE. ┴ND THEN WE TRY TO GET
- OUR FIRST CHARACTER FROM THE DISK DRIVE.
-
- ╙OME OF ├┬═'S ─╧╙ ROUTINES (DEPENDING ON THE TYPE OF DRIVE) WILL SEND
- SEVERAL NULL BYTES BEFORE SENDING THE FIRST BYTE OF THE FILE, AND HERE
- WE TRAP THEM. ╬EXT WE MUST STORE THAT CHARACTER AS WE MUST READ THE
- STATUS BYTE AND STORE IT ALSO.
-
- ╬OW HERE IS WHERE ╔ MADE THE ROUTINE "GENERIC", BY LOADING UP THE BYTE
- REPRESENTING THE OUTFILE AND OPENING AN OUTPUT CHANNEL TO IT. ┴T THIS
- POINT WE COULD CARE LESS IF THE OUTPUT DEVICE WAS THE SCREEN, PRINTER
- OR EVEN A DISK DRIVE (OF COURSE WE WOULD HAVE TO WRITE A DIFFERENT
- SUBROUTINE FOR OPENING AN OUTPUT FILE ON THE DISK DRIVE.)
-
- ╔N LINE 1490, WE ARE CHECKING FOR A SUCCESSFUL OPENING OF THE OUTPUT
- CHANNEL. ╔F THE CHANNEL IS NOT OPENNING, ╔ DO A ├╠╥├╚╬ (RESTORE DEFAULT
- ╔/╧) AND TRY AGAIN. ╫HY? ╔ HAD QUITE A BIT OF TROUBLE WITH THIS
- ROUTINE LOCKING UP WHEN SENDING A FILE TO MY PRINTER UNTIL ╔ PUT LINES
- 1490-1530 IN.
-
- ╔T SEEMS THAT MY PRINTER INTERFACE COULD NOT KEEP UP WITH THE RAPID
- OPENING AND CLOSING OF CHANNELS ON THE SERIAL BUS. ╔T WOULD MISS THE
- ╩╙╥ ├╚╦╧╒╘ IN LINE 1480 ONCE IN A WHILE. ╘HEN IN LINE 1550, ├╚╥╧╒╘
- ASSUMES THE CHANNEL IS PROPERLY OPENED AND WILL CRASH YOUR PROGRAM.
-
- ╘HIS ONE PLACE WHERE THE ╨╥╟ MISSES AN IMPORTANT POINT. ╔F YOU LOOK AT
- THE DESCRIPTION OF ├╚╥╧╒╘ ON PAGE 278-279 (OF THE ╨╥╟ FOR THE ├-64),
- THEY MISS THAT LITTLE DETAIL. ┴ND OF COURSE ╔ PUT IN A WAY TO BREAK
- OUT OF THIS LOOP IN CASE THE PRINTER REALY WASN'T THERE (LINES
- 1510-1530).
-
- ╬OW IS THE TIME TO CHECK THE STATUS BYTE WE STORED IN LINE 1460. ┴T
- THIS POINT WE ARE ONLY INTERESTED IN THE END OF FILE BIT AND USE THE
- ┴╬─ INSTRUCTION TO LOOK AT ONLY THAT BIT. ╔F IT IS NOT SET WE WILL
- CONTINUE ON AS WE HAVE NOT REACHED THE END OF THE FILE YET.
-
- ╔ DECIDED THAT IT WOULD BE NICE TO BE ABLE TO PAUSE THE OUTPUT IN
- ORDER TO TAKE TIME TO READ THE CONTENTS OF THE SCREEN BEFORE IT
- SCROLLS OUT OF SIGHT. ╧R A WAY TO ABORT OUT IF WE FOUND OUT THIS FILE
- WAS NOT THE ONE WE REALLY WANTED TO LOOK AT OR IF WE WANTED TO JUST
- SEE WHAT THE FILE CONTAINED.
-
- ╔ USED THE ╙╚╞╠┴╟ BYTE AT $028─ TO SEE IF THE ╙HIFT KEY IS PRESSED.
- ╘HIS BYTE IS UPDATED BY THE SYSTEMS NORMAL ╔╥╤ ROUTINES. ╔F THE SHIFT
- KEY ONLY IS DOWN THIS BYTE HOLDS A VALUE OF 1. ╔F THE ├╘╥╠ KEY IS
- DOWN, A 4 IS PLACED THERE. ┴ND IF THE LOGO KEY IS DOWN A 2 IS FOUND
- HERE. ╔F 2 OR MORE OF THESE KEYS ARE DEPRESSED THE SUM OF THE KEY
- VALUES IS FOUND THERE AT $028─.
-
- ┴S LONG AS THE SHIFT KEY IS DOWN (OR SHIFT LOCK), THE PROGRAM WILL GO
- INTO A LOOP RECHECKING THE ╙╚╞╠┴╟ BYTE. ╔F THE ╙HIFT AND ├ONTROL KEYS
- ARE DOWN (FOR A VALUE OF 6), THEN ABORT OUT JUST AS IF WE HIT THE END
- OF THE FILE.
-
- ╔N LINE 1650 WE JUMP BACK TO AND GET ANOTHER BYTE FOR OUTPUTING.
-
- ╬OW WHEN WE FINISH WE HAVE TO START CLOSING CHANNELS AND LOGICAL FILES
- IN LINE 1680. ╫E HAVE TO CLOSE THE READ FILE BEFORE THE DISK COMMAND
- CHANNEL. ╔N THIS PROGRAM, IT IS NOT AS IMPORTANT. ┬UT IF WE WERE
- WRITING TO A DISK FILE AND CLOSED THE COMMAND FILE, THAT WOULD CLOSE
- ┴╠╠ OPEN FILES IN THE DRIVE, EVEN IF WE DIDN'T WANT THEM CLOSED YET.
-
- ╬EXT WE GO AFTER THE PRINTER (OR SCREEN). ╧N SOME PRINTERS, INCOMING
- CHARACTERS ARE BUFFERED UNTIL THE BUFFER IS FULL OR A CARRIAGE RETURN
- IS RECEIVED. ╙O HERE WE SEND A CARRIAGE RETURN TO MAKE SURE THE BUFFER
- IS EMPTYED BEFORE WE CLOSE UP.
-
- ╬OW A MESSAGE IS PRINTED TO TELL US TO PRESS THE RETURN KEY BEFORE THE
- PROGRAM IS ALLOWED TO START OVER, WHICH CLEARS THE SCREEN. ╘HERE (IF
- YOU REMEMBER) HITTING THE RETURN WITH NO CHARACTER IN OUR FILENAME
- BUFFER WILL EXIT THIS PROGRAM.
-
- ┴ND THAT CONCLUDES OUR FILE READER FINALLY! ╬EXT MONTH??? ┘OU TELL ME.
- ╨╠┼┴╙┼!
-
- ╠YLE ╟IESE
- ┴╦┴ ╠┘╠┼╟
-
- [┼─. ╬╧╘┼: ╘HIS IS ╠┘╠┼╟'╙ FINAL ARTICLE IN HIS MULTI-PART SERIES ON A
- ╙EQUENTIAL ╞ILE ╥EADER. ╔NCLUDED IN THIS ISSUE OF THE *╙TAR┬OARD*
- ╩OURNAL IS THE FULL ╨┴╠ SOURCE CODE AND THE OBJECT CODE. ╠OAD ╧BJECT
- ├ODE,8,1 AND THEN ╙┘╙49152 TO USE. ╔F YOU HAVEN'T BEEN FOLLOWING ALONG
- FOR THE LAST FEW MONTHS, BE SURE TO GO BACK AND RETRIEVE HIS EARLIER
- ARTICLES. ╘HEY ARE EXCELLENT!
-