elks-enhanced
public
Read
Owner: themaster
Branch: master
Commits: 6893
Updated: 2026-04-19 00:15
Git CLI clone URL
git clone https://www.xt-emporium.com/git/elks-enhanced.git
Fullscreen desktop URL
Code
Commits
History
Branches
Bug Reports
Discussions
Compare
Settings
elks-enhanced
/
Documentation
/
text
/
porting-guide.txt
File editor
ELKS Porting Guide ================== 26 Oct 2025 - Rev 5 ghaerr Platforms (target) ------------------------------------------------- IBM PC/XT/AT Personal Computer (CONFIG_ARCH_IBMPC) System 256K RAM minimum 64K PC ROM BIOS 8259 PIC 8253/8254 PIT, speaker EGA/MDA color/mono screen 6845 CRTC RAM fast video text BIOS INT 10h text display Keyboard 8042 keyboard controller, LEDs BIOS IRQ 1 interrupt scancode keyboard BIOS INT 16h polled keyboard Disk Filesystem BIOS INT 13h Floppy/Hard Disk Serial 8250/16450/16550 UART Ethernet NE2K WD8003 8018X Architecture (CONFIG_ARCH_8018X) Advantech SNMP-1000B (advtech) System MCU RDC R8810-G (8018XEB) 512K RAM FLASH PIC PIT Serial NE2K Ethernet Orckit OR556 (or556) System CPU Intel 80188EB-20 @ 16Mhz 128K RAM on LCS pin 512K FLASH on UCS pin PIC PIT Serial NEC PC-9801 Personal Computer (CONFIG_ARCH_PC98) System 640K RAM 8259 PIC 8253 PIT Keyboard 8251 keyboard controller BIOS INT 18h polled keyboard Disk Filesystem BIOS INT 1Bh Floppy/Hard Disk(SCSI/IDE) SIBO (discontinued) ELKS PC Devices Source file ------------------------------------------- ----------- Device port and IRQ addresses elks/include/arch/ports.h Kernel text, data, rom segments elks/include/config.h System capabilities byte (SYS_CAPS) elks/include/config.h 8259 Programmable Interrupt Controller (PIC) elks/arch/i86/kernel/irq-8259.c Cascade IRQ 0-7 and IRQ 8-15 seperately elks/include/config.h 8253/8254 Programmable Interval Timer (PIT) elks/arch/i86/kernel/ 100 HZ timer 0 on IRQ 0 timer-8254.c TIMER_CMDS_PORT 0x43 TIMER_DATA_PORT 0x40 Screen and Keyboard elks/arch/i86/drivers/char/ Direct Console -------------- Direct Console using 6845 CRT Controller console-direct.c hw cursor, display page console-direct.c BDA:0x49 VID_MODE (7=MDA for video seg, force 1 console) BDA:0x4A VID_COLS 25 VID_LINES BDA:0x4C VID_PAGE_SIZE BDA:0x50 VID_CURSOR_X BDA:0x51 VID_CURSOR_Y BDA:0x63 CRTC_PORT (6845 CRTC) BDA:0xA8+2 VID_VGA_TABLE BIOS IRQ 1 interrupt keyboard kbd-scancode.c 8042 keyboard controller, LEDs kbd-scancode.c PC speaker timer 2 (bell chime) elks/arch/i86/drivers/char/bell-8254.c SPEAKER_PORT 0x61 TIMER_CMDS_PORT 0x43 TIMER2_DATA_PORT 0x42 BIOS Console ------------ BIOS Console using BIOS only console-bios.c SETUP_VID_COLS setupb(7) SETUP_VID_LINES 25 BDA:0x49 VID_MODE (7=MDA, force 1 console) All INT 10h and INT 16h BIOS Console routines console-bios-asm.S INT 16h AH=01h Poll kbd INT 16h AH=00h Read kbd INT 10h AH=02h Set cursor position INT 10h AH=03h Get cursor position INT 10h AH=05h Set active page INT 10h AH=06h Scroll active page up INT 10h AH=07h Scroll acrive page down INT 10h AH=09h Write character and attribute Polling keyboard using kernel timer callback kbd-poll.c Conio API using BIOS INT 16h conio-bios.S INT 16h AH=01h Poll kbd INT 16h AH=00h Read kbd PC speaker timer 2 (bell chime) elks/arch/i86/drivers/char/bell-8254.c SPEAKER_PORT 0x61 TIMER_CMDS_PORT 0x43 TIMER2_DATA_PORT 0x42 Headless Console (BIOS or serial port I/O using conio API) ---------------- Headless Console using arch-neutral conio API console-headless.c Polling keyboard using kernel timer callback kbd-poll.c Conio API using BIOS INT 16h conio-bios.S INT 16h AH=01h Poll kbd INT 16h AH=00h Read kbd INT 10h AH=0Eh Write text teletype mode Conio API using hw serial UART conio-8081x.c coninit() initialize serial port conpoll() return nonzero character if received conout(c) output character to serial 8250 Serial (UART) elks/arch/i86/drivers/char/serial.c Disk elks/arch/i86/drivers/block/ BIOS INT 13h FD/HD disk driver bioshd.c OUTB 03F2h - Floppy disk controller IDE/ATA drive query idequery.c Ethernet elks/arch/i86/drivers/net/ NE2K ne2k.c, ne2k-asm.S WD8003 wd.c Other 8237 DMA controller (unused) elks/kernel/dma.c ELKS Non-device I/O Ports Used ------------------------------------------- OUTB 80h - I/O delay elks/include/arch/io.h OUTB CFh - Compaq Deskpro high speed elks/arch/i86/system.c CONFIG_COMPAQ_FAST BIOS Services Required for PC target Config setting/Where used ------------------------------------------- --------------------------------- INT 10h AH=02h Set Cursor CONFIG_CONSOLE_BIOS INT 10h AH=03h Get Cursor CONFIG_CONSOLE_BIOS INT 10h AH=05h Select active page CONFIG_CONSOLE_BIOS INT 10h AH=06h Scroll up CONFIG_CONSOLE_BIOS INT 10h AH=07h Scroll up CONFIG_CONSOLE_BIOS INT 10h AH=09h Write character at cursor CONFIG_CONSOLE_BIOS INT 10h AH=0Eh Write teletype current page CONFIG_CONSOLE_HEADLESS boot_sect.S, setup.S, conio-bios.S INT 10h AH=0Fh Get video mode CONFIG_ARCH_IBMPC, setup.S INT 12h Get memory in kilobytes boot_sect.S, setup.S INT 13h AH=00h Reset disk system CONFIG_BLK_DEV_BIOS, boot_sect.S INT 13h AH=02h Read disk sector CONFIG_BLK_DEV_BIOS, boot_sect.S INT 13h AH=03h Write disk sector CONFIG_BLK_DEV_BIOS INT 13h AH=08h Get drive parms CONFIG_BLK_DEV_BIOS INT 16h AH=00h Wait and read keyboard char CONFIG_CONSOLE_HEADLESS boot_sect.S, conio-bios.S INT 16h AH=01h Peek keyboard char CONFIG_CONSOLE_HEADLESS, conio-bios.S
Commit message
This repository is read-only for this account.
Repository snapshot
Current branch
master
Visibility
public
Your access
Read
Remote
Configured
File activity
View file history