╘O GET THE MOST FROM YOUR ═╙─, ─╧╙ PROGRAMMING IS A USEFUL TECHNIQUE TO LEARN. ╔T IS SAID TO BE AN UNCOMMON ART AS INDICATED BY THE RELUCTANCE TO MODIFY ─╧╙ ROUTINES. ─╧╙ PROGRAMMING IS THE KEY TO HIGH SPEED DISK COPY PROGRAMS, FAST COMMICATIONS ROUTINES, AND OF COURSE MOST DISK PROTECTION SCHEMES. ╚ERE'S A BRIEF INTRODUCTION TO THE TOPIC BASED ON FINDINGS WITH THE MEMORY MAP.
─╧╙ PROGAMMING IS AN ADPATED FORM OF MACHINE LANGUAGE PROGRAMMING. ╒SUALLY THE PROGRAMS BEGIN AS A ├-64 MACHINE LANGUAGE ROUTINE LOADED FROM DISK. ┴ LOADER THEN TRANSFERS THE ROUTINE TO ─╧╙ USING THE ═-╥ COMMAND. ╘HE ROUTINE MAY BE ANYWHERE IN ╥┴═. ╧N THE 1541, THIS USUALLY MEANS ONE OF THE FIVE QUARTER ╦ BUFFERS AT. ╧N THE ═╙─, THERE ARE MORE OPTIONS SINCE THERE ARE MORE BUFFERS, AND SOME OPEN ╥┴═ IN ADDITION TO THE EXTRA ╥┴═.
─╧╙ CONSISTS OF A MASSIVE MACHINE LANGUAGE PROGRAM. ┴S ON THE 1541, IT IS ACTUALLY TWO INDEPENDENT PROGRAMS THAT ARE SWITCHED BY A TIMER. ╧NE OF THEM, THE INTERFACE PROCESSOR (╔╨) OCCUPIES ABOUT TWO THIRDS OF ─╧╙. ╔T CONTROLLS COMMUNICATIONS WITH THE ├-64 INCLUDING THE ╔┼┼┼ AND SERIAL INTERFACES, AND INTERPRETS COMMANDS RECEIVED. ╫HEN NOT IN USE, THE ╔╨ ROUTINE EXECUTES THE ╔─╠┼ LOOP WATCHING PRIMARILY FOR SIGNALS FROM THE COMPUTER. ╘HE OTHER ROUTINE, THE F DISK CONTROLLER (╞─├) OPERATES THE HARDWARE INCLUDING THE MOTOR, THE ╠┼─'S, AND THE READ WRITE HEADS. ╔T HANDLES FORMATTING AND ALL READ/WRITE OPERATIONS. ╫HEN NOT IN USE THE ╞─├ EXECUTES THE ╠├├ LOOP LOOKING FOR A JOB CODE FROM THE ╠├.
╘HE TWO ROUTINES EXCHANGE INFORMATION THROUGH A SERIES OF ╥┴═ LOCATIONS. ╧NE OF THE EASIEST METHODS TO MODIFY DISK OPERATION IS TO POKE NEW VALUES INTO THESE ╥┴═ LOCATIONS. ╘HEY ARE FULLY DESCRIBED IN THE MEMORY MAP.
╘O EXECUTE A ─╧╙ ROUTINE FOR THE ╔╨ IS EASY. ╔T CAN BE DONE EITHER WITH AN ═-┼ COMMAND OR BY VECTORING TO THE ROUTINE FROM ONE OF THE ╥┴═ VECTOR LOCATIONS. ═╙─ RECOMMENDS ╙┼╥╓┼├ THE VECTOR TO THE SERIAL COMMUNICATIONS ROUTINES AS ONE THAT CAN EASILY BE REDIRECTED. ╓┴╘╬╔ IS A SIMILAR VECTOR TO THE ╔┼┼┼ ROUTINES.
┼XECUTING AN ╞─├ ROUTINE IS A LITTLE MORE COMPLICATED. ╘HE CODE MUST BEGIN AT THE START OF ONE OF THE BUFFERS. ╔T IS EXECUTED BY POKING A TRACK AND SECTOR NUMBER CORRESPONDING TO THE BUFFER IN THE ╚┼┴─┼╥ TABLE, AND A JOB CODE INTO THE JOB QUE. ╔T CAN OF COURSE JUMP TO ANY LOCATIONS IN MEMORY.
╞OR THOSE WHO WOULD LIKE TO LEARN ─╧╙ PROGRAMMING, THE BEST BOOK AVAILABLE IS "╔NSIDE ├OMMODORE ─╧╙" BY ╔MMERS AND ╬EUFIELD. ╔T INCLUDES A LISTING OF 1541 SUBROUTINES TOGETHER WITH A BRIEF EXPLANATION OF HOW THEY WORK. ╔T ALSO CONTAINS A MORE DETAILED DISCUSSION OF HOW ─╧╙ OPERATES. ╘HE ═╙─ SEQUENCES ARE SIMILAR, BUT HAVE DIFFERENT ADDRESSES.
┴NOTHER BOOK THAT'S HELPFUL IS "┴NATOMY OF THE 1541" FROM ┴BACUS, NOW AVAILABLE AS A SECOND EDITION. ╔T CONTAINS A COMPLETE DISASSEMBLY OF 1541 ─╧╙ WITH LESS EXPLANATION. ╔T CONTAINS LESS INFORMATION THE WORKINGS OF ─╧╙, BUT MORE ON THE BASICS OF DISK DRIVE COMMANDS.
╞OR ┬┴╙╔├ PROGRAMMERS WHO WANT TO LEARN MACHINE LANGUAGE PROGRAMMING, THERE ARE A NUMBER OF INTRODUCTORY BOOKS THAT WILL BE HELPFUL. ├OMPUTE'S ╞IRST ┬OOK OF ═ACHINE ╠ANGUAGE IS ONE OF THE BETTER ONES. ╘HE ┴BACUS ═ACHINE ╠ANGUAGE ┬OOK IS ALSO HELPFUL. ╨ROGRAMMING ╘HE 6502 FROM ╙YBEX IS MORE ADVANCED, BUT CONTAINS A CLEARER EXPLANATION OF THE FINER POINTS.
┴ MACHINE LANGUAGE MONITOR SUCH AS ╙UPERMON IS ONE OF THE BASIC TOOLS TO BEGIN WITH. ┴N ASSEMBLER IS RECOMMENDED FOR MOST MACHINE LANGUAGE PROGRAMMING. ╔T PERMITS PROGRAMMING IN ASSEMBLY LANGUAGE, WHICH IS MORE USER FRIENDLY. ╘HE BEST ASSEMBLERS HAVE FEATURES THAT MAKE THEM VERY EASY TO USE.
╞OR THE BEGINNERS, THE ├OMMODORE ┴SSEMBLER IS THE PLACE TO BEGIN. ╘WO OF THE BETTER ASSEMBLERS ARE ╨┴╠ 64 AND THE ═┴┼ ASSEMBLER. ╧NCE YOU LEARN THE FUNDAMENTAL COMMANDS, THE BEST WAY TO LEARN MACHINE LANGUAGE PROGRAMMING IS BY STUDYING PROGRAMS. ─╧╙ IS A GOOD PROGRAM TO STUDY SINCE IT IS WRITTEN BY PROFESSIONALS USUALLY FOR FAST EXECUTION AND TO CONSERVE MEMORY. ┴NOTHER USEFUL TOOL FOR MACHINE LANGUAGE PROGRAMMING IS ├OMPUTE'S "═APPING THE 64", WHICH PROVIDES A DETAILED EXPLANATION OF THE WORKING OF THE 64. ═OST MACHINE LANGUAGE PROGRAMS MAKE EXTENSIVE USE OF THE BUILT-IN MACHINE LANGUAGE ROUTINES. ╔N DISK DRIVES THEY ARE LOCATED IN ─╧╙; IN THE ├-64 THEY ARE PRIMARILY THE KERNAL ROUTINES. ╫ITH THESE TOOLS, AND A REASONABLE OBJECTIVE, MANY THINGS ARE POSSIBLE.
╘RANSACTOR'S "├OMMODORE ╔NNERSPACE ┴NTHOLOGY" IS ANOTHER USEFUL BOOK. ╥ATHER THAN A TEXT, IT IS A COLLECTION OF TABLES COVERING MANY SUBJECTS. ╔NCLUDED ARE THE EXTRA OP CODES, MEMORY MAPS OF MOST ├OMMODORE EQUIPMENT, AND MUCH USEFUL INFORMATION. ╔T IS A VERY HANDY REFERENCE FOR THE PROGRAMMER.
┴NOTHER USEFUL REFERENCE IS THE "├-64 ╨ROGRAMMER'S ╥EFERENCE ═ANUAL." ╔T INCLUDES SOME INFORMATION ON THE KERNAL ROUTINES AND ON MACHINE LANGUAGE PROGRAMMING. ╚OWEVER, IT IS NOT PARTICULARLY GOOD AS AN INTRODUCTION TO MACHINE LANGUAGE PROGRAMMING.
┴NOTHER TOOL THAT MAY COME IN HANDY IS A DISSASSEMBLER. ╧NE OF THESE ╘.╙.╟. FROM ├╙═ SOFTWARE DOES A VERY GOOD JOB, BUT OTHERS ARE AVAILABLE IN THE PUBLIC DOMAIN.