This emulation mode attempts to emulate a Luna 88K workstation. Note that these were based on Motorola 88000 processors, not 68000.
NOTE: The Luna 88K emulation mode is not fully working yet. An older OpenBSD/luna88k ramdisk kernel can reach userland and be interacted with, and some framebuffer output can be seen. Newer kernels, however, panic. Most likely, this is due to bugs in the emulator.
IT DOES NOT WORK YET!
These instructions are here mostly for me to remember how to debug/proceed:
Download a RAMDISK kernel:
For 5.4 and below:
gxemul -e luna-88k 0x20000:0x20:bsd.rd
or for the newer ones:
gxemul -e luna-88k bsd.rd
From 6.0 and newer, bugs are triggered (most likely in GXemul):
panic: amap_wipeout: corrupt amap
The 5.9 kernel gets further than 6.0 (reaching userland) when run without graphical framebuffer:
CPU0 is associated to 2 MC88200 CMMUs CPU1 is associated to 2 MC88200 CMMUs CPU2 is associated to 2 MC88200 CMMUs CPU3 is associated to 2 MC88200 CMMUs Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. Copyright (c) 1995-2016 OpenBSD. All rights reserved. http://www.OpenBSD.org OpenBSD 5.9 (RAMDISK) #0: Fri Mar 4 23:48:03 JST 2016 aoyama@rhea.in.nk-home.net:/w1/o/5.9/src/sys/arch/luna88k/compile/RAMDISK real mem = 117440512 (112MB) avail mem = 110456832 (105MB) mainbus0 at root: OMRON LUNA-88K, 25MHz cpu0: M88100 rev 0x3, 2 CMMU cpu0: M88200 (16K) rev 0x9, full Icache cpu0: M88200 (16K) rev 0x9, full Dcache clock0 at mainbus0: MK48T02 le0 at mainbus0: address 00:00:00:00:00:00 le0: 32 receive buffers, 8 transmit buffers sio0 at mainbus0: 7201a siotty0 at sio0 channel 0 (console) ws0 at sio0 channel 1[ luna88k sio dev1 write data: TODO ] wskbd0 at ws0 fb at mainbus0 not configured spc0 at mainbus0 scsibus0 at spc0: 8 targets, initiator 7 spc0: SCSI bus reset spc0: SCSI bus reset spc0: SCSI bus reset spc0: SCSI bus reset spc0: SCSI bus reset spc0: SCSI bus reset spc0: SCSI bus reset spc0: SCSI bus reset spc0: SCSI bus reset spc0: SCSI bus reset spc0: SCSI bus reset spc0: SCSI bus reset spc0: SCSI bus reset spc0: SCSI bus reset boot device: <unknown> root on rd0a swap on rd0b dump on rd0b WARNING: clock lost 281 days -- CHECK AND RESET THE DATE! erase ^?, werase ^W, kill ^U, intr ^C, status ^T Welcome to the OpenBSD/luna88k 5.9 installation program. (I)nstall, (U)pgrade, (A)utoinstall or (S)hell? s # echo $OBSD OpenBSD/luna88k 5.9 #
It seems that some versions of OpenBSD had a tiny bug in the framebuffer scroll up routine, so it does not contain any loads or stores.
Using a breakpoint -p om1_windowmove in both OpenBSD 5.9 and 6.2 indicates that 5.9 must have been optimized too heavily or had a bug; it loops when trying to copy pixels to scroll up the text, but the loop contains "nothing":
s001553b8: 64e70001 subu r7,r7,1 s001553bc: 61270001 addu r9,r7,1 s001553c0: ec4c0004 bcnd.n eq0,r12,0x001553d0 ; <om1_windowmove+0x3b0> s001553c4: 59600000 (d) or r11,r0,0x0 s001553c8: f1a08832 set r13,r0,1<18> s001553cc: f562600d addu r11,r2,r13 s001553d0: 60420004 addu r2,r2,4 s001553d4: eda9fff9 bcnd.n ne0,r9,0x001553b8 ; <om1_windowmove+0x398> s001553d8: 616b0004 (d) addu r11,r11,4 s001553b8: 64e70001 subu r7,r7,1 ...
compared to what it looks like in 6.2:
s001547a4: 64e70001 subu r7,r7,1 s001547a8: 61270001 addu r9,r7,1 s001547ac: 60420004 addu r2,r2,4 s001547b0: eda9fffa bcnd.n ne0,r9,0x00154798 ; <om1_windowmove+0x398> s001547b4: 616b0004 (d) addu r11,r11,4 s00154798: edac003e bcnd.n ne0,r12,0x00154890 ; <om1_windowmove+0x490> s0015479c: f1208832 (d) set r9,r0,1<18> s00154890: f5021409 ld r8,r2,r9 ; [0xb10c958c] s00154894: c7ffffc4 br.n 0x001547a4 ; <om1_windowmove+0x3a4> s00154898: f500240b (d) st r8,r0,r11 ; [0xb1087f8c] s001547a4: 64e70001 subu r7,r7,1
Note the actual loads and stores to video ram (0xb10.....).
Going back all the way to an old 5.4 kernel allows the framebuffer to be used:
gxemul -X -e luna-88k 0x20000:0x20:bsd.rd
The following is not needed in order to experiment with booting OpenBSD, but can be interesting nonetheless: Download https://ftp.eu.openbsd.org/pub/OpenBSD/6.2/luna88k/boot and try
gxemul -v -e luna-88k 0x00700000:0x20:0x00700000:boot