72 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
XXX  Names: GTOS, BOSS, PROMPT/COMMAND, MINIDOS, ...
 | 
						|
XXX  CardBoot -> Find load and run a GT1 file
 | 
						|
XXX  Dir -> Builtin command. Only names
 | 
						|
XXX  List -> External command: file size, date, volume label
 | 
						|
XXX  Cls -> Clear terminal
 | 
						|
XXX  Stat ->
 | 
						|
XXX  Type -> command (consider passing of ARGS)
 | 
						|
XXX  Device letters or not? A: B: C:
 | 
						|
        Familiary, goes back to before CP/M
 | 
						|
XXX  Directories or not?
 | 
						|
XXX  Switches or not
 | 
						|
 | 
						|
        CardBoot.gcl
 | 
						|
                [Loads from ROM, lives $8a0...up]
 | 
						|
                Checks SD card and FAT32
 | 
						|
                Can find and load one file: GTOS.gt1
 | 
						|
                May use application specificic SYS functions
 | 
						|
 | 
						|
        GTOS.gt1 -- Basic operating system services (BOSS)
 | 
						|
                                                "CP/M BOOT"
 | 
						|
                Welcome message (throw-away code in $500)
 | 
						|
                  CLS + "GTOS v1 32K" + Apple II beep
 | 
						|
                  Load and execute Command.gt1
 | 
						|
                Provide resident services in $200..$4f9
 | 
						|
                - BOSS.writeByte                "CP/M CONOUT"
 | 
						|
                - BOSS.readByte                 "CP/M CONIN"
 | 
						|
                - BOSS.setDevice                "CP/M SELDSK"
 | 
						|
                - BOSS.readDir/find/enter/delete/create
 | 
						|
                - BOSS.loadFile -- Gt1 loading
 | 
						|
                - BOSS.readSector               "CP/M READ"
 | 
						|
                - BOSS.writeSector              "CP/M WRITE"
 | 
						|
                - BOSS.command                  "CP/M WBOOT (DOS COMMAND.COM)"
 | 
						|
                - BOSS.spawn
 | 
						|
                - BOSS.launch
 | 
						|
                - Won't be reloaded during a session
 | 
						|
                - Controls all shadow memory. May hide in banked memory
 | 
						|
                - Can use generic SYS functions, but not app-specific
 | 
						|
                - Can be be replaced without EPROM change
 | 
						|
 | 
						|
                API:
 | 
						|
                - Use fixed addresses, but only few (esp. zero page) --> function codes
 | 
						|
                -
 | 
						|
 | 
						|
        Command.gt1 -- Command parser and dispatcher
 | 
						|
                Lives in top..$7fff
 | 
						|
                Display OK/error, this unifies error reporting
 | 
						|
                Show prompt and cursor symbol
 | 
						|
                  A> _
 | 
						|
                Handle user input with line editing
 | 
						|
                Built-in command: Change device letter
 | 
						|
                Built-in command: Dir
 | 
						|
                Find file '<CMD>' in root dir
 | 
						|
                If not found, return to prompt
 | 
						|
                Find argument files, open if found?
 | 
						|
                Load first sector of file in $500..$6ff
 | 
						|
                If not a command -> BOSS.Launch
 | 
						|
                If command, loadFile and run? Or defer
 | 
						|
                  to command itself
 | 
						|
 | 
						|
        <CMD>.gt1:
 | 
						|
                Do stuff with BOSS
 | 
						|
                Exit:
 | 
						|
                        Big program -> BOSS.prompt
 | 
						|
                        Small program -> RET
 | 
						|
 | 
						|
        Launch.gt1:
 | 
						|
                Escapes GTOS
 | 
						|
                Stand-alone loading from bottom of visible screen area, like Loader
 | 
						|
                Requirements: compatible with Tetronis, Apple-1, MSBASIC
 | 
						|
                Reset terminal, video etc
 | 
						|
                Fast loading GT1 file -> sectors must be split
 |