Modules 陳陳陳潰 35sec - kernel 35int 35disk 35bios 35buf 35cache - cache-like shell 35beep 35keys 35scr 35sec interface calls 様様様様様様様様様様夕 Magic double word on input : EAX = $EABE CEDA on output : EAX = $35EC 35EC Service select is BX 0000 : installed? call 0001 : allocate memory & read disk from A: to buffer 0002 : B: 0003 : select active buffer for drive A: 0004 : B: 0005 : write changed fields of buffer to A: 0006 : B: 0007 : write whole buffer to A: 0008 : B: 0009 : free memory for buffer 000A : interrupt current operation Installed? call 陳陳陳陳陳陳陳潰 on output: EAX set to magic value DS set to 35sec's CS Other calls 陳陳陳陳陳潰 on input: CL drive number, 1..4 on output: EAX set to magic value BX =0000 command not implemented XNotImpl =0001 can't free memory XFreeErr =0002 memory succesfully freed XFree =0003 already doing something XWorking =0004 attempt to write empty buffer XBufEmpty =0005 bad boot sector XBadBoot =0006 bad buffer used XBadBuffer =0007 not enough XMS XNoMem =0008 incompatible disk XBadForm =0009 R/W succesfully started XOKRW =000A can read boot sector XReadBoot =000B caching started XBufSet =000C caching ended XBufReset 35sec callbacks 様様様様様様様夕 EAX contains magic value EAX = $35EC CA11 BX contains info on event BH = 00 R/W operation done BH = 01 R/W operation done with error BL = 7 6 5 4 3 2 1 0 X - write operation BH = 02 attempt to read from floppy while working carry clear -> return error set -> retry BH = 03 R/W operation error (Not Implemented) 7 6 5 4 3 2 1 0 X - write operation DH/CX sector info 35sec variables - block starts at cs:103h 様様様様様様様様様様様様様様様様様様様様夕 (103h) FailAll BYTE flag: 0 - when drive has asssigned buffer and sector is not in buffer, bypass request to BIOS 1 - fail such request SecSlid0 BYTE Sector sliding for drive 0: SecSlid1 BYTE 1: (106h) Disk BYTE Values of actual sector in R/W operation Head BYTE - need to be shifted right by 2 Cyl BYTE Sec BYTE