home *** CD-ROM | disk | FTP | other *** search
- .BYT $26,$03,$26,$87,$03,$2F,$FF
-
- PTN10 =*
- .BYT $07,$1A,$4F,$47,$FF
-
- PTN0E =*
- .BYT $03,$1F,$03,$1F,$03,$24,$03,$26
- .BYT $07,$13,$47,$FF
-
- PTN30 =*
- .BYT $BF,$0F,$32,$0F,$32,$8F,$90,$30
- .BYT $3F,$32,$13,$32,$03,$32,$03,$35
- .BYT $03,$37,$3F,$37,$0F,$37,$8F,$90
- .BYT $30,$3F,$32,$13,$32,$03,$2D,$03
- .BYT $30,$03,$32,$FF
-
- PTN31 =*
- .BYT $0F,$32
- .BYT $AF,$90,$35,$0F,$37,$A7,$99,$37
- .BYT $07,$35,$3F,$32,$13,$32,$03,$32
- .BYT $A3,$E8,$35,$03,$37,$0F,$35,$AF
- .BYT $90,$37,$0F,$37,$A7,$99,$37,$07
- .BYT $35,$3F,$32,$13,$32,$03,$2D,$A3
- .BYT $E8,$30,$03,$32,$FF
-
- PTN32 =*
- .BYT $07,$32,$03
- .BYT $39,$13,$3C,$A7,$9A,$37,$A7,$9B
- .BYT $38,$07,$37,$03,$35,$03,$32,$03
- .BYT $39,$1B,$3C,$A7,$9A,$37,$A7,$9B
- .BYT $38,$07,$37,$03,$35,$03,$32,$03
- .BYT $39,$03,$3C,$03,$3E,$03,$3C,$07
- .BYT $3E,$03,$3C,$03,$39,$A7,$9A,$37
- .BYT $A7,$9B,$38,$07,$37,$03,$35,$03
- .BYT $32,$AF,$90,$3C,$1F,$3E,$43,$03
- .BYT $3E,$03,$3C,$03,$3E,$FF
-
- PTN33 =*
- .BYT $03,$3E
- .BYT $03,$3E,$A3,$E8,$3C,$03,$3E,$03
- .BYT $3E,$03,$3E,$A3,$E8,$3C,$03,$3E
- .BYT $03,$3E,$03,$3E,$A3,$E8,$3C,$03
- .BYT $3E,$03,$3E,$03,$3E,$A3,$E8,$3C
- .BYT $03,$3E,$AF,$91,$43,$1F,$41,$43
- .BYT $03,$3E,$03,$41,$03,$43,$03,$43
- .BYT $03,$43,$A3,$E8,$41,$03,$43,$03
- .BYT $43,$03,$43,$A3,$E8,$41,$03,$43
- .BYT $03,$45,$03,$48,$A3,$FD,$45,$03
- .BYT $44,$01,$43,$01,$41,$03,$3E,$03
- .BYT $3C,$03,$3E,$2F,$3E,$BF,$98,$3E
- .BYT $43,$03,$3E,$03,$3C,$03,$3E,$FF
-
- PTN34 =*
- .BYT $03,$4A,$03,$4A,$A3,$F8,$48,$03
- .BYT $4A,$03,$4A,$03,$4A,$A3,$F8,$48
- .BYT $03,$4A,$FF
-
- PTN35 =*
- .BYT $01,$51,$01,$54,$01
- .BYT $51,$01,$54,$01,$51,$01,$54,$01
- .BYT $51,$01,$54,$01,$51,$01,$54,$01
- .BYT $51,$01,$54,$01,$51,$01,$54,$01
- .BYT $51,$01,$54,$FF
-
- PTN36 =*
- .BYT $01,$50,$01,$4F
- .BYT $01,$4D,$01,$4A,$01,$4F,$01,$4D
- .BYT $01,$4A,$01,$48,$01,$4A,$01,$48
- .BYT $01,$45,$01,$43,$01,$44,$01,$43
- .BYT $01,$41,$01,$3E,$01,$43,$01,$41
- .BYT $01,$3E,$01,$3C,$01,$3E,$01,$3C
- .BYT $01,$39,$01,$37,$01,$38,$01,$37
- .BYT $01,$35,$01,$32,$01,$37,$01,$35
- .BYT $01,$32,$01,$30,$FF
-
- PTN37 =*
- .BYT $5F,$5F,$5F
- .BYT $47,$83,$0E,$32,$07,$32,$07,$2F
- .BYT $03,$2F,$07,$2F,$97,$0B,$3A,$5F
- .BYT $5F,$47,$8B,$0E,$32,$03,$32,$03
- .BYT $2F,$03,$2F,$47,$97,$0B,$3A,$5F
- .BYT $5F,$47,$83,$0E,$2F,$0B,$2F,$03
- .BYT $2F,$03,$2F,$87,$0B,$30,$17,$3A
- .BYT $5F,$8B,$0E,$32,$0B,$32,$0B,$2F
- .BYT $0B,$2F,$07,$2C,$07,$2C,$FF
-
- PTN38 =*
- .BYT $87
- .BYT $0B,$34,$17,$3A,$5F,$5F,$84,$0E
- .BYT $32,$04,$32,$05,$32,$04,$2F,$04
- .BYT $2F,$05,$2F,$47,$97,$0B,$3A,$5F
- .BYT $5F,$84,$0E,$32,$04,$32,$05,$32
- .BYT $04,$2F,$04,$2F,$05,$2F,$FF
-
- PTN2F =*
- .BYT $03,$1A,$03,$1A,$03
- .BYT $24,$03,$26,$03,$1A,$03,$1A,$03
- .BYT $18,$03,$19,$03,$1A,$03,$1A,$03
- .BYT $24,$03,$26,$03,$1A,$03,$1A,$03
- .BYT $18,$03,$19,$03,$18,$03,$18,$03
- .BYT $22,$03,$24,$03,$18,$03,$18,$03
- .BYT $16,$03,$17,$03,$18,$03,$18,$03
- .BYT $22,$03,$24,$03,$18,$03,$18,$03
- .BYT $16,$03,$17,$03,$13,$03,$13,$03
- .BYT $1D,$03,$1F,$03,$13,$03,$13,$03
- .BYT $1D,$03,$1E,$03,$13,$03,$13,$03
- .BYT $1D,$03,$1F,$03,$13,$03,$13,$03
- .BYT $1D,$03,$1E,$03,$1A,$03,$1A,$03
- .BYT $24,$03,$26,$03,$1A,$03,$1A,$03
- .BYT $18,$03,$19,$03,$1A,$03,$1A,$03
- .BYT $24,$03,$26,$03,$1A,$03,$1A,$03
- .BYT $18,$03,$19,$FF
-
-
- ;====================================
- ;INSTRUMENTS
- ;====================================
-
- INSTR =*
- .BYT $80,$09,$41,$48,$60,$03,$81,$00
- .BYT $00,$08,$81,$02,$08,$00,$00,$01
- .BYT $A0,$02,$41,$09,$80,$00,$00,$00
- .BYT $00,$02,$81,$09,$09,$00,$00,$05
- .BYT $00,$08,$41,$08,$50,$02,$00,$04
- .BYT $00,$01,$41,$3F,$C0,$02,$00,$00
- .BYT $00,$08,$41,$04,$40,$02,$00,$00
- .BYT $00,$08,$41,$09,$00,$02,$00,$00
- .BYT $00,$09,$41,$09,$70,$02,$5F,$04
- .BYT $00,$09,$41,$4A,$69,$02,$81,$00
- .BYT $00,$09,$41,$40,$6F,$00,$81,$02
- .BYT $80,$07,$81,$0A,$0A,$00,$00,$01
- .BYT $00,$09,$41,$3F,$FF,$01,$E7,$02
- .BYT $00,$08,$41,$90,$F0,$01,$E8,$02
- .BYT $00,$08,$41,$06,$0A,$00,$00,$01
- .BYT $00,$09,$41,$19,$70,$02,$A8,$00
- .BYT $00,$02,$41,$09,$90,$02,$00,$00
- .BYT $00,$00,$11,$0A,$FA,$00,$00,$05
- .BYT $00,$08,$41,$37,$40,$02,$00,$00
- .BYT $00,$08,$11,$07,$70,$02,$00,$00
-
- .END
-
- =============================================================================
- ┌╨═3 AND ┌├├╨ ┼NHANCEMENTS FOR ├╨/═ ╨LUS FROM ╙IMEON ├RAN
- BY ╥ANDY ╫INCHESTER (RANDY@MIT.EDU)
-
- ╧PERATING ╙YSTEM ├OMPONENTS
-
- ╘HE ├╨/═ ╨LUS OPERATING SYSTEM CONSISTS OF THREE MODULES. ╘HE ├├╨ (├ONSOLE
- ├OMMAND ╨ROCESSOR), IS THE PART OF ├╨/═ THAT YOU SEE WHEN YOU FIRST BOOT THE
- SYSTEM. ╘HE ├├╨ PRINTS THE ┴> DISK PROMPT, ACCEPTS USER INPUT, AND LOADS
- COMMANDS FROM DISK.
-
- ╘HE ┬─╧╙ (┬ASIC ─ISK ╧PERATING ╙YSTEM) HANDLES THE ├╨/═ FUNCTIONS OF DISK,
- CONSOLE, AND PRINTER INPUT/OUTPUT, AND THE TASKS OF FILE MANAGEMENT.
-
- ╘HE ┬╔╧╙ (┬ASIC ╔NPUT ╧UTPUT ╙YSTEM) DOES THE REAL INPUT/OUTPUT WORK FOR THE
- ┬─╧╙. ╘HE ┬╔╧╙ CONTAINS THE CODE CUSTOMIZED FOR THE ├╨/═ HARDWARE THAT YOU'RE
- USING. ╧N THE ├128, THE ┬╔╧╙ CONTAINS THE ROUTINES FOR DRIVING THE 40 AND 80
- COLUMN SCREENS, USING THE ╥┼╒ AS A ╥┴═ DRIVE, AND READING/WRITING SEVERAL
- DIFFERENT DISK FORMATS ON 1571 AND 1581 DRIVES. ╘HE ┬╔╧╙ CAN BE THOUGHT OF AS
- A COLLECTION OF DEVICE DRIVERS THAT ARE SPECIFIC TO YOUR COMPUTER.
-
-
- ╫HAT'S ╬EW - ┬╔╧╙-╥6
-
- ┬╔╧╙-╥6 (├128 ┬╔╧╙ MODIFIED BY ╥ANDY ╫INCHESTER AND OTHERS) IS THE LATEST OF
- THE MODIFIED VERSIONS OF THE ├128 ├╨/═ ┬╔╧╙. ═OST OF THE CHANGES TO THE ┬╔╧╙
- RESULT IN FASTER PROCESSING SPEED. ╞OR EXAMPLE, ALL THE CODE FOR DRIVING A 40
- COLUMN SCREEN HAS BEEN REMOVED. ┴LMOST EVERYONE USING ├╨/═ IS GOING TO BE
- USING IT IN 80 COLUMNS ANYWAY. ├UTTING THIS CODE TAKES A BIG LOAD OFF THE
- SYSTEM AND INCREASES OVERALL SPEED BY ABOUT 15%. ╙IMILARLY, THE INTERRUPT
- DRIVEN ╥╙232 HAS BEEN SET FROM 300 TO 75 BAUD. ╘HE HIGHER THE BAUD RATE, THE
- MORE PROCESSOR TIME IS REQUIRED TO SERVICE ╥╙232. ╙INCE THE ╥╙232 CODE IS
- ALWAYS RUNNING, DECREASING THE BAUD RATE FREES UP CYCLES THAT THE PROCESSOR
- NEEDS TO SERVICE ╥╙232. ╘HIS DOESN'T AFFECT THE OPERATION OF TERMINAL PROGRAMS
- WHICH EXPLICITLY SET THE BAUD RATE WHEN THEY START UP.
-
- ╧THER FEATURES OF ┬╔╧╙-╥6 INCLUDE A SCREEN DUMP FUNCTION, COMMENTED SOURCE TO
- ASSIST THE PROGRAMMER IN PRODUCING CUSTOMIZED SYSTEMS, AND SUPPORT FOR
- ADDITIONAL DISK FORMATS. ╙OME OF THE NEW DISK FORMATS INCLUDE ├OMMODORE'S
- STANDARD 1581 ├╨/═ FORMAT, ═┴╪╔ 71 (398╦ ON 5.25" DISKS), AND ╟╨ 1581 (796╦ ON
- 3.5" DISKS).
-
- ├128 ├╨/═ PROGRAMMERS WHO WANT TO ADD OR CHANGE OPERATING SYSTEM FEATURES
- SHOULD TRY TO MAKE CHANGES TO THE ┬╔╧╙. ╞OR ONE THING, ┬╔╧╙ SOURCE CODE IS
- AVAILABLE, BUT NOT AVAILABLE FOR THE ┬─╧╙ OR ├├╨. (╙OURCE CODE IS NOT
- AVAILABLE FOR THE ┬─╧╙ AND ├├╨ REPLACEMENTS MENTIONED IN THIS ARTICLE EITHER).
- ┴NOTHER REASON IS THAT THE ┬─╧╙ AND ├├╨ ARE INTENDED TO BE "INVARIABLE"
- OPERATING SYSTEM COMPONENTS - THAT IS, THEY ARE IDENTICAL FOR DIFFERENT
- COMPUTERS THAT RUN ├╨/═ ╨LUS. ┴ STUDY OF THE ┬╔╧╙ SOURCE CODE WILL REVEAL
- SEGMENTS OF CODE THAT CAN BE REMOVED IF THEY AREN'T NEEDED, AND WILL PROVIDE
- HINTS AS TO NEW FEATURES THAT CAN BE ADDED.
-
- ╘HE DISTRIBUTION PACKAGE, ┬╔╧╙-╥6.╠┬╥ INCLUDES DOCUMENTATION, SOURCE CODE,
- UTILITIES, AND SUPPORT FILES. ┬╔╧╙-╥6.╠┬╥ ALSO CONTAINS THE LATEST VERSION OF
- ┌╨═3. [┼D. ╬OTE: ╘HE FILES MENTIONED IN THIS ARTICLE CAN BE FOUND VIA
- ANONYMOUS ╞╘╨ OR VIA THE MAILSERVER THROUGH THE "PSEND" COMMAND.]
-
-
- ┌╨═3 ╞EATURES
-
- ┌╨═3 IS A REPLACEMENT ┬─╧╙ BY ╙IMEON ├RAN. ╙INCE THE ┬─╧╙ IS SUPPOSED TO BE
- "INVARIABLE," WHY WOULD ANYONE WANT TO REPLACE IT? ╘HE ANSWERS TO THAT ARE
- PRETTY TYPICAL - BUG FIXES, SPEED ENHANCEMENTS, AND NEW FEATURES! ┌╨═3
- INTERACTS WITH THE ┬╔╧╙ AND ├├╨ IN MOST OF THE SAME WAYS AS THE STANDARD
- ─IGITAL ╥ESEARCH ┬─╧╙, AND FOR THE MOST PART APPEARS TO BE A CLONE OF THE
- STANDARD ┬─╧╙. ╘HE STANDARD ┬─╧╙ WAS CODED IN 8080 ASSEMBLY TO MAKE IT
- COMPATIBLE WITH MACHINES THAT USE THE OLDER SLOWER 8080 PROCESSOR. ╓ERY FEW
- (IF ANY) ├╨/═ ╨LUS MACHINES USED THE 8080. ┌╨═3 IS CODED IN FASTER, COMPACT ┌80
- ASSEMBLY LANGUAGE, FOR THE ┌80 PROCESSOR THAT IS AT THE HEART OF MOST ├╨/═ ╨LUS
- COMPUTERS (INCLUDING THE ├128).
-
- ╘HE ┌╨═3 DOCUMENTATION DETAILS FIXES TO SEVERAL BUGS THAT HAVE PLAGUED ├╨/═
- ╨LUS SINCE DAY ONE. ┴LTHOUGH THE BUGS SOUND SOMEWHAT OBSCURE, THERE'S NO
- TELLING WHEN ONE MIGHT CAUSE PROBLEMS.
-
- ┌╨═3 IS MUCH FASTER THAN STANDARD ├╨/═ ╨LUS. ╘HE INCREASED SPEED SHOULD BE
- OBVIOUS AFTER USING IT FOR A SHORT TIME.
-
- ╘HE NEW FEATURES OFFERED BY ┌╨═3 ARE REMARKABLE. ╘HREE CLOSELY RELATED
- FEATURES ARE ENHANCED COMMAND LINE EDITING, A HISTORY BUFFER THAT STORES AND
- RECALLS MULTIPLE COMMANDS, AND ┴UTOMATIC ├OMMAND ╨ROMPTING. ╘HESE FEATURES
- WORK IN CONCERT TO PROVIDE A FLEXIBLE AND CONVENIENT COMMAND LINE INTERFACE.
- ├OMMAND LINE EDITING NOW HAS 20 CONTROL KEY FUNCTIONS FOR MOVING OR DELETING BY
- CHARACTERS OR WHOLE WORDS. ╘HE MOST RECENT COMMAND LINES (UP TO 250
- CHARACTERS) ARE STORED IN THE HISTORY BUFFER, AND CAN BE RECALLED AND REUSED,
- OR REEDITED IF NECESSARY. ┴UTOMATIC ├OMMAND ╨ROMPTING IS BEST APPRECIATED IF
- SEEN IN ACTION. ╔T'S SIMILAR TO COMMAND LINE COMPLETION IN ╒NIX, EXCEPT THAT
- IT'S AUTOMATIC, WITH MATCHING RESPONSES COMING DIRECTLY FROM THE HISTORY
- BUFFER. ╔F YOU'VE RECENTLY ENTERED A LONG COMMAND LINE WITH LOTS OF OPTIONS,
- AND NEED TO REUSE IT (OR EDIT IT SLIGHTLY FIRST), TYPING THE FIRST FEW UNIQUE
- CHARACTERS WILL BRING BACK THE ENTIRE COMMAND FROM THE HISTORY BUFFER IF IT'S
- STILL INTACT. ┴UTOMATIC ├OMMAND ╨ROMPTING IS SO RADICAL THAT IT MIGHT TAKE
- SOME GETTING USED TO. ╔F YOU DON'T THINK YOU CAN GET USED TO IT, IT CAN BE SHUT
- OFF.
-
- ╘HE LATEST VERSION OF ┌╨═3, ┌╨═3╬08.┴╥╦, IS INCLUDED INSIDE ┬╔╧╙-╥6.╠┬╥, AND
- CAN ALSO BE FOUND AS A SEPARATE FILE.
-
-
-
- ┌├├╨ ─OCUMENTATION, ╓ERSION 1.0
-
- ╘HE REMAINDER OF THIS ARTICLE WILL DESCRIBE ┌├├╨ AND HOW TO CONFIGURE A SYSTEM
- DISK TO GET A FULLY FUNCTIONAL ┌╨═3/┌├├╨ SYSTEM UP AND RUNNING. ┬╔╧╙-╥6 AND
- ┌╨═3 BOTH COME WITH ENOUGH DOCUMENTATION TO KEEP YOU BUSY FOR HOURS, BUT ┌├├╨
- HAS NEVER BEEN DISTRIBUTED BY ITSELF, BECAUSE UP UNTIL THIS ARTICLE, THERE HAS
- NOT BEEN ANY DOCUMENTATION FOR IT. ═OST OF THE DOCUMENTATION THAT FOLLOWS WAS
- FIGURED OUT THROUGH EXPERIMENTATION AND LATER VERIFIED BY ╙IMEON ├RAN.
-
- ┌├├╨ ╞EATURES
-
- ╘HIS DOCUMENTATION IS PROVIDED TO ASSIST THE USER IN GETTING A ┌├├╨ SYSTEM UP
- AND RUNNING. ╔T IS NOT AN EXHAUSTIVE COURSE ON ┌- ╙YSTEM OR ┌├╨╥. ╘HE
- FOLLOWING LIST DETAILS WHICH ┌├╨╥ FEATURES ARE PROVIDED WITH ┌├├╨, AND WHICH
- ONES AREN'T.
-
- * ┌├╨╥ 3.3 COMPATIBILITY. ┌├├╨ CAN RUN A WIDE RANGE OF UTILITIES AN
- APPLICATIONS CREATED FOR ┌├╨╥ 3.3 AND ┌├╨╥ 3.4.
-
- * ╘├┴╨. ┴ ┌3╘ TERMCAP FILE DESCRIBING TERMINAL CHARACTERISTICS CAN BE
- LOADED INTO THE SYSTEM. ┌-╙YSTEM PROGRAMS MAKE USE OF THE ╘├┴╨ FOR OUTPUT
- TO THE SCREEN - A BIG IMPROVEMENT OVER THE OLD METHOD OF PATCHING
- INDIVIDUAL PROGRAMS WITH TERMINAL CONTROL CODES. ╘├┴╨ FILES ARE LOADED BY
- THE ┌├├╨ ╠╧┴─╙┼╟ COMMAND.
-
- * ╬AMED DIRECTORIES. ╒SER AREAS CAN BE ASSIGNED NAMES. ╒P TO 12 USER
- AREAS CAN BE ASSIGNED NAMES. ╬AMED ─IRECTORY ╥EGISTERS (*.╬─╥ FILES) ARE
- LOADED BY THE ┌├├╨ ╠╧┴─╙┼╟ COMMAND.
-
- * ├OMMAND ╙EARCH ╨ATH. ┌├├╨ WILL SEARCH FOR COMMANDS ALONG A USER DEFINED
- SEARCH PATH. ╒P TO SIX PATH ELEMENTS (DIRECTORIES) CAN BE DEFINED.
-
- * ┼NVIRONMENT BLOCK. ├ONTAINS ╘├┴╨, ╬AMED ─IRECTORY, AND ╨ATH INFORMATION.
- ┴LSO INCLUDES A MAP OF ACTIVE DISK DRIVES AND OTHER SYSTEM INFORMATION.
- ╘HE ENVIRONMENT BLOCK CAN BE VIEWED WITH THE ┌-╙YSTEM ╙╚╧╫ UTILITY.
-
- * ╞LOW CONTROL. ├ONDITIONAL PROCESSING FOR BATCH FILES. ╥ELIES ON
- ┌-╙YSTEM ╔╞.├╧═ FOR SETTING THE FLOW STATE. ╧THER FLOW CONTROL COMMANDS
- (╞╔, ┼╠╙┼, ╪╔╞, ╧╥, ┴╬─) ARE RESIDENT.
-
- * ═ULTIPLE COMMANDS CAN BE ENTERED ON THE COMMAND LINE. ╘HE COMMAND LINE
- BUFFER WILL HOLD UP TO 225 CHARACTERS. ├OMMANDS SHOULD BE SEPARATED BY
- SEMICOLONS.
-
- * ┼XTENDED ├OMMAND ╨ROCESSOR. ╔F A COMMAND IS NOT A BUILT-IN FLOW COMMAND,
- RESIDENT COMMAND, OR LOCATED ON DISK ALONG THE SEARCH PATH, THE COMMAND
- LINE IS PASSED TO AN EXTENDED COMMAND PROCESSOR. ┴ TYPICAL EXTENDED
- COMMAND PROCESSOR IS ┴╥╒╬┌, A SOPHISTICATED BATCH FILE EXECUTOR WITH ALIAS
- FEATURES. ╘O USE A PROGRAM AS AN EXTENDED COMMAND PROCESSOR, RENAME IT TO
- ├═─╥╒╬.├╧═ AND PLACE IT IN THE ╥╧╧╘ DIRECTORY OF YOUR BOOT DISK.
-
- * ┼RROR HANDLER. ╔N THE EVENT THAT THE EXTENDED COMMAND PROCESSOR CAN'T
- HANDLE A COMMAND, CONTROL IS PASSED TO AN ERROR HANDLER. ┼RROR HANDLERS
- GIVE INFORMATION ABOUT THE ERROR (INSTEAD OF THE USELESS ├╨/═ "?" MESSAGE)
- AND ALLOW THE COMMAND LINE TO BE EDITED AND REUSED.
-
- * ╥ESIDENT COMMANDS. ╘HE FOLLOWING COMMANDS ARE BUILT IN:
- ├╠╙ - CLEARS THE SCREEN
- ╬╧╘┼ - TEXT FOLLOWING THE ╬╧╘┼ COMMAND IS TREATED AS A COMMENT.
- ╞╔ - ╞LOW CONTROL: TERMINATE THE CURRENT
- ╔╞ LEVEL ┼╠╙┼ - ╞LOW CONTROL: TOGGLE THE FLOW STATE
- ╪╔╞ - ╞LOW CONTROL: EXIT ALL PENDING ╔╞ LEVELS
- ╧╥ - ╞LOW CONTROL: ╧╥ ╔╞ TESTS TO SET FLOW STATE
- ┴╬─ - ╞LOW CONTROL: ┴╬─ ╔╞ TESTS TO SET FLOW STATE
-
- * ╙HELL STACK. ╒P TO FOUR SHELL LEVELS CAN BE DEFINED. ┌-╙YSTEM PROVIDES
- A CHOICE OF SEVERAL DIFFERENT SHELLS. ┴PPLICATIONS SUCH AS TERMINAL
- PROGRAMS AND WORD PROCESSORS CAN ALSO BE ASSIGNED SHELL STATUS.
-
- * ┌├├╨ USES THE ╠╧┴─╙┼╟ COMMAND FOR DIRECT LOADING OF ╥╙╪ FILES THAT HAVE
- NOT BEEN ╟┼╬├╧═ED. ┼XAMPLE: ╠╧┴─╙┼╟ ╙┴╓┼.╥╙╪ LOADS ╙┴╓┼.╥╙╪.
-
- ╘HERE ARE SOME THINGS THAT ┌3╨LUS WILL DO THAT ┌├├╨ WON'T DO.
-
- - ┌├├╨ DOES NOT SUPPORT A ╞LOW ├OMMAND ╨ACKAGE (╞├╨). ╔T RELIES ON THE
- TRANSIENT ╔╞ COMMAND. ╧THER FLOW COMMANDS (╞╔, ┼╠╙┼, ╪╔╞, ╧╥, ┴╬─) ARE
- RESIDENT IN ┌├├╨.
-
- - ┴ ╥ESIDENT ├OMMAND ╨ACKAGE (╥├╨) IS NOT IMPLEMENTED. ├╠╙ AND ╬╧╘┼ ARE
- RESIDENT IN ┌├├╨. ┴LL OTHER COMMANDS MUST BE LOADED FROM DISK. ╘HIS ISN'T
- AS MUCH OF A HANDICAP AS IT MIGHT SOUND IF YOU HAVE A FAST ╥┴═ DRIVE, SUCH
- AS A ├┬═ 17XX ╥┼╒, ╤UICK ┬ROWN ┬OX, OR ╥┴═╠INK.
-
- - ┌├├╨ CAN NOT LOAD TYPE 4 PROGRAMS (USED WITH ┌├╨╥ 3.4). ╔T LOADS
- STANDARD ├╧═ FILES AT 100╚, AND TYPE 3 PROGRAMS THAT LOAD HIGHER IN MEMORY.
- ═OST TYPE 4 PROGRAMS HAVE TYPE 3 OR ├╧═ EQUIVALENTS.
-
- - ┌├├╨ CAN NOT REEXECUTE LOADED PROGRAMS. ╘HIS TRICK IS USUALLY PERFORMED
- ON ┌-╙YSTEMS WITH A ╟╧ COMMAND THAT JUMPS TO 100╚. ╙INCE ┌├├╨ ALSO LOADS AT
- 100╚, A ╟╧ COMMAND WOULD ONLY RESTART ┌├├╨.
-
-
- ╘HE ╞ILES
-
- ╘HREE FILES ARE INCLUDED IN ┌├├╨.┴╥╦:
-
- ╞ILE NAME ╙IZE ─ESCRIPTION
- ============ ==== ==========================================
- ├├╨ .├╧═ 3K ┌├├╨ REPLACEMENT FOR ├├╨.├╧═
- ╠╧┴─╙┼╟ .├╧═ 3K ╠OADER FOR NAMED DIRECTORIES AND TERMCAPS
- ┌╔╬╙╘┴╠ .┌╨═ 1K ╙EGMENT CONTAINING ENVIRONMENT INFORMATION
-
-
- ╟ETTING ╙TARTED - ╨REPARING A ┬OOT ─ISK
-
- ╞ORMAT A ├OMMODORE ├╨/═ FORMAT 5.25 OR 3.5 INCH DISK. ┌├├╨ MUST BE BOOTED FROM
- DEVICE 8 (├╨/═ DRIVE ┴).
-
- ├OPY THE FILES FROM ┌├├╨.┴╥╦ TO USER AREA 0 OF THE NEWLY FORMATTED DISK.
-
- ├OPY ├╨═+.╙┘╙ TO USER 0 OF THE BOOT DISK. ╘HE ├╨═+.╙┘╙ MUST HAVE BEEN
- GENERATED USING THE ┬─╧╙ SEGMENTS FROM ┌╨═3.
-
- ╠OCATE A COPY OF A ┌-╙YSTEM ALIAS UTILITY. ┴ GOOD ONE IS ╙┴╠╔┴╙16, ALTHOUGH
- OTHERS SHOULD WORK ALSO. ├OPY IT TO USER 0 OF THE BOOT DISK.
-
- ┴T THIS POINT, HIT THE RESET SWITCH AND BOOT THE SYSTEM WITH THE NEW DISK.
- ┴FTER THE SYSTEM BOOTS, YOU WON'T BE ABLE TO DO MUCH WITH IT. ╘HE ONLY
- RESIDENT COMMANDS ARE ├╠╙ AND ╬╧╘┼, AND ┌├├╨ CAN ONLY LOCATE COMMANDS IF THEY
- ARE PREFIXED WITH THE DRIVE AND USER NUMBER.
-
- ╘HE NEXT STEP IS TO CREATE A STARTUP ALIAS. ╫HEN ┌├├╨ BOOTS, IT LOOKS FOR A
- FILE NAMED ╙╘┴╥╘┌╨═.├╧═ AND EXECUTES COMMANDS FROM IT. ╙╘┴╥╘┌╨═.├╧═ IS CREATED
- WITH A ┌├╨╥ ALIAS UTILITY. ╚ERE IS A LISTING OF A ╙╘┴╥╘┌╨═.├╧═ CREATED WITH
- ╙┴╠╔┴╙:
-
- =============================================================
-
- ┴0>╙┴╠╔┴╙ ╙╘┴╥╘┌╨═
-
- 15: ; ╠OGS THE ╥╧╧╘ DIRECTORY (┴15) ON THE
- ; CURRENT DRIVE.
-
- ╤─ ╞/╞ ; ╔NSTALLS ╤UICK ┬ROWN ┬OX RAMDISK DRIVER.
-
- ╠╧┴─╙┼╟ ╬┴═┼╙.╬─╥ ├128-╪┬╥.┌3╘
- ; ╠╧┴─╙┼╟ LOADS THE ╬AMED ─IRECTORY ╥EGISTER
- ; AND ╘├┴╨.
- ; ─IRECTORIES CAN NOW BE REFERRED TO BY
- ; NAME, AS IN THE NEXT COMMAND:
-
- ╙┼╘╨╘╚10 /├ ├╧══┴╬─╙ ╥┼╒ 1581 $$$$ $$0 ╥╧╧╘
- ; ╙┼╘╨╘╚ SETS THE COMMAND SEARCH PATH.
- ; ╘HE /C OPTION FIRST CLEARS ANY EXISTING PATH.
- ; ─IRECTORIES ARE THEN LISTED IN THE
- ; ORDER SEARCHED. ╔N THIS CASE, ├╧══┴╬─╙
- ; IS A 64╦ ╤┬┬ RAMDISK (DRIVE/USER ╞0) WHERE
- ; FREQUENTLY USED COMMANDS ARE STORED. ╥┼╒ IS
- ; A 1750 ╥┼╒ (DRIVE/USER ═0). 1581 IS A 1581
- ; DRIVE, (DRIVE/USER ├15) WHERE SOME 700╦
- ; OF UTILITIES AND APPLICATIONS ARE
- ; LOCATED. $$$$ REFERS TO THE CURRENTLY
- ; LOGGED DRIVE AND USER AREA. $$0 REFERS
- ; TO USER AREA 0 OF THE CURRENT DRIVE.
- ; ╘HE ╥╧╧╘ DIRECTORY IS ON DRIVE ┴, USER
- ; 15, WHERE STARTUP UTILITIES AND SYSTEM
- ; FILES CAN BE FOUND.
-
- 1571 [┴┬ ; ╘HIS SPEEDS UP 1571 DISK DRIVES ┴ AND ┬
- ; BY SHUTTING OFF THE REDUNDANT WRITE VERIFY.
-
- ┴╒╘╧╘╧╟ ╧╬ ; ╘URNS ON KEYBOARD CONTROL OF ┌╨═3 ┴UTO
- ; ├OMMAND ╨ROMPTING. ┴UTO ├OMMAND
- ; ╨ROMPTING IS TOGGLED BY ENTERING ├╘╥╠-╤.
-
- ├╧══┴╬─╙: ; ╠OGS THE COMMANDS DIRECTORY.
-
- ╔╞ ~┼╪╔╙╘ ├╨.* ; ╘EST TO SEE IF COMMANDS ARE LOADED.
- ; ╘HIS LINE READS: "╔F THE ├╨ COMMAND
- ; DOES NOT EXIST . . ." AND SETS THE FLOW
- ; STATE TO TRUE IF THE FILE DOESN'T EXIST.
- ╤─ ╔/╞ ; ". . . THEN INITIALIZE THE ╤┬┬ . . ."
- ├1:├╨ ├1:*.* ╞0:
- ; ". . . COPY ALL OF THE COMMANDS IN
- ; DRIVE/USER ├1 TO THE COMMANDS (╞0)
- ; DIRECTORY . . ."
- ╞╔ ; ". . . END IF."
-
- ╥╧╧╘: ; ╠OG THE ROOT DIRECTORY (┴15).
-
- ├╨ ├:┌╞*.* ═0: ; ├OPY ┌╞╔╠┼╥.├╧═ AND ┌╞╔╠┼╥.├═─ TO THE
- ; ╥┼╒ DIRECTORY (═0).
-
- ╓┼╥╥╧╥ ; ╔NSTALL ╓┼╥╥╧╥ ERROR HANDLER.
-
- ─┴╘┼ ╙ ; ╙ET THE SYSTEM TIME AND DATE.
-
- ┌╞ ; ╔NVOKE ┌╞╔╠┼╥ AS A SHELL.
-
- =============================================================
-
- ╧F COURSE, YOUR ╙╘┴╥╘┌╨═ ALIAS WILL VARY DEPENDING ON THE HARDWARE YOU NEED TO
- SUPPORT, YOUR SOFTWARE PREFERENCES, AND YOUR WORK HABITS. ╘HIS ALIAS IS CLOSE
- TO THE UPWARD SIZE LIMIT THAT ┌├├╨ CAN HANDLE BASED ON THE CAPACITY OF THE
- MULTIPLE COMMAND BUFFER. ┴T THE VERY LEAST, ╔ RECOMMEND AN ALIAS THAT WILL SET
- UP A SEARCH PATH AND LOAD A ╘├┴╨.
-
- ┴CTUALLY, ╔ PUT THE CART BEFORE THE HORSE IN THIS EXAMPLE. ╔F YOU TRY TO
- REBOOT YOUR SYSTEM WITH THE ╠╧┴─╙┼╟ COMMAND AS LISTED, YOU'LL NOTICE THAT YOU
- DON'T HAVE A ╬┴═┼╙.╬─╥ FILE. ╘HERE ISN'T ONE DISTRIBUTED WITH ┌├├╨ EITHER.
- ┌-╙YSTEM UTILITIES WON'T LET YOU EDIT THE ╬─╥ EITHER, SINCE THE BUFFER FOR IT
- HASN'T BEEN CREATED YET. ╘HIS TURNED OUT TO BE A NASTY CHICKEN/EGG SITUATION,
- HOPEFULLY SOLVED BY THE INCLUSION OF A SAMPLE ╬┴═┼╙.╬─╥ FILE CONTAINING SIMPLY
- ┴0:╙┘╙╘┼═ AND ┴15:╥╧╧╘.
-
- ┴T THIS POINT, YOU SHOULD HAVE A MOSTLY FUNCTIONING ┌├├╨ SYSTEM DISK. ╨RESS
- RESET AND BOOT IT UP. ┘OU MIGHT WANT TO CORRECT ANY PROBLEMS WITH IT OR TWEAK
- IT TO PERFECTION BEFORE MOVING ON.
-
-
- ╠IST OF ┌-╙YSTEM ╒TILITIES FOR ┌├├╨
-
- ╙OME OF THE FOLLOWING UTILITIES ARE ESSENTIAL, OTHERS ARE NICE TO HAVE. ╘HE
- VERSION NUMBERS LISTED ARE THE LATEST KNOWN VERSIONS AT THE TIME THAT THIS
- DOCUMENTATION WAS WRITTEN. ╒TILITIES CAN BE FOUND ON ┌╬ODE ┬┬╙S, AND SOME OF
- THEM ARE AVAILABLE ON ╙IMTEL20 OR ITS MIRROR SITES. ╙OME OF THE MORE IMPORTANT
- UTILITIES WILL BE UPLOADED TO CCO.CALTECH.EDU.
-
- ╙┴╠╔┴╙16 - ALREADY MENTIONED IN THE EXAMPLE ABOVE. ╙┴╠╔┴╙ (OR ONE OF
- THE OTHER ┌├╨╥ ALIAS UTILITIES) ARE ESSENTIAL.
-
- ┴╥├╧╨┘ - NOT A ┌├╨╥ UTILITY, BUT ONE OF THE BEST ├╨/═ FILE COPIERS
- EVER.
-
- ╙─138┬ - EXCELLENT ─╔╥ECTORY UTILITY. ╙─ OFFERS MANY DIFFERENT
- TYPES OF SORTS, LIST FORMATS, ETC., DISPLAYS DATE STAMPS, AND SUPPORTS
- OUTPUT TO A FILE.
-
- ═╦─╔╥32 - UTILITY FOR MANIPULATING DIRECTORY NAMES AND ╬AMED
- ─IRECTORY ╥EGISTER (*.╬─╥) FILES.
-
- ┼╥┴╙┼57 - ERASES FILES.
-
- ┌╞╔╠┼╥10 - A FILE MANAGEMENT SHELL THAT CAN LAUNCH APPLICATIONS. ╔T
- IS PROGRAMMABLE IN THAT IT CAN EXECUTE USER DEFINED MACROS FROM A
- FILE. ═ULTIPLE FILES CAN BE "TAGGED" AND OPERATED ON BY OTHER
- PROGRAMS. ┌╞╔╠┼╥ IS AN EXCELLENT PROGRAM, SORT OF A ╟╒╔ DESKTOP
- WITHOUT THE SLOW GRAPHICS.
-
- ├128-╪╟╥ - A LIBRARY OF E╪TENDED ╟╥APHICS TERMCAPS FOR THE ├128. ╘HIS
- FILE IS ESSENTIAL IF YOU WANT TO USE ANY ┌├╨╥ PROGRAMS THAT NEED A
- ╘├┴╨. ╘HESE TERMCAPS ARE THE FIRST FOR THE ├128 THAT IMPLEMENT
- CHARACTER GRAPHICS, STANDOUT MODE, AND CONTROL OF BLINKING REVERSE,
- AND UNDERLINE MODES.
-
- ╙┼╘╨╘╚10 - USED TO SET THE COMMAND SEARCH PATH. ┼SSENTIAL!
-
- ╓┼╥╥╧╥17 - ERROR HANDLER THAT DISPLAYS THE COMMAND LINE FOR
- REEDITING. ╓┼╥╥╧╥17 IS THE ONLY ERROR HANDLER THAT ╔ FOUND THAT WORKS
- WITH ┌├├╨.
-
- ┌┼╪50 - ┌-╙YSTEM ┼╪ECUTIVE IS A POWERFUL BATCH FILE PROCESSOR THAT
- REPLACES THE ├╨/═ ╙╒┬═╔╘ COMMAND.
-
- ╠┬╥╚╠╨22 - ┌-╙YSTEM ╚ELP UTILITY DISPLAYS HELP FILES. ╚ELP FILES CAN
- BE CRUNCHED (*.╚┌╨), AND/OR LOADED FROM A ╚┼╠╨.╠┬╥ LIBRARY.
-
- ┴╥╒╬┌09 - RUNS AN ALIAS SCRIPT FROM A TEXT FILE. ┴╥╒╬┌ IS
- FREQUENTLY USED AS AN EXTENDED COMMAND PROCESSOR. ╘O USE ┴╥╒╬┌ (OR
- ANY OTHER EXECUTABLE UTILITY) AS AN EXTENDED COMMAND PROCESSOR, RENAME
- IT TO ├═─╥╒╬.├╧═.
-
- ╓╠╒102 - ╓IDEO ╠IBRARY ╒TILITY VIEWS OR EXTRACTS FILES FROM
- LIBRARIES. ╓ERSIONS OF ╓╠╒ ABOVE 1.02 DO NOT WORK RELIABLY WITH
- ┌╨═3/┌├├╨.
-
- ┌33╔╞16 - IS THE ╔╞.├╧═ DISCUSSED IN THE SECTION ON FLOW CONTROL.
-
- ╙╚╧╫14 - DISPLAYS AN IMMENSE AMOUNT OF INFORMATION ABOUT YOUR
- ┌-╙YSTEM. ╙╚╧╫ ALSO INCLUDES A MEMORY PATCHING FUNCTION.
-
- ┌├╬╞╟24 - CONFIGURES ┌-╙YSTEM PROGRAM OPTIONS. ═OST ┌-╙YSTEM
- PROGRAMS ARE DISTRIBUTED WITH A CONFIGURATION (*.├╞╟) FILE THAT
- PRODUCES A MENU OF CONFIGURATION OPTIONS WHEN RUN WITH ┌├╬╞╟.
-
- ┌╨17 - ┌-╙YSTEM ╨ATCH UTILITY EDITS FILES, DISK SECTORS, OR
- MEMORY, AND INCLUDES A BUILT-IN ╥╨╬ CALCULATOR AND NUMBER BASE
- CONVERTER.
-
- ┌═┴╬-╬┼╫ - ╘HIS IS A MANUAL DESCRIBING ┌-╙YSTEM FEATURES IN DEPTH.
- ╔T IS BASED ON EARLIER VERSIONS OF ┌-╙YSTEM, AND IS A LITTLE DATED,
- BUT OTHERWISE CONTAINS INFORMATION THAT YOU WON'T FIND ANYWHERE ELSE.
- ╬OT EVERYTHING IN THE MANUAL APPLIES TO OPERATION OF ┌╨═3/┌├├╨, BUT
- WITH THE DOCUMENTATION PRESENTED HERE, YOU SHOULD BE ABLE TO GET A
- GOOD IDEA OF WHAT WORKS AND WHAT DOESN'T.
-
-
- ┌├├╨ ╘ECHNICAL ╬OTES
-
- ┌├├╨ IS A REPLACEMENT ├├╨ THAT IMPLEMENTS ┌├╨╥ 3.3. ╔T LOADS AT 100╚ AND IS
- STORED IN THE BANK 0 ├├╨ BUFFER FOR FAST RELOADING AS DOES THE STANDARD ├├╨.
- ┬Y CONTRAST, ┌3╨LUS LOADS INTO HIGH MEMORY AND CAN BE OVERWRITTEN BY TRANSIENT
- COMMANDS, REQUIRING RELOADING ┌3╨LUS FROM DISK. ┬ECAUSE ┌├├╨ REPLACES THE ├├╨,
- A ┌├├╨ SYSTEM HAS MORE ╘╨┴ (TRANSIENT PROGRAM AREA) THAN A ┌3╨LUS SYSTEM. ┴
- ┌├├╨ SYSTEM ON THE ├128 HAS MORE THAN 57╦ OF ╘╨┴, ALMOST THE SAME AMOUNT AS A
- STANDARD ├128 ├╨/═ SYSTEM.
-
- ╘HIS SHOULD BE ENOUGH INFORMATION TO GET STARTED WITH ┌╨═3/┌├├╨. ╙ET UP A BOOT
- DISK, EXPERIMENT WITH SOME ┌-╙YSTEM UTILITIES, READ ┌═┴╬-╬┼╫, AND GET SOME
- APPLICATIONS RUNNING. ┘OU'LL AGREE THAT ┌╨═3/┌├├╨ BREATHS NEW LIFE INTO ├╨/═.
-
- =============================================================================
- ═ULTI-╘ASKING ON THE ├=128 - ╨ART 1
- BY ├RAIG ╘AYLOR (DUCK@PEMBVAX1.PEMBROKE.EDU)
-
- ╔. ╔NTRODUCTION / ╨ACKAGE ╧VER-VIEW..
-
- ╘HIS ARTICLE WILL DETAIL THE MULTI-TASKING KERNAL WHICH ╔ HAVE WRITTEN BUTT
- IS STILL IN THE DEBUGGING STAGE . ╘HE DOCUMENTATION IS BEING RELEASED NOW AS
- ├= ╚ACKING HAS BEEN DELAYED FOR A MONTH WHILE THIS ARTICLE AND A FEW OTHERS
- WERE IN THE PROCESS OF BEING SHAPED. ╘HE SOURCE CODE LISTINGS, BINARIES, AND
- A FEW SAMPLE PROGRAMS WILL BE IN THE NEXT ISSUE OF ├= ╚ACKING AS WELL AS
- AVAILABLE ON THE MAILSERVER AND ON ╥. ╦NOP'S ╞╘╨ SITE WHEN THEY ARE
- AVAILABLE..
-
- ╘HE ├OMMODORE 128 DOES NOT SUPPORT ╘╥╒┼ MULTI-TASKING IN THAT THE PROCESSOR
- HANDLES SWAPPING FROM TASK TO TASK. ╥ATHER THE PACKAGE WILL MAKE USE OF THE
- INTERRUPTS OCCURING SIXTY TIMES A SECOND TO DETERMINE WHEN TO SWITCH TASKS..
- ╘HE ├OMMODORE 128 GREATLY SIMPLIFIES THINGS AS IN ADDATION TO THE INTERRUPTS
- IT ALSO HAS THE PROVISION TO RELOCATE ZERO PAGE AND THE STACK PAGE. ╙O THE
- PACKAGE BASICALLY WORKS BY INTERCEPTING THE ╔╥╤ VECTOR, TAKING A LOOK AT THE
- CURRENT JOB, SAVING THE STACK POINTER, FINDING THE NEXT ACTIVE JOB, LOADING
- THE STACK PAGE AND REGISTERS AND RESUMING THE NORMAL ╔╥╤ AS IF NOTHING HAD
- EVER HAPPENED.
-
- ╒NFORTUNATLY ├OMMODORE NEVER THOUGHT OF HAVING MULTIPLE PROGRAMS IN MEMORY
- EXECUTING AT ANY GIVEN TIME. ╚ENCE, PROBLEMS WILL OCCUR WITH FILE ACCESSES,
- WITH MEMORY CONTENTION, AND WITH AN OVER-ALL SLOWDOWN IN SPEED. ╘HE PACKAGE
- WILL DETAIL HOW TO HANDLE DEVICE CONTENTIONS, BUT IT'S RECOMMENDED THAT
- PROGRAMMERS MAKE USE OF THE ├= 128 KERNAL CALL ╠╦╒╨╠┴ $FF59 CONTAINING THE
- LOGICAL FILE NUMBER THEY WISH TO USE IN .┴; IF THE CARRY FLAG IS SET UPON
- RETURN THEN IT IS SAFE TO USE, ELSE FIND ANOTHER ONE AS ANOTHER PROGRAM IS
- USING IT. ╚OWEVER, NOTE THAT IF YOU HAVE MULTIPLE PROGRAMS DOING THIS THEN
- YOU MAY HAVE PROBLEMS WITH ONE GRABBING A LOGICAL FILE NUMBER AFTER THE
- OTHER PROCESS HAS CHECKED FOR IT. ═ULTI-TASKING IS FUN 'EH? ╨ROBLEMS LIKE
- THIS WILL BE EXAMINED WHEN WE GET INTO SEMAPHORES LATER IN THIS ARTICLE..
-
- ├RAIG ┬RUCE'S ─YNAMIC ═EMORY ┴LLOCATION ARTICLE IN THE SECOND ISSUE OF ├=
- ╚ACKING SHOULD PROVIDE A VERY STRONG BASIS FOR A FULL-BLOWN MEMORYY MANAGER.
- ╫ITH MINOR MODIFICATIONS (BASICALLY JUST CHANGING THE INITIAL ALLOCATIONS SO
- THAT THE PACKAGE IS NOT KILLED) IT SHOULD BE ABLE TO WORK. ┴LSO IT WILL NEED
- CHANGES TO MAKE SURE THAT PROCESSES DON'T TRY TO ALLOCATE AT THE SAME TIME.
- ╙O A MEMORY MANAGER IS NOT TOO MUCH OF A PROBLEM. ─ETAILS OF WHAT CHANGES
- WILL BE NECESSARY SHALL BE IN THE NEXT ISSUE.
-
- ╫HAT IS A PROCESS? ╫HAT IS A PROGRAM? ╔'VE BEEN USING THE TERMS ALMOST
- INTER-CHANGEBLY THROUGHOUT THIS ARTICLE AT THIS POINT. ┬ASICALLY ╔'M CALLING
- THEM THE SAME. ┴ PROCESS, OR PROGRAM IS DEFINED AS A PROGRAM WITH IT'S OWN
- EXECUTABLE SECTION, IT'S OWN DATA SECTIONS, AND IT'S OWN STACK AND ZERO PAGE.
- (╬OTE, HOWEVER, THAT THE MULTI-TASKING PACKAGE DOES NOT SUPPORT RELOCATION OF
- THE ZERO PAGE ALTHOUGH THIS IS LIKELY TO CHANGE). ╘HE "KERNAL" OF THE
- MULTI-TASKER IS BASICALLY THAT PART OF THE PACKAGE WHICH GOVERNS WHICH
- PROCESS IS EXECUTED OR SWITCHED TO NEXT. ╙EMAPHORES WILL BE EXAMINED IN
- DETAIL LATER; THEY FUNCTION AS FLAGS FOR PROCESSES TOO KNOW WHEN IT IS SAFE
- TO EXECUTE SOMETHING, AND SERVE AS SIGNALS BETWEENN THEM.
-
- ╞UTURE VERSIONS OF THE PACKAGE, (EVEN THOUGH ╔ KNOW IT DOES NOT EXIST OUT
- SIDE OF MY HOUSE YET), WILL SUPPORT PIPES AND A MORE STRONGLY TYPED KERNAL
- SO THAT PROCESSES MAY BE PRIORITIZED.
-
- ╔╔. ┴ ╠OOK ┴T ═ULTI-╘ASKING
-
- ╘HE INTRODUCTION INTRODUCED SOME BASIC ELEMENTS OF MULTI-TASKING BUT ╔'LL
- REPEAT THEM HERE, DEFINING THEM SO THAT THIS ARTICLE CAN BE CLEAR AS SOME OF
- THE CONCEPTS CAN GET A BIT CONFUSING.
-
- ┬ACKGROUND - ┴ PROCESS IS SAID TO BE IN THE "BACKGR OUND" IF IT IS NOT
- THE FOREGROUND TASK AND MAY OR MAY NOT HAVE INPUT DEVI CES ASSOCIATED
- WITH IT.
-
- ╞OREGROUND - ┴ PROCESS IS SAID TO BE "FOREGROUND" IF IT IS THE MAIN
- ACTIVE PROCESS AND IS HOLDING THE KEYBOARD AND SCREEN DISPLAY CAPTIVE
- (IE: THE USER IS ACTUALLY WORKING WITHIN IT).
-
- ╦ERNAL - ┴ SMALL SECTION OF CODE THAT PERFORMS LOW-LEVAL WORK THAT IS
- NEEDED BY ANY PROGRAMS IN MEMORY..
-
- ═ULTI-╘ASKING - ┼XECUTION OF MORE THAN ONE PROCESS AT ANY GIVEN
- TIME.
-
- ╨RIORITY - ┴ VALUE ASSOCIATED WITH EACH PROCESS THAT DETERMINES HOW
- OFTEN, AND POSSIBLY WHEN A PROCESS IS EXECUTED.
-
- ╨ROCESS - ╘HE SPACE IN MEMORY TAKEN UP BY EXECUTABLE PROGRAM CODE, ANY
- ASSOCIATED DATA, THE STACK AND THE REGISTERS ASSOCIATED AND CURRENTLY IN
- USE BY IT, INCLUDING THE CURRENT ╨├ (PROGRAM COUNTER)..
-
- ╙EMAPHORES - ╓ALUES THAT ARE GLOBALLY ACCESSED BY PROCESSES TO SHARE AND
- COMMUNICATE INFORMATION BETWEEN EACH OTHER AND THE KERNAL.
-
- ╙OME ├╨╒'S HAVE AVAILABLE A MULTI- TASKING MODE (THE 386 AND 486 ARE THE
- MOST FAMALIAR ONES THAT COME TO MIND), Y ET THE 8502 CHIP CONTAINED INSIDE
- THE ├OMMODORE 128 WAS FIRST DESIGNED BEFORE 1985 AND LACKS MULTI-TASKING. ╔T
- WOULD BE NICE IF SUCH A MULTI-TASKING ├╨╒ IN THE 6502 FAMILY DID EXIST BUT
- IT WOULD ALSO CREATE PROBLEMS WITH THE 6502 STYLE ARCHITECTURE AND WOULDD
- PRODUCE SEVERE COMPATIBILITY PROBLEMS.
-
- ╙O HOW IS THE ├=128 SUPPOSED TO DO MULTI-TASKING? ╫ELL, WE'LL "SIMULATE"
- IT..
-
- ┬ASICALLY IF WE HAD TWO PROGRAMS IN MACHINE LANGUAGE:
-
- ╨ROGRAM 1: ╨ROGRAM 2:
- - LDA #65 ; THE "┴" CHARACTER - LDA #64 ; THE "@" CHARACTER
- JSR $FFD2 ; PRINT IT JSR $FFD2 ; PRINT IT
- JMP - JMP --
-
- ┴ND WE WANTED THEM TO MULTI-TASK WE'D EXPECT SOMETHING LIKE THE FOLLOWING:
-
- @┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴@┴┴
-
- ╔T'S UNLIKELY THAT YOU'LL GET THAT IN MANY MULTI-TASKING ENVIRONMENTS,
- EVEN NON-SIMULATED ONES. ╙INCE WE'RE ONLY GOING TO BE SWITCHING TASKS EVERY
- 1/60 OF A SECOND THEN WE'RE MORE LIKELY TO SEE AN OUTPUT SIMILAIR TO THIS:
-
- @@@@@@┴┴┴┴┴┴┴@@@@@@@┴┴┴┴┴┴┴@@@@@@@@┴┴┴┴┴┴┴@@@@@@@┴┴┴┴┴┴┴┴@@@@@@@@┴┴┴┴┴┴@@@@@@@
-
- ╙O THAT IT SEEMS A PROCESS WILL RUN FOR ABOUT 1/60 OF A SECOND BEFOREE
- SWITCHING TO THE NEXT ONE.
-
- ╫E RUN INTO PROBLEMS HOWEVER. ╘HE ╦┼╥╬┴╠ IN THE ├128 THAT CONTAINS MOST
- OFF THE FILE HANDLING, SCREEN MANIPULATIONS, AND KEYBOARD INPUT ROUTINES. ╔T
- WAS NEVER DESIGNED WITH THE IDEA OF MULTI-TASKING IN MIND. ╙O WE'RE GONNA
- HAVE CODE RUNNING IN THE ╦┼╥╬┴╠ IN TWO SPOTS FOR THE TWO DIFFERANT PROCESSES
- AND IT'S MORE THAN LIKELY WE'LL END UP WITH SOMETHING LIKE:
-
- @@@@@@@@<AND THEN A ┬╥╦ OR SOME STRANGE ERROR OR NEVER-NEVER-LAND>>
-
- ╘HERE'S GOT TO BE SOME WAY TO FIX IT - ╘HERE IS - ╔T'S CALLED A SEMAPHORE..
-
- ┴ SEMAPHORE IS A VALUE THAT IS CHECKED BEFORE ACCESS IS GRANTED TO ANOTHER
- GROUP OF MEMORY LOCATIONS. ╘HE SEMAPHORE IS BASICALLY REQUESTED VIA THE
- FOLLOWING:
-
- REQUEST_SEMAPHORE SEI
- LDX SEMAPHORE
- DEX
- BEQ +
- CLI
- - LDY #$FF
- DEY
- BNE -
- + INC SEMAPHORE
- CLI
-
- ╬OW THE REQUEST_SEMAPHORE HAS TO DISABLE INTERRUPTS TO PREVENT ANOTHER TASK
- FROM CHANGING THE SEMAPHORE VALUE BEFORE THIS ROUTINE HAS HAD A CHANCE. ╘HE
- ACTUAL CODE FOR THE REQUEST_SEMAPHORE WILL BE VERY SIMILAIR TO THE ABOVE.
-
- ╒SING A SIMILAIR ROUTINE THAT PERFORMS THE OPPOSITE - SETTING THE SEMAPHORE
- TO A ZERO VALUE WHEN FINISHED WE CAN DICTATE WHAT PROGRAM HAS CONTROL OVER
- WHAT DEVICE OR WHAT MEMORY AREAS.
-
- ╘HE SEMAPHORES WILL BE USED TO GOVERN ACCESS TO THE ╦┼╥╬┴╠ ROUTINES WHICH
- MANIPULATE THE LOCATIONS IN ZERO PAGE ETC, THEY'LL ALSO BE USED TO MANAGE THE
- MEMORY MANAGER WHEN IT IS IMPLEMENTED AS IT'D BE AWKWARD FOR IT TO ALLOCATE
- THE SAME BLOCK OF MEMORY TO TWO OR MORE PROCESSES.
-
- ╔╔╔. ═ULTI-╘ASKING ╞UNCTION ├ALLS (╨ACKAGE ├ALLS)
-
- ╧FF╙ET | ╬AME | ╬OTES
- -------+---------------+--------------------------------------------------
- $00 | ╙ET╒P | .├=0 ╔NIT ╨ACKAGE, .├=1 ╒NINSTALL ╨ACKAGE
- | | (INCLUDING ╦ERNAL RE-DIRECTION).
- $03 | ╙PAWN╨ROCESS | ╧N RETURN: .├=0 PARENT, .├ = 1 CHILD
- $06 | ├HANGE╨RIORITY| .┴ = NEW FOREGROUND PRIORITY, .╪ = NEW BACKGROUND
- $09 | ╦ILL╘HIS╨ROC | ╦ILLS ├ALLING ╨ROCESS (NO RETURN)
- $0C | ╦ILL╧THER╨ROC | ╦ILLS ╨ROCESS # .┴
- $0F | ╥EQUEST╙EMAPH | ╥EQUESTS ╙EMAPHORE #.╪
- $12 | ╥ELEASE╙EMAPH | ╥ELEASES ╙EMAPHORE #.╪
- $14 | ╟ET╨ROC╔NFO | ╥ETURNS ╨ROCESS ╔NFORMATION, ╔NPUT=#┴
- | | OF 0: ╨ROCESS ╔D
- | | OF 1: ╨ROCESS ╞OREGROUND ╨RIORITY
- | | OF 2: ╨ROCESS ┬ACKGROUND ╨RIORITY
- | | OF 3+ ╧THER ╔NFORMATION ╘O ┬E ─ECIDED ╠ATER
- $17 | ╨IPE╔NIT | .┴┘ - ┴DDRESS OF ╨IPE, .╪ = ╙IZE/8
- | | ╥ETURN: .╪ - ╨IPE #
- $1A | ╫RITE╨IPE | .┴┘ - ┴DDRESS OF ╬ULL ╘ERM. ─ATA, .╪ = ╨IPE #
- $1D | ╥EAD╨IPE | .┴┘ - ┴DDRESS TO ╨UT ─ATA .╪=╨IPE #
- $20 | .... | \
- $2E | .... | \ ═ORE ╥OUTINES FOR THE FUTURE.
- -------+---------------+--------------------------------------------------
-
- ╔╓. ┴VAILIBILITY OF THE ╨ACKAGEE
-
- ╘HE PACKAGE SHOULD BE AVAILABLE AT THE TIME OF THE NEXT ISSUE. ┴ FURTHER
- EXAMINATION OF HOW THE ROUTINES WORK SHALL BE EXAMINED ALONG WITH THE SOURCE
- CODE.
-
- ┼RRORS POPPED UP IN DEVELOPING IT AND RATHER THAN DELAY ├= ╚ACKING ANY
- FURTHER ╔ DECIDED TO GO AHEAD AND RELEASE THE ABOVE INFORMATION SO THAT
- INDIVIDUALS CAN START DEVELOPING APPROPRIATE ROUTINES. ╔N ADDITION,
- PLEASE NOTE THAT ╨╔╨┼S _MAY_ OR MAY NOT BE SUPPORTED IN THE NEXT ISSUE.
- ╔ HAVE NOT FULLY MADE UP MY MIND YET ON THEM.
-
- ╓. ╥EFERENCESS
-
- ┬ORN TO ├ODE IN ├, ╚ERBERT ╙CHILDT, ╧SBORNE-═C╟RAW ╚ILL, P.203-252.
-
- ╬OTES FROM ╧PERATING ╙YSTEMS ├OURSE, ╨EMBROKE ╙TATE ╒NIV, ╞ALL '92.
-
- =============================================================================
- ╠╔╘╘╠┼ ╥┼─ ╥┼┴─┼╥: ═╙-─╧╙ FILE READER/╫╥╔╘┼╥ FOR THE ├128 AND 1571/81.
- BY ├RAIG ┬RUCE (CSBRUCE@NEUMANN.UWATERLOO.CA)
-
- 1. ╔╬╘╥╧─╒├╘╔╧╬
-
- ╘HIS ARTICLE IS A CONTINUATION OF THE ╠ITTLE ╥ED ╥EADER ARTICLE FROM LAST
- ISSUE. ╘HE PROGRAM HAS BEEN EXTENDED TO WRITE ═╙-─╧╙ FILES, IN ADDITION TO
- READING THEM. ╘HE PROGRAM STILL WORKS DRIVE-TO-DRIVE SO YOU'LL STILL NEED TWO
- DISK DRIVES (EITHER PHYSICAL OR LOGICAL) TO USE IT. ╘HE PROGRAM HAS ALSO BEEN
- EXTENDED TO ALLOW ═╙-─╧╙ FILES TO BE DELETED AND TO ALLOW THE COPYING OF
- ├OMMODORE-─╧╙ FILES BETWEEN ├┬═-─╧╙ DISKS (THIS MAKES IT MORE CONVENIENT TO
- USE THE PROGRAM WITH A TEMPORARY LOGICAL DRIVE LIKE ╥┴═─╧╙). ┴LSO, SINCE ╔
- HAVE RECENTLY ACQUIRED A ├═─ ╞─-4000 FLOPPY DISK DRIVE, ╔ KNOW THAT THIS
- PROGRAM WORKS WITH ═╙-─╧╙ DISKS WITH THIS DRIVE (BUT ONLY FOR THE 720╦
- FORMAT).
-
- ╘HE PROGRAM STILL HAS THE SAME ORGANIZATION AS LAST TIME: A MENU-ORIENTED
- USER-INTERFACE PROGRAM WRITTEN IN ┬┴╙╔├ THAT MAKES USE OF A PACKAGE OF ═╙-─╧╙
- DISK ACCESSING ROUTINES WRITTEN IN MACHINE LANGUAGE. ╧H, THIS PROGRAM IS
- ╨UBLIC ─OMAIN ╙OFTWARE, SO FEEL FREE TO DISTRIBUTE AND/OR MANGLE IT AS YOU
- WISH. ╩UST NOTE ANY MANGLINGS ON THE "INITIALIZING" SCREEN SO PEOPLE DON'T
- BLAME ME.
-
- ╘HE PROGRAM RUNS ON EITHER THE 40 OR 80-COLUMN SCREENS, BUT YOU WILL GET
- MUCH BETTER PERFORMANCE FROM THE ┬┴╙╔├ PORTION OF THE PROGRAM BY BEING
- IN 80-COLUMN MODE AND ╞┴╙╘ MODE. ┴ MODIFICATION THAT SOMEONE MIGHT WANT
- TO MAKE WOULD BE TO SPREAD-OUT THE DISPLAY FOR THE 80-COLUMN SCREEN AND ADD
- COLOR TO THE RATHER BLAND DISPLAY.
-
- 2. ╒╙┼╥ ╟╒╔─┼
-
- ╠╧┴─ AND ╥╒╬ THE "LRR.128" ┬┴╙╔├ PROGRAM FILE. ╫HEN THE PROGRAM IS FIRST RUN,
- IT WILL DISPLAY AN "INITIALIZING" MESSAGE AND WILL LOAD IN THE BINARY MACHINE
- LANGUAGE PACKAGE FROM THE "CURRENT" ├OMMODORE ─╧╙ DRIVE (THE CURRENT DRIVE IS
- OBTAINED FROM ╨┼┼╦(186) - THE LAST DEVICE ACCESSED). ╘HE BINARY PACKAGE IS
- LOADED ONLY ON THE FIRST RUN AND IS NOT RELOADED ON SUBSEQUENT RUNS IF THE
- PACKAGE ╔─ FIELD IS IN PLACE.
-
- ╘HE SYSTEM IS DESIGNED TO HAVE TWO FILE SELECTION MENUS: ONE FOR THE ═╙-─╧╙
- DISK DRIVE, AND ONE FOR THE ├OMMODORE-─╧╙ DISK DRIVE (WHICH MAY BE A LOGICAL
- DISK DRIVE). ╘HE IDEA FOR COPYING IS THAT YOU SELECT THE FILES IN ONE OF
- THESE MENUS, AND THEN PROGRAM KNOWS TO COPY THEM TO THE DISK FOR THE OTHER
- MENU. ╘HIS IDEA OF HAVING TWO SELECTION MENUS IS ALSO VERY CONSISTENT WITH
- THE ORIGINAL PROGRAM.
-
- 2.1. ═╙-─╧╙ ═┼╬╒
-
- ╫HEN THE PROGRAM STARTS, THE ═╙-─╧╙ MENU OF THE PROGRAM IS DISPLAYED. ╔T
- LOOKS LIKE:
-
- ═╙-─╧╙ ═╙=10:1581 ├┬═=8 ╞╥┼┼=715000
-
- ╬╒═ ╙ ╘╥╬ ╘┘╨ ╞╔╠┼╬┴═┼ ┼╪╘ ╠┼╬╟╘╚
- --- - --- --- -------- --- ------
- 1 * ┴╙├ ╙┼╤ ╚┴├╦4 ╘╪╘ 120732
- 2 ┬╔╬ ╨╥╟ ╥┴═─╧╙ ╙╞╪ 34923
-