BitWiz
Experienced Member
I am writing down these questions as I read Doug Ingram's OS/8 device driver reference tome (deep respect intended).
Doug - Thank you for this very informative and useful document. I plan on preserving it for future reference.
If the data field is set to the current data field before the call to the handler, the data field passed in Function Control word allows for the data to be read from or written to a different field than that of the data field of the calling program?
I think this is answered with the following statement: "The next argument (BUFFER) is the 12 bit pointer to the transfer buffer. This combined with bits 6-8 in the FCB gives a 15 bit address specifying anywhere in memory."
On page 9 it says: "The word after the starting block is where the handler will return if there is an error. In the case of an error the AC will be positive if the end of file was encountered and negative if there was a fatal error."
By end of file do you mean end of device? Since this command is low level block oriented and not file oriented I/O.
Also on page 9 it says: "On a normal return from a device handler the AC is zero and the Data Field is restored to its calling value which is the same as the instruction field."
When calling OS/8 device drivers, is it required that the data field and instruction fields be the same?
How does OS/8 know whether there is a system header on the drive and therefore where the directory is?
Do all OS/8 block devices have the same size directory (number of entries).
Is the directory structure documented in the OS/8 handbook?
If I run BUILD and create a bootable RX02 disk with a zero directory. And then copy CCL.SV and then DIRECT.SV (and then some other utilities) when I boot off of the floppy trying to do a DIR hangs the computer. However, if I copy DIRECT.SV and then CCL.SV everything seems to work fine.
Do you guys have any idea why this is happening? My thought was to put CCL as close to the beginning of the disk to reduce seeking and command load times.
Here is the exact process I used to create the failure:
.RU SYS BUILD
$PR
BAT : *BAT
KL8E: *TTY
LPSV: *LPT
RK8E: *SYS RKA0 RKB0
RK05: *RKA0 *RKB0 *RKA1 *RKB1 RKA2 RKB2 RKA3 RKB3
RX02: *RXA0 *RXA1
TD8A: *DTA0 *DTA1
RL0 : *RL0A *RL0B
DSK=RK8E:SYS
$UN KL8E
$UN RK8E
$UN RK05
$UN TD8A
$UN RL0
$PR
BAT : *BAT
LPSV: *LPT
RX02: *RXA0 *RXA1
DSK=RK8E:SYS
$LO SDSKNS
$LO RX02SY
$LO KL8E.DV
$IN KL8E:TTY
$IN RX02:SYS,RXA0-1
$IN SDNS:SDA0-3,SDB0-3
$DSK=RX02:SYS
$PR
BAT : *BAT
LPSV: *LPT
RX02: *RXA0 *RXA1
SDNS: *SDA0 *SDB0 *SDA1 *SDB1 *SDA2 *SDB2 *SDA3 *SDB3
RX02: *SYS
KL8E: *TTY
DSK=RX02:SYS
$BOOT
WRITE ZERO DIRECT?Y
SYS BUILT
(boot from floppy)
.DIR
NO CCL!
(boot from serial disk)
.R FOTP
*RXA0:<CCL.SV
*RXA0:<DIRECT.SV
*RXA0:<FOTP.SV
*RXA0:<DIRECT.SV
*RXA0:<PIP.SV
*^C
.DIR RXA0BEHIR)
CCL .SV 0070 31 FOTP .SV 0136 8 <Empty> 0161 875
DIRECT.SV 0127 7 PIP .SV 0146 11
4 Files in 57 Blocks - 875 Free blocks
(boot from RX02)
.
.DIR (the system hangs here)
I changed the copy order to be as follows and everything works:
DIRECT.SV 0070 7 FOTP .SV 0136 8 <Empty> 0161 875
CCL .SV 0077 31 PIP .SV 0146 11
Doug - Thank you for this very informative and useful document. I plan on preserving it for future reference.
If the data field is set to the current data field before the call to the handler, the data field passed in Function Control word allows for the data to be read from or written to a different field than that of the data field of the calling program?
I think this is answered with the following statement: "The next argument (BUFFER) is the 12 bit pointer to the transfer buffer. This combined with bits 6-8 in the FCB gives a 15 bit address specifying anywhere in memory."
On page 9 it says: "The word after the starting block is where the handler will return if there is an error. In the case of an error the AC will be positive if the end of file was encountered and negative if there was a fatal error."
By end of file do you mean end of device? Since this command is low level block oriented and not file oriented I/O.
Also on page 9 it says: "On a normal return from a device handler the AC is zero and the Data Field is restored to its calling value which is the same as the instruction field."
When calling OS/8 device drivers, is it required that the data field and instruction fields be the same?
How does OS/8 know whether there is a system header on the drive and therefore where the directory is?
Do all OS/8 block devices have the same size directory (number of entries).
Is the directory structure documented in the OS/8 handbook?
If I run BUILD and create a bootable RX02 disk with a zero directory. And then copy CCL.SV and then DIRECT.SV (and then some other utilities) when I boot off of the floppy trying to do a DIR hangs the computer. However, if I copy DIRECT.SV and then CCL.SV everything seems to work fine.
Do you guys have any idea why this is happening? My thought was to put CCL as close to the beginning of the disk to reduce seeking and command load times.
Here is the exact process I used to create the failure:
.RU SYS BUILD
$PR
BAT : *BAT
KL8E: *TTY
LPSV: *LPT
RK8E: *SYS RKA0 RKB0
RK05: *RKA0 *RKB0 *RKA1 *RKB1 RKA2 RKB2 RKA3 RKB3
RX02: *RXA0 *RXA1
TD8A: *DTA0 *DTA1
RL0 : *RL0A *RL0B
DSK=RK8E:SYS
$UN KL8E
$UN RK8E
$UN RK05
$UN TD8A
$UN RL0
$PR
BAT : *BAT
LPSV: *LPT
RX02: *RXA0 *RXA1
DSK=RK8E:SYS
$LO SDSKNS
$LO RX02SY
$LO KL8E.DV
$IN KL8E:TTY
$IN RX02:SYS,RXA0-1
$IN SDNS:SDA0-3,SDB0-3
$DSK=RX02:SYS
$PR
BAT : *BAT
LPSV: *LPT
RX02: *RXA0 *RXA1
SDNS: *SDA0 *SDB0 *SDA1 *SDB1 *SDA2 *SDB2 *SDA3 *SDB3
RX02: *SYS
KL8E: *TTY
DSK=RX02:SYS
$BOOT
WRITE ZERO DIRECT?Y
SYS BUILT
(boot from floppy)
.DIR
NO CCL!
(boot from serial disk)
.R FOTP
*RXA0:<CCL.SV
*RXA0:<DIRECT.SV
*RXA0:<FOTP.SV
*RXA0:<DIRECT.SV
*RXA0:<PIP.SV
*^C
.DIR RXA0BEHIR)
CCL .SV 0070 31 FOTP .SV 0136 8 <Empty> 0161 875
DIRECT.SV 0127 7 PIP .SV 0146 11
4 Files in 57 Blocks - 875 Free blocks
(boot from RX02)
.
.DIR (the system hangs here)
I changed the copy order to be as follows and everything works:
DIRECT.SV 0070 7 FOTP .SV 0136 8 <Empty> 0161 875
CCL .SV 0077 31 PIP .SV 0146 11