Replies: 2 comments
-
Hello @JDat, Thanks for your interesting ELKS. There should be a straightforward path to getting ELKS running on GRiD. I don't suggest worrying yet about exactly how to create a new "platform" in ELKS, but first get the various devices working an a basic ELKS porting running, then the platform can be arranged. You can start in elks/arch/i86/kernel, where the IRQ, and TIMER devices are coded. These have names like irq-8018x.c and timer-8018x.c. You'll want to create new versions, perhaps irq-grid.c, etc. You can define a new "architecture" like CONFIG_ARCH_GRID in .config, which will then allow you to change elks/arch/i86/kernel/Makefile to include your devices rather than 8018X, etc. You may want to add a new section for CONFIG_ARCH_GRID in include/linuxmt/config.h. The console code is in elks/arch/i86/drivers/char, and bubble memory block device driver would go in ../block. Take a look at these and we can continue discussing the port. You'll want to understand how ELKS operates using the target-specific code mentioned above, and what problems there might be. There will also likely be special consideration about boot, but I don't know enough about GRiD to get into discussion that yet.
Yes, there might be, but I suggest getting something running before doing all that. Thank you! |
Beta Was this translation helpful? Give feedback.
-
Wow! That was really fast replay! Thank you very much! I am just a beginner in C and Linux/ELKS kernel stuff. That mean I am making lot of mess in C code. Never compiled Linux kernet. Only using Linux as desktop OS. I have following idea: I will experiment with kernel and do hardcore patching in 8018x or PC-98 without git pull. Maybe I'll simply fork ELKS and do experiments. When I'll get something working, we can discuss how to integrate my patches into production ELKS. I'll start with sector read from bubble/FDD, because not yet understand all details. So far I can execute only 2 Kbytes of my own ASM code. Than I'll try to customize kernel according to memory layout for GRiD and load it into RAM. I am not planning to use CCPROM API. I'll disable original timer interrupt. Maybe I'll use CCPROM API for showing text on screen. This is really slow and long process because I also need to continue hardware research for GRiD. Including PAL IC reversing, schematics, disassembling CCPROM code, Keyboard controller code , external FDD controller code. I hope, that on one day I can get ELKS on GRiD. Some information about GRiD hardware. Just for fun and curiosity. Not published before outside GRiD community: GRiD have 8086 CPU and 8087 FPU @ 5 MHz. GRiD also have following peripheral devices: There is no timer 8253/8254, but IRQ happens regularly from video hadware after every line is drawn on screen. This happen with ~16.4 kHz. CCPROM - It is like BIOS for IBM XT, but... Don't call it BIOS for GRiD Compass, because BIOS is for IBM PC! GRiD Inc. called it CP or CCPROM. CCPROM is 16 kBytes. Boot process happens in following: There are available lot of API calls. It is organizes as jump table. You can so call far FFFE:xxxx to access API. Memory layout: I/O address space: int8087 EQU 0 |
Beta Was this translation helpful? Give feedback.
-
How to add another platform?
I want to try port ELKS on GRiD Compass 1101, 1129, 1131.
I have some hardware information regarding GRiD Compass.
There is d8254 PIC but on different I/O ports (0x00 and 0x02). IRQs by default are mapped in INT20h - INT27h. I can edit ports.h to fix it.
Instead of PIT Compass have "screen line IRQ" (16 kHz). This looks like some editing in arch and software logic.
Need to write bubble memory and GPiB FDD/HDD drivers, but have general idea how it all works on hardware level/protocol. Serial port and modem is also just another driver writing. Got an idea how to write these.
Local console (screen and keyboard)? Also have some information how it works. This can be done via CCPROM (BIOS for Compass) API or directly by accessing hardware.
So far I can not understand how was added 801xx and PC-98.
How to add another platform correctly? Looks like there is lot of editing, including config/make files...
Beta Was this translation helpful? Give feedback.
All reactions