git-svn-id: http://svn.code.sf.net/p/netboot65/code@18 93682198-c243-4bdb-bd91-e943c89aac3b

This commit is contained in:
jonnosan 2009-01-22 03:00:45 +00:00
parent 1d2ca9c45d
commit 36f9e60107
3 changed files with 194 additions and 0 deletions

15
doc/BOOTSTRAPPING.txt Normal file
View File

@ -0,0 +1,15 @@
WE NEED:
- about 4K of BSS space for ethernet buffers
- about 6K of code
BOOT FROM DISK (UTHERBOOT.BIN)
- loads in at $0800
- copies monitor rom to same spot in language card (F800-FFFF)
- relocates to $D000-$C000 in the language card (bank 1 only)
- makes language card active (bank 1)
- downloads BOOTA2.BIN via tftp
- turns off language card
- jumps to start of of BOOTA2.BIN

View File

@ -0,0 +1,46 @@
DOS 3.3 MEMORY LAYOUT
$C000 --- TOP OF RAM
$B600 --- RWTS
$AAC9 --- FILE MANAGER
$9D00 --- MAIN DOS ROUTINES
$9600 -- DOS FILE BUFFERS (MAXFILES 3)
BD00 - RWTS main entry
- call with AY pointing at IOB
Input/Output Control Block
OFFSET DESCRIPTION
$00 Table Type (must be 1)
$01 Slot Number times 0x10
$02 Drive Number ($01 or $02)
$03 Volume Number ($00 matches any volume)
$04 Track Number
$05 Sector Number
$06/$07 Address (lo/hi) of Device Characteristics Table
$08/$09 Address (lo/hi) of 256 byte buffer for READ/WRITE
$0A Not Used
$0B byte count for partial sector
$0c Command Code
$00 = SEEK
$01 = READ
$02 = WRITE
$04 = FORMAT
$0d Return Code (if non zero, carry flag should be set)
$00 = no error
$08 = error during initialization
$10 = write protect error
$20 = volume mismatch error
$40 = drive error
$80 = read error (obsolete)
$0e volume number of last access
$0f slot number of last acces * 16
$10 drive number of last access

133
doc/protocol.txt Normal file
View File

@ -0,0 +1,133 @@
TRIVIAL NETWORK DISK PROTOCOL
* "CAPABILITIES REQUEST" is the only message type that should be broadcast. Everything else should be unicast
All fields are in network byte order (lo/hi)
FOR ALL MESSAGES
Offset meaning
$00..$03 signature 'TNDP' (ASCII, high byte clear)
$04 1 byte version ID - current version = 1
$05..$06 2 byte xid (echoed back in response)
FOR ALL RQS
$07 1 byte opcode
$00 = CAPABILITIES REQUEST
$01 = VOLUME CATALOG REQUEST
$02 = READ T/S REQUEST
$03 = WRITE T/S REQUEST
FOR CAPABILITIES REQUEST
No further data
FOR VOLUME CATALOG REQUEST
$08.. requested client system architecture
$00 = all architectures (regardless of architecture)
$64 = C64
$A2 = Apple 2
$09.. requested file system
$00 = Any
$01 = RAW / other
$02 = Apple DOS 3.3
$03 = PRODOS 8
$04 = Apple CPM
$05 = CBM DOS
$0A..$0B Catalogue Offset
For READ/WRITE:
$08..$09 2 byte track #
$0A..$0B 2 byte sector #
$0C..$0D 2 byte sector length (in bytes)
$0E..$4B volume name (null padded 61 bytes)
$4C null byte (i.e. filename can be 61 bytes long, MUST be at least 1 null at the 62nd byte)
FOR WRITE
$4d.. sector data
FOR ALL RESPONSES
$07 1 byte opcode
$80 = CAPABILITIES REQUEST RESPONSE
$81 = VOLUME CATALOG REQUEST RESPONSE
$82 = READ T/S REQUEST RESPONSE
$83 = WRITE T/S REQUEST RESPONSE
$FF = ERROR RESPONSE
FOR CAPABILITIES RESPONSE
$07 Maximum supported protocol version
$08..$1b 19 byte application name
$1c Null byte (so application name is null padded)
$1d number of entries in supported architectures/file systems list (must be >=1, since list should
always contain at least a "any architecture, any file system" entry, even if the count is 0).
$1e.. list of supported architectures/file systems:
supported architecture/file systems lists:
$00 system architecture ID
$01..$02 number of volumes available for this combination of architecture/file system
list should be sorted by architecture ID (in descending order) and file system id (in descending order).
Each architecture list should end with a file system Id of $00 (any) which is the count of all volumes available for
this architecture.
The list of supported architectures should end with an entry for architecture ID $00 (any) which should have a single
file system ID $00 (any) which should have a count of all volumes available for all architectures on this server.
FOR VOLUME CATALOG
$06..$07 Total Catalogue Entries
$08..$09 Catalogue Offset (i.e. how many entries are there in the catalogue before the first entry in this response)
$0a Number of Entries in this response (maximum of 10)
$0b.. the volume catalog entries.
for each entry
$00..$3c volume name (up to 56 chars, null padded)
$37 null byte
$38 system architecture ID
$39 file system ID
$3A..$3B number of tracks
$3C..$3D number of sectors
$3E..$3F sector length (in bytes)
For READ/WRITE:
$04..$05 2 byte track #
$06..$07 2 byte sector #
$06..$07 2 byte sector length (in bytes)
$0A..$49 volume name (null padded 64 bytes)
FOR READ
$4A.. sector data
FOR ERROR
$04..$05 Error Code
$00 = OK
$01 = BROADCAST NOT ALLOWED
Capabilities Request (opcode=00) are the only message types that can be broadcast.
$02 = UNKNOWN OPCODE
The client sent a message with an opcode the server does not understand
$03 = VERSION NOT SUPPORTED
The client sent a message with an protocol version that the server does not support
$04 = ARCHITECTURE NOT SUPPORTED
$05 = FILE SYSTEM NOT SUPPORTED
$06 = INVALID VOLUME NAME
$07 = INVALID TRACK NUMBER
$08 = INVALID SECTOR NUMBER
$09 = INVALID SECTOR LENGTH
$FF = INTERNAL SERVER ERROR
The server suffered an internal error while processing the request
$06..$0b bytes $04..$09 from original request
$0c..$4c error message (null padded 63 bytes)
$4d null byte