home *** CD-ROM | disk | FTP | other *** search
- ═ACHINE ╠ANGUAGE
- ╨ART ╔╔╔_ BY
- ╠YLE ╟IESE
-
- ─┼╠╨╚╔ ═AIL: ╠┘╠┼╟
-
-
- ╠AST MONTH, ╔ SHOWED YOU HOW TO PRINT TO THE SCREEN. ╘HIS MONTH WE
- WILL PRINT THE ALPHABET TO THE SCREEN. ┴ND NEXT MONTH WE WILL LOOK
- INTO DISK ╔/╧. ╬OW DON'T LET THIS SCARE YOU AWAY. ╔T IS REALLY NOT
- THAT HARD. ╔T DOES TAKE A FEW STEPS MORE THAN YOU WOULD NEED IN ┬┴╙╔├,
- BUT THE INCREASE IN SPEED IS WELL WORTH IT.
-
- ╘O START OFF HERE IS THIS MONTH'S PROGRAM. ┴GAIN ╔ AM USING THE SIMPLE
- ASSEMBLER PUT THE PROGRAM IN MEMORY.
-
- .┴ ├000 ╠─┴ #$01
- .┴ ├002 ╠─╪ #$04
- .┴ ├004 ╠─┘ #$07
- .┴ ├006 ╩╙╥ $╞╞┬┴
- .┴ ├009 ╠─┴ #$00
- .┴ ├00┬ ╩╙╥ $╞╞┬─
- .┴ ├00┼ ╩╙╥ $╞╞├0
- .┴ ├011 ╠─╪ #$01
- .┴ ├013 ╩╙╥ $╞╞├9
- .┴ ├016 ╠─┘ #$41
- .┴ ├018 ╘┘┴
- .┴ ├019 ╩╙╥ $╞╞─2
- .┴ ├01├ ╔╬┘
- .┴ ├01─ ├╨┘ #$5┬
- .┴ ├01╞ ┬╬┼ $├018
- .┴ ├021 ╠─┴ #$0─
- .┴ ├023 ╩╙╥ $╞╞─2
- .┴ ├026 ╩╙╥ $╞╞├├
- .┴ ├029 ╠─┴ #$01
-
- .┴ ├02┬ ╩╙╥ $╞╞├3
- .┴ ├02┼ ╥╘╙
- .┴ ├02╞ <├╥>
-
- ─EFINATELY, A LITTLE MORE TYPING BUT IT IS NOT THAT HARD TO FIGURE
- OUT. ╘HE KEY TO IT IS LEARNING TO READ THE ╦ERNAL INFORMATION IN THE
- ╨ROGRAMERS ╥EFERENCE ╟UIDE. ┴S ╔ HAVE BEEN DOING IN THE PREVIOUS
- ARTICLES, WILL BE USING THE 64'S ╨╥╟.
-
- ╙O WE WANT TO SEND SOME CHARACTERS (IN THIS CASE THE ALPHABET) TO THE
- PRINTER. ╚OW DO WE DO IT IN ┬┴╙╔├? ╫E MUST FIRST ISSUE AN ╧╨┼╬ COMMAND.
- ┴ND WE WILL DO THE SAME IN ═╠.
-
- ╔F YOU LOOK AT PAGE 289 IN THE ╨╥╟, YOU WILL FIND THAT THE ╦ERNAL HAS
- A ROUTINE CALLED ╧╨┼╬. ╚OW DO WE USE IT? ╠ETS TAKE A LOOK AT THE
- INFORMATION THERE.
-
- ╞IRST IT TELLS US WHAT THE ROUTINE DOES, OPEN A LOGICAL FILE. ╘HEN IT
- GIVES US THE ADDRESS WE NEED TO CALL THE ROUTINE. ╚OW WE COMMUNICATE
- WITH IT IS NEXT; BUT IT SAYS NONE. ╚OW DO WE TELL IT THE SECONDARY
- ADDRESS, LOGICAL FILE NUMBER, OR EVEN THE DEVICE NUMBER?
-
- ╘HAT IS WHAT THE NEXT ENTRY CARES FOR. ╫HAT ROUTINES NEED TO BE CALLED
- BEFORE THIS ONE CAN BE CALLED, ╨REPARATORY ROUTINES. ┴ND THAT IS WHAT
- ╔ DID IN MY LITTLE PROGRAM ABOVE.
-
- ╙O IT SAYS WE NEED TO CALL ╙┼╘╠╞╙ FIRST. ╙O LET'S GO THERE AND TAKE A
- LOOK AT IT. ╔T TELLS US TO SET UP A LOGICAL FILE. ╔TS ADDRESS IS
- $╞╞┬┴ AND WE USE ALL THREE REGISTERS TO COMMUNICATE WITH IT. ╬O
- PREPARATORY ROUTINES ARE NEEDED. ╔T RETURNS NO ERROR CODES, NEEDS ROOM
- FOR 2 ENTRYS IN THE STACK, AND RETURNS WITH THE ┴, ╪, AND ┘ REGISTERS
- INTACT.
-
- ╔N THE DESCRIPTION, WE FIND OUT THAT THE ┴CCUMLATOR IS LOADED WITH THE
- LOGICAL FILE NUMBER($01). ╘HE ╪ REGISTER IS LOADED WITH THE DEVICE
- NUMBER($04) AND THE ┘ REGISTER IS LOADED WITH THE SECONDARY
- ADDRESS($07). ┬E SURE TO NOTE THE ┘ REGISTER IS LOADED WITH $╞╞(255)
- IF YOU DON'T WANT TO SEND A SECONDARY ADDRESS. ┴ND THEN WE CALL THE
- ROUTINE WITH THE ╩╙╥ $╞╞┬┴ AT $├006.
-
- ╬OW WE NEED TO CALL THE SECONDARY PREPARATORY ROUTINE-╙┼╘╬┴═. ╙┼╘╬┴═
- IS USED TO SET UP THE FILE NAME FOR THE LOGICAL FILE. ╫HEN DOING ╔/╧
- TO A CASSETTE OR DISK DRIVE, THIS IS IMPORTANT. ┬UT TO A PRINTER??
- ╫ELL WE JUST SET THE LENGTH OF THE FILENAME TO ZERO. ┴S YOU READ THE
- DESCRIPTION OF THIS ROUTINE, YOU WILL FIND THAT WE DO THAT BY PUTTING
- A ZERO IN THE ACCUMLATOR. ╔F WE DID HAVE A FILENAME, THE ADDRESS OF IT
- WOULD GO INTO THE ╪(LOW ORDER BYTE) AND THE ┘(HIGH ORDER BYTE)
- REGISTERS. ┴ND AT $├00┬ WE ╩╙╥ $╞╞┬─ AND COMPLETE THAT PREPARATORY
- ROUTINE.
-
- ╬OW WE CAN OPEN OUT FILE BY A ╩╙╥ $╞╞├0. ╬OTE THAT ALL REGISTERS ARE
- AFFECTED. ╔F YOU HAD SOME INFORMATION YOU WANTED TO SAVE YOU WOULD
- HAVE TO COPY IT INTO A MEMORY LOCATION PRIOR TO CALLING THIS ROUTINE
- AND RESTORE IT AFTERWARDS.
-
- ╔N MY EXAMPLE, ╔ DID NOT CHECK THE ERROR STATUS AFTER THE OPEN. ┬UT IN
- A BIGGER PROGRAM OR IF THE LOGICAL FILE IS A DISK OR CASSETTE FILE,
- YOU WOULD AT THIS POINT CHECK FOR ERRORS IN OPENING THE FILE. ┘OU
- DO THIS BY THE ╥┼┴─╙╘ ROUTINE. ╔F WE DIDN'T AND WE FORGOT TO HOOK UP
- THE PRINTER TO THE COMPUTER, THE ALPHABET WOULD BE SENT TO THE SCREEN.
-
- ╬OW AGAIN LET'S GO BACK TO ┬┴╙╔├ FOR A MOMENT. ╫E HAVE OPENED OUR
- LOGICAL FILE TO THE PRINTER. ╔N ┬┴╙╔├ HOW DO WE DIRECT OUR OUTPUT TO
- THE PRINTER? ╫ITH THE ├═─#1 COMMAND. ╔N ═╠ YOU HAVE TO OPEN AN OUTPUT
- CHANNEL TO THE DEVICE. ╘HE ROUTINE FOR THIS IS ├╚╦╧╒╘.
-
- ╘HE DESCRIPTION FOR ├╚╦╧╒╘ SAYS THAT WE HAVE TO USE THE ╧╨┼╬ ROUTINE
- FIRST, WHICH WE HAVE. ╘HE ╪ REGISTER IS THE COMMUNICATION REGISTER. ╫E
- PUT THE NUMBER OF THE LOGICAL FILE IN IT($01). ═AKE SURE YOU USE THE
- LOGICAL FILE AND NOT THE DEVICE NUMBER. ┴ND OF COURSE NOTE THAT THE
- ┴CCUMLATOR AND ╪ REGISTER ARE CHANGED DURING THE ROUTINE.
-
- ╬OW WE HAVE THE LOGICAL FILE OPEN AND THE OUTPUT BEING DIRECTED TO THE
- PRINTER. ╚OW DO WE SEND IT? ╘IME FOR THE GOOD OLD ├╚╥╧╒╘ ROUTINE. ┴ND
- IF WE READ THE DESCRIPTION OF IT, IT TELLS US THAT WE MUST USE THE
- ├╚╦╧╒╘ AND ╧╨┼╬ ROUTINES FIRST IF WE ARE SENDING TO SOMETHING OTHER
- THAN TO THE SCREEN, WHICH WE HAVE ALREADY DONE.
-
- ╫E LOAD THE ╨┼╘╙├╔╔ CODE FOR THE LETTER "┴" INTO THE ┴CCUMLATOR AND
- THEN CALL THE ├╚╥╧╒╘ ROUTINE AND THEN INCREASE THE ACCUMLATOR AND
- CHECK IF WE HAVE PRINTED ALL OF THE ALPHABET. ┴ND BRANCH BACK TO PRINT
- IF NOT, RIGHT? ╬╧! ┴BSOLUTELY NOT!
-
- ╘HIS WAS THE FIRST BIG MISTAKE ╔ MADE WHEN ╔ STARTED TO PROGRAM IN ═╠.
- ╔ DID NOT READ OR COMPREHEND THE ENTRY '╥EGISTERS AFFECTED: .┴' IN THE
- DESCRIPTION OF ├╚╥╧╒╘. ╘HAT MEANS THE ┴CCUMLATOR IS ├╚┴╬╟┼─ WHILE
- EXECUTING THIS ROUTINE. ╫E HAVE TO HAVE SOME OTHER MEANS OF KEEPING
- TRACK OF THE DESIRED VALUE. ╔ DECIDED TO USE THE ┘ REGISTER IN THIS
- PROGRAM. ╙O WE START OUT BY PUTTING THE VALUE OF $41(THE LETTER A) IN
- THE ┘ REGISTER AND COPYING THAT INTO THE ┴CCUMLATOR.
-
- ╬OW WE CALL THE ├╚╥╧╒╘($╞╞─2) ROUTINE. ╒PON EXITING WE ╔╬┘(REMEMBER IT
- IS NOT AFFECTED BY ├╚╥╧╒╘) AND CHECK IF IT IS ┌+1 OR $5┬. ╔F IT IS NOT
- WE BRANCH BACK TO THE ╘┘┴ INSTRUCTION AND RELOAD THE ┴CCUMLATOR AND
- PRINT IT AGAIN.
-
- ╬OW AFTER 26 TIMES THROUGH THE LOOP, WE HAVE SENT THE ENTIRE ALPHABET
- TO THE PRINTER. ╫E FALL THROUGH THE ┬╬┼ INSTRUCTION AT $├021. ╫E LOAD
- THE VALUE OF $0─ (A PLAIN OLD CARRIAGE RETURN) AND SEND IT OUT TO THE
- PRINTER. ╫HY?
-
- ═OST (BUT NOT ALL) PRINTERS BUFFER INCOMING CHARACTERS UNTIL A
- CARRIAGE RETURN OR 80 CHARACTERS ARE RECEIVED BEFORE PRINTING. ╙O IT
- IS A GOOD HABIT TO GET INTO, THAT OF SENDING A CARRIAGE RETURN JUST
- BEFORE CLOSING THE PRINTER'S OUTPUT FILE.
-
- ╬OW WE MUST TIDY THINGS UP A BIT BY RESTORING THE SCREEN AS THE OUTPUT
- DEVICE. ╘HAT ROUTINE IS CALLED ├╠╥├╚╬ AND WE CALL IT WITH A ╩╙╥ $╞╞├├.
- ╬OW WE MUST CLOSE THE LOGICAL FILE #1. ╫E DO THAT BY LOADING THE
- ┴CCUMLATOR WITH THE LOGICAL FILE NUMBER($01) AND THEN ╩╙╥
- $╞╞├3(├╠╧╙┼).
-
- ┴ND WE RETURN TO WHERE WE WERE WHEN WE CALLED THIS SHORT ROUTINE WITH
- THE ╥╘╙ INSTRUCTION.
-
- ╧NE THING ╔ CAN TELL YOU FOR SURE---THIS EXPLANATION TAKES A LOT
- LONGER TO READ THAN IT TAKES TO EXECUTE!
- ╠YLE ╟IESE (─ELPHI ═AIL: ╠┘╠┼╟)
-