Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
soc:2008:dverkamp:project_plan:start [2008/05/20 06:21] drv basic summary of COMBOOT project |
soc:2008:dverkamp:project_plan:start [2008/07/18 09:40] (current) drv update API status table |
||
---|---|---|---|
Line 13: | Line 13: | ||
==== Outline ==== | ==== Outline ==== | ||
+ | |||
+ | I will implement COMBOOT API support in gPXE. This will require implementing the COMBOOT API functions within gPXE and hooking up the interrupt table (or the protected-mode helper, for COM32) to call the gPXE implementation, setting up real or protected mode depending on whether the image is 16- or 32-bit, then loading and executing the COMBOOT image. | ||
+ | |||
+ | For initial testing, the most basic part of the API will be implemented (INT 20h, terminate program) in order to test the loading and execution of COMBOOT executables. Once this is working (both in 16- and 32-bit mode), the rest of the SYSLINUX API that makes sense in the context of gPXE will be implemented, including the PXELINUX-only functions. | ||
+ | |||
+ | 16-bit COMBOOT executables will require switching to real mode and setting up the interrupt table appropriately. | ||
+ | |||
+ | COM32 executables will additionally require protected-mode setup and the provision of a protected-mode callback to call COMBOOT and BIOS functions. | ||
==== Milestones and Timeline ==== | ==== Milestones and Timeline ==== | ||
+ | * Implement bare minimum COMBOOT API and COMBOOT loading (at the very latest, this should be done by mid-summer, but most likely should be done in a few weeks) | ||
+ | * Improve COM32 helper function to call BIOS functions | ||
+ | * Implement the rest of the COMBOOT API, as time permits | ||
+ | |||
+ | ==== Status ==== | ||
+ | |||
+ | === INT 21h === | ||
+ | |||
+ | ^ AH ^ Description ^ Status ^ Notes ^ | ||
+ | | 00h | Terminate program | Implemented | | | ||
+ | | 01h | Get Key with Echo | Implemented | Extended keys still need work | | ||
+ | | 02h | Write Character | Implemented | No serial yet | | ||
+ | | 04h | Write Character to Serial Port | Implemented | | | ||
+ | | 08h | Get Key without Echo | Implemented | Extended keys still need work | | ||
+ | | 09h | Write DOS String to Console | Implemented | | | ||
+ | | 0Bh | Check Keyboard | Implemented | | | ||
+ | | 30h | Check DOS Version | Implemented | | | ||
+ | | 4Ch | Terminate program | Implemented | | | ||
+ | |||
+ | === INT 22h === | ||
+ | ^ AX ^ Description ^ Status ^ Notes ^ | ||
+ | | 0001h | Get Version | Implemented | | | ||
+ | | 0002h | Write String | Implemented | | | ||
+ | | 0003h | Run command | Implemented | | | ||
+ | | 0004h | Run default command | **Stubbed** | | | ||
+ | | 0005h | Force text mode | Implemented | | | ||
+ | | 0006h | Open file | Implemented | | | ||
+ | | 0007h | Read file | Implemented | | | ||
+ | | 0008h | Close file | Implemented | | | ||
+ | | 0009h | Call PXE Stack | Implemented | | | ||
+ | | 000Ah | Get Derivative-Specific Information | **Stubbed** | | | ||
+ | | 000Bh | Get Serial Console Configuration | **Stubbed** | | | ||
+ | | 000Ch | Perform final cleanup | **Unimplemented** | | | ||
+ | | 000Dh | Cleanup and replace bootstrap code | **Unimplemented** | | | ||
+ | | 000Eh | Get configuration file name | **Stubbed** | | | ||
+ | | 000Fh | Get IPAPPEND strings | **Stubbed** | | | ||
+ | | 0010h | Resolve hostname | Implemented | | | ||
+ | | 0011h | Maximum number of shuffle descriptors | Implemented | | | ||
+ | | 0012h | Cleanup, shuffle and boot | Implemented | | | ||
+ | | 0013h | Idle loop call | Implemented | | | ||
+ | | 0014h | Local boot | **Unimplemented** | | | ||
+ | | 0015h | Get feature flags | Implemented | | | ||
+ | | 0016h | Run kernel image | Implemented | | | ||
+ | | 0017h | Report video mode change | Implemented | | | ||
+ | | 0018h | Query custom font | **Stubbed** | | | ||
+ | | 0019h | Read disk | Won't Implement | | | ||
+ | | 001Ah | Cleanup, shuffle and boot to flat protected mode | **Unimplemented** | | | ||
+ | | 001Bh | Cleanup, shuffle and boot to real mode | **Unimplemented** | | | ||
+ | | 001Ch | Get pointer to auxilliary data vector | Won't Implement | | | ||
+ | | 001Dh | Write auxilliary data vector | Won't Implement | | | ||