The memory map is straightforward:
00000000 - 0001FFFF 128KByte of static RAM 00100000 - 0011FFFF 128K of EPROM 00120000 LANCE base address 00140000 DMAC base address 00160000 SCSI base address 00180000 MFP base address 001A0000 SIO base address 001C0000 - 001C03FF Protected NVRAM 001C0400 - 001C07F7 Unprotected NVRAM 001C07F8 - 001C07FF Clock / calendar registers 001E0000 Status register base address 00200440 1st video buffer space 00200480 2nd video buffer space 00400000 Base of DRAM 007FFFFF End of 4MB DRAM 00BFFFFF End of 8MB DRAM 00FFFFFF End of 12MB DRAM
The monitor ROM includes a number of entry points for functions that can be called from user programs. The current implementation of the console display for Minix uses some of these ROM routines to put text on the graphics screen (the video buffer has no text mode as such, characters are drawn on the overlay plane). For the adventurous, tracing through the ROM code from these entry points can be very helpful when trying to work out how to drive the video buffer:-)
00100400 Monitor cold start (power-up/reset) 00100406 Monitor warm start 0010040C Read character from keyboard into D0 00100412 Output character in D0 to terminal 00100478 Character generator hw/sw initialization 0010047E Output character in D0, asm convention, Wyse subset 00100484 Output character from stack, 'C' convention, Wyse subset 0010048A Output character in D0, asm convention, raw 00100490 Console initialization 00100496 Read input status, D0/Z bit HI = not ready 0010049C Read input data, D0 = raw console input 001004A2 Read output status, D1/Z bit HI = not ready 001004A8 D1 = raw console input 001004AE Output character in D0 to console 001004B4 Line drawing, asm convention 001004BA Line drawing, 'C' convention 001004C0 Read 4 pixels (32 bits), asm convention 001004C6 Write 4 pixels (32 bits), asm convention 001004CC Check & init the video buffer, clears the screen