home *** CD-ROM | disk | FTP | other *** search
- ═ACHINE ╠ANGUAGE ╨ART ╓╔
-
- BY ╠YLE ╟IESE
-
- (╠┘╠┼╟ ON ─┼╠╨╚╔)
-
-
- ╠AST MONTH ╔ STARTED EXPLAINING MY ╙┼╤ FILE READER FOR YOU. ╔ GOT UP TO
- PUTTING THE OPENING MESSAGE ON THE SCREEN.
-
- ╬EXT WE MUST GET FROM YOU (THE USER) THE FILENAME OF THE FILE YOU WANT
- PRINTED OUT. ╫E HAVE TO START BY DECIDING WHERE WE ARE GOING TO STORE
- THE FILENAME. ╔N ┬┴╙╔├, ┬┴╙╔├ TAKES CARE OF THAT AUTOMATICALLY. ┬UT OF
- COURSE THAT CONVENIENCE IS OFFSET BY THE SLOW SPEED OF ┬┴╙╔├.
-
- ╔N THIS PROGRAM ╔ DECIDED TO USE THE CASSETTE BUFFER AT $033├. ┴GAIN ╔
- WILL USE THE INDEX AND INDEX+1 MEMORY LOCATIONS TO POINT TO THE
- FILENAME. ╔ WILL ALSO NEED ANOTHER VARIABLE FOR THE LENGTH OF THE
- FILENAME. ╞OR THAT ╔ USED $╞─ AND INITIALIZED IT BY PUTTING A ┌ERO BYTE
- IN IT.
-
- ╔ ISSUED A CALL TO THE ╦┼╥╬┴╠ ├╠╥├╚╬ ROUTINE NEXT, JUST TO MAKE SURE ╔
- WAS GETTING MY INPUT FROM THE KEYBOARD. ╬EXT CALL THE ╟┼╘╔╬ ROUTINE TO
- GET THE KEYPRESSES. ╔F NO KEYS ARE PRESSED IT WILL RETURN WITH A ZERO
- IN THE ┴CCUMLATOR, WHICH THE INSTRUCTION IN LINE 700 CHECKS FOR.
-
- ╬EXT WE NEED TO CHECK FOR THE DELETE KEY (WE DON'T MAKE TYPING MISTAKES
- DO WE?). ╔F WE HAVEN'T PUT ANY CHARACTERS IN THE FILENAME, IT WOULD BE
- HARD TO DELETE ONE. ╙O IN LINE 730 & 740 WE CHECK TO MAKE SURE WE HAVE
- CHARACTERS THERE. ╘HEN DELETE THE LAST CHARACTER PRINTED ON THE SCREEN
- AND ─┼├REMENT THE ╞╠┼╬ VARIABLE IN LINE 770.
-
- ╬EXT WE HAVE TO CHECK FOR A CARRIAGE RETURN. ╘HE CARRIAGE RETURN IS
- USED FOR TWO THINGS. ╔T WILL MARK THE END OF THE FILENAME AFTER WE HAVE
- TYPED IT IN. ┴LSO, WE USE IT TO EXIT THE ROUTINE. ┬Y CHECKING ╞╠┼╬
- AFTER GETTING A CARRIAGE RETURN (IN LINES 810 & 820), IF THERE ARE NO
- CHARACTERS YET, WE EXIT BY THE ╥╘╙ INSTRUCTION IN 830. ╧R ┬RANCH IF ╬OT
- ┼QUAL TO THE ─╧╨┼╬ ROUTINE.
-
- ╘HEN IF WE GET TO LINE 840, WE HAVE A CHARACTER WE WANT TO ADD TO THE
- FILENAME. ╫E NEED TO FIRST CHECK THE LENGTH OF THE FILENAME BEFORE WE
- ADD IT TO THE FILENAME. ╔F THE FILENAME IS TOO LONG WE REALLY DON'T
- WANT THE EXTRA CHARACTERS. ┴T THIS POINT, WE BRANCH BACK (LINE 860) TO
- MAKE YOU PRESS THE RETURN BUTTON BEFORE TRYING TO FIND THE FILE.
-
- ┬UT 18 CHARACTERS? ╞ILENAMES CAN BE ONLY 16 CHARACTERS LONG! ╘HAT'S
- RIGHT, BUT ADD THE PREFIX '0:' OR '1:' FOR THOSE OF US THAT HAVE DUAL
- DRIVES AND THE MAX LENGTH NOW BECOMES 18.
-
- ╔ DID NOT CHECK FOR VALID CHARACTERS BY LIMITING INPUT TO NUMBERS
- AND/OR LETTERS ONLY. ╔ ONLY CHECKED FOR THE DELETE KEY AND THE RETURN
- KEY. ╙O THAT IS SOMETHING TO WATCH OUT FOR OR A FEATURE FOR YOU TO ADD.
-
- ╬OW ECHO THE CHARACTER TO THE SCREEN FOR THE YOU TO SEE AND JUMP BACK
- FOR MORE CHARACTERS TO ╬╧╦┼┘, WHICH IS AT LINE 690.
-
- ┴FTER WE HAVE FINISHED TYPING THE FILENAME, WE NEED TO GO TO THE DISK
- DRIVE AND OPEN A READ CHANNEL FROM WHICH TO GET THE CHARACTERS. ┬UT
- SINCE WE ARE MAKING A ╙┼╤ FILE READER, ╔ ADDED ',╙,╥' TO THE END OF THE
- FILENAME AND ADJUSTED ╞╠┼╬ ACCORDINGLY.
-
- ╬OW, OPEN THE COMMAND CHANNEL TO THE DISK DRIVE SO WE CAN SEE ANY DISK
- ERRORS THAT MIGHT OCCUR. ╘HAT TAKES US DOWN TO LINE 1090. ╘HAT CHECKS
- FOR ERRORS OPENING THE ERROR CHANNEL.
-
- ╬OW WE CAN OPEN OUR READ CHANNEL. ╫E START BY SETTING THE FILENAME FOR
- THE SYSTEM WITH THE ╙┼╘╬┴═ ROUTINE. ╬EXT THE ╙┼╘╠╞╙ AND THE ╧╨┼╬
- ROUTINE. ╬OW WE JUST PERFORMED THE EQUIVELENT OF ╧╨┼╬8,8,8,"╞╬┴═,╙,╥".
- ┴GAIN GO BACK TO YOUR ╨ROGRAMMERS ╥EFERENCE ╟UIDE IF YOU HAVE PROBLEMS
- USING THE ╦┼╥╬┴╠ ROUTINES. ╦NOWING HOW TO READ THAT PORTION OF THE ╨╥╟
- IS ESSTENIAL TO PROGRAMMING IN ═╠ ON A ├OMMODORE COMPUTER.
-
- ╬OTE IN OPENING THE DISK CHANNEL, ╔ DIDN'T HAVE TO REMEMBER MANY
- NUMBERS? ┬Y USING THE NAMES (WHICH ARE DEFINED AT THE BEGINNING OF THE
- PROGRAM), ╔ DIDN'T HAVE TO REMEMBER WHERE ╔ PUT THE FILENAME OR WHERE ╔
- PUT THE FILE LENGTH NUMBER EITHER. ╙URE MAKES IT EASY TO WRITE A
- PROGRAM THAT WAY.
-
- ┴LSO, WHAT IF ╔ MADE A MISTAKE IN PLACING MY FILENAME BUFFER? ╔F YOU
- DIDN'T USE A NAME FOR IT, YOU WOULD HAVE TO GO THROUGH THE PROGRAM VERY
- CLOSELY CHANGING EVERY REFERENCE TO IT. ┬UT HERE ╔ ONLY HAVE TO CHANGE
- IT IN ONE LOCATION, IN THE BEGINNING. ╔T WOULD BE VERY EASY TO MISS ONE
- SPOT IN THE PROGRAM MAKING DEBUGGING EVEN HARDER!
-
- ╬OW THAT WE HAVE DONE THAT WE MUST CHECK TO MAKE SURE THAT THE FILE WAS
- THERE AND THE DISK DRIVE PROPERLY OPENNED A CHANNEL FOR US. ╫E DO THAT
- TWO WAYS. ╘HE FIRST ONE ACTUALLY CHECKS TO MAKE SURE THE COMPUTER WAS
- ABLE TO PROPERLY OPEN THE FILE TO THE DRIVE. ╫E DO THAT IN LINE 1190.
-
- ╬EXT WE WILL READ THE DISK'S ERROR CHANNEL VIA A CALL TO THE SUBROUTINE
- ├╦┼╥╥╧╥ (LINE 1210). ╘HAT TAKES US TO LINE 4000. ╫E OPEN AN INPUT
- CHANNEL TO FILE #$0╞ AND READ THE ERROR CHANNEL.
-
- ╔F THE FIRST TWO CHARACTERS OUT ARE $30 AND $30, THAT MEANS AN ERROR OF
- 00 OCCURED, WHICH OF COURSE MEANS NO ERROR. ╘HEN WE WOULD JUST TAKE ALL
- OF THE CHARACTERS OUT OF THE ERROR CHANNEL TO TIDY THINGS UP AND ╥E╘URN
- FROM ╙UBROUTINE.
-
- ╔F ANYTHING ELSE IS RETURNED IN THE FIRST TWO CHARACTERS, SOMETHING
- WENT WRONG. ╘HEN WE WANT TO READ AND PRINT OUT THE ERROR MESSAGE ON THE
- SCREEN. ╘HAT'S WHY WE STORE THE FIRST TWO CHARACTERS. ╫HILE PRINTING
- THE ERROR MESSAGE, WE CHECK FOR THE END OF THE MESSAGE BY CHECKING FOR
- A CARRIAGE RETURN.
-
- ╬OW THAT WE FOUND AN ERROR, WE CAN'T RETURN TO WHERE WE WERE IN THE
- PROGRAM, BECAUSE THAT WOULD LEAD US DOWN INTO THE FILE READ AND PRINT
- ROUTINES. ╫E WANT TO GO BACK TO THE BEGINNING OF THE PROGRAM.
-
- ╙O IN LINE 4140, WE START BY PRINTING THE DISK ERROR MESSAGE ON THE
- SCREEN TO THE USER. ╬OW WE HAVE THINK ABOUT HOW ═╠ HANDLES A
- SUBROUTINE. ╫HEN THE ╩╙╥ INSTRUCTION IS CALLED, THE RETURN ADDRESS HAS
- TO GO SOMEWHERE SO THAT WE CAN FIND OUR PLACE WHEN THE ╥╘╙ INSTRUCTION
- IS ISSUED. ╘HAT PLACE IS THE STACK. ╘HE 6510 PUSHES THE RETURN ADDRESS
- AS TWO BYTES ONTO THE STACK.
-
- ╙INCE ╔ HAVEN'T USED THE STACK FOR ANY OTHER STORAGE, IT SHOULD BE THE
- LAST TWO ENTRIES ON THE STACK. ╙O WE PULL TWO BYTES OFF OF THE STACK
- AND THROW THEM AWAY. ╬OW THIS IS AN ADVANCED TECHNIQUE, BUT IT IS
- IMPORTANT TO UNDERSTAND IT. ╔N THIS CASE IT CAN BE QUITE HANDY. ┬UT IF
- ╔ HAD USED THE STACK FOR OTHER STORAGE ╔ COULD NOT HAVE DONE THIS THAT
- EASILY.
-
- ┴T LINE 4220, WE START CLOSING THINGS UP BY FIRST RESTORING DEFAULT ╔/╧
- BY CALLING ├╠╥├╚╬. ┴ND THEN WE CLOSE THE READ CHANNEL AND THEN THE
- ERROR CHANNEL.
-
- ╬OW ╔ DECIDED TO PRINT A SHORT MESSAGE TO INDICATE ╔ WANTED THE USER TO
- PRESS THE RETURN KEY AND WAIT FOR HIM TO PRESS THE RETURN KEY. ╫HY? ╔T
- IS TO GIVE YOU A CHANCE TO READ THE ERROR MESSAGE BEFORE CLEARING THE
- SCREEN WHEN WE GO BACK TO THE BEGINNING OF THE PROGRAM.
-
- ╙O AT THIS POINT WE WOULD RESTART THE PROGRAM. ┬UT ╔ HAVE RAMBLED ON
- ENOUGH FOR ONE MONTH. ╬EXT MONTH WE WILL LOOK AT HOW ╔ HANDLED THE
- SCREEN OR PRINTER OPTION AND SOME OF THE PROBLEMS ENCOUNTERED DOING
- THAT.
-
- [┼─. ╬╧╘┼: ╘HE PARTIAL SOURCE CODE TO ACCOMPANY THIS ARTICLE IS THE
- NEXT FILE IN THIS MONTH'S EDITION OF THE *╙TAR┬OARD* ╩OURNAL.]
-