To Run the Emulator

Best to use TENBUG not BSOD. BSOD was written to replace tenbug, back when tenbug would not run on the emulator.

When the emulator starts, it initializes the Opcode Map, but does not initialize any hardware. This means that before you can run any instructions, you must do a POWER ON RESET. Normally the real VME10 would have done a POR when powered up. The POR will reset the hardware, and cause the Internal ROM (either TENBUG or BSOD) to run and initilize the SCM.

The Emulator does not do an Automatic POR. This gives the user a chance to do things, like plug or unplug cards. Add memory. Load a different ROM than the default. Load a code file. 

NOTE - TENbug and the BSOD rom does many things that are neccessary, like initialize the SCM, Unswap the ROM, configure IO devices.  It is best to run the Tenbug or the BSOD rom before loading other code (unless you are capable of writting your own initialization code). The BSOD rom when done, simply does a BRA *. When Tenbug is done initializing, issues a prompt, and allow you to select which IO device is the console. Tenbug 2.1 waits for any character typed on an IO device and chooses the first that a  character is input. Tenbug 2.2 requires a cntrl-C as the first character to see the MVME400 cards.

Failing to do a POR and correctly initialize the SCM, will most likely cause the emulator to either encounter an internal error and/or the CPU may Double bus fault (HALT). 

The TENBUG and BSOD ROM, also has support routines that allow the Motorola IPL.SY boot loader and the unix loader to do its thing.

If you want to do a POR without transfering control to the reset routine, pointed to by the reset vector, use the debugger's POR command. The debugger's POR command does a POR and then STOPs at the PC pointed to be the reset vector. NO program is executed until you use another command to do so.


HOWTO add qualifier to the VME10 emuator.

The Vme10 emulator saves its settings in the windows registry, in a key called VMES10 in the key Sofware/VB and VBA Program Settings/.  (windows 98)

If you want, you can add a qualifier to the KEY. The value on the Command line is processed to remove everything that might look like a drag-n-drop subject (automation VERB - SUBJECT). This command line value is concatenated with the key VMES10 to make VMES10XXXXXXXX, where XXXXXXXX is up to 8 ALPHA characters. This makes the VME10 store different registry enties for different configurations.

Edit the PIF or LNK file to add a qualifier to the Command line. 

/applicationPath/VMES10.exe XXXXXXXX

if XXXXXXXX is VDOS44 then the key is VMES10VDOS44


UNIX vs VERSADOS vs CPM

each OS sets different values for things like the RTC. It is best to set a qualifier for the emulator so it can keep registry entries separate. Add an 8 character ALPHAnumeric string to the command line in the LNK or PIF file used to invoke the emulator.

example..

C:\ApplicationPath\VMES10.EXE UNIX
C:\ApplicationPath\VMES10.EXE CPM
C:\ApplicationPath\VMES10.EXE VERSADOS

Since each qualifier uses separate registry entries, you MUST set defaults for each LNK with a unique Qualifier. 


To Set Defaults

You MUST specify the location of the Internal ROM and the Initial Font. 

Use menu->Boot->defaults->ROM to set default ROM location. Use TENBUG22.S19
Use menu->Boot->defaults->FONT to set default Font location. Use CharRam.S19 or Font.S19

(note - CharRam.S19 is from an application note - Font.S19 is extracted from the TENBUG rom)

After setting the defaults, you should restart the emulator. The Emulator automagically loads the defaults at start up. Beginning with v1.0.6, the emulator now correctly saves the defaults.

You can load the ROM at anytime by using File->Load Rom

You can load the Font at anytime by using File->Load Memory
  (WARNING - Font MUST be org'ed at the address of the Character Generator RAM)


Which Bug to use

You should use the TENBUG 2.2 rom image. The BSOD ROM is obsolete, but still can be used.

Even if you use the BSOD rom, you should, via a menu item, select "Use TENBUG". This causes the emulator to set up the registers during a simulated Boot to be what TENBUG would have set. The simulted BOOT is only for the BSOD rom. DO NOT use the simulated BOOT with TENBUG. Use TENBUG's BO and/or BH command instead. The simulated BOOT will overwrite and corrupt the scratch pad area used by TENBUG, crashing TENBUG.

The BSOD rom supports the routines to allow either a TENBUG or a VMEBUG style boot. The VME10's TENBUG uses ME4U/T15IO. The disk IO is done via a jump table, while the console IO is done via Phoenix Trap 15. The VMEBug option, uses Trap 15 disk IO and Austin Alt Trap 15 console IO. I may remove the VMEbug option. It was there to aid in debug, so i could boot other stuff.

Selecting the menu option USE TENBUG simply causes the emulator to passes values to the IPL.SY program to tell it how to interface with the ROM as though it was the real TENBUG ROM. The BSOD ROM tries to implement the TENBUG stuff needed for the IPL.SY program to work. 


To BOOT distribution CPM floppy disk (CPM68KD1.IMD) 

Start Emulator. This loads the Default ROM and the Character Font.
Open TTY (First MVME400 port, Device 0) by selecting under Menu Devices. Choose TTY or CRT or Net.
Open VME10 Screen/Keyboard.

Open FD02. (use CPM68KD1.IMD - this will open R/O, because it contains compressed sectors)

Push Power On Reset Button. Wait. 


IF USING THE BSOD ROM (use the simulated BOOT)
 After the BSOD message (DONE) appears on the TTY connected to MVME400, Push STOP button. 
 Select Boot disk FD02.
 Select Boot Type (Motorola)
 Select menu BO ( CPM Loader does not process the command line, so, OK to leave blank or filled)

IF USING THE TENBUG ROM (use real boot via TENBUG)
 After you see the TENBUG> prompt, select which IO device for Tenbug to use as its console
  (type Any Character on a device..or for TENBUG 2.2 a cntrl-C is required for the 400 cards)
 At TENBUG 2.2> prompt, type BO 2

You should see the CPMLDR message appear on the VME10 Screen (tenbug) or TTY (bsod). This is due to the fact, that CPMLDR uses TRAP 15 IO to display messages, and the BSOD send mesages to the 400 card and TENBUG uses the SCREEN. Then the CPM prompt should appear on the Screen/Keyboard. CPM.SYS uses its own driver to display message on the Screen/keyboard.

The VME10's CPM BIOS only supports VME10 Floppies and VME10 HDs. The Floppies MUST be inserted (opened) in the FD0x drives, and the HDs MUST be inserted (opened) in the HD0x drives. The RWIN disk controller can only access IMD Floppies, and RAW HDs.


To BOOT CPM hard disk (VME105MB.DSK) (contains distribution CPM for VME10, but with IOBYTE implemented)

Start Emulator. This loads the Default ROM and the Character Font.
Open TTY (First MVME400 port, Device 0) by selecting under Menu Devices.
Open VME10 Screen/Keyboard.
Open HD00. (use VME105MB.DSK - this will open R/W)
Push Power On Reset Button. Wait. 

IF USING THE BSOD ROM (use the simulated BOOT)
 After the BSOD message (DONE) appears on the TTY, Push STOP button. 
 Select Boot disk HD00.
 Select Boot Type (Motorola)
 Select menu BO (CPM Loader does not process the command line, so, OK to leave blank or filled)

IF USING THE TENBUG ROM (use real boot via TENBUG)
 After you see the TENBUG> prompt, select which IO device for Tenbug to use as its console
  (type Any Character on a device..or for TENBUG 2.2 a cntrl-C is required for the 400 cards)
 At TENBUG 2.2> prompt, type BO

You should see the CPMLDR message appear on the VME10 Screen (tenbug) or TTY (bsod). This is due to the fact, that CPMLDR uses TRAP 15 IO to display messages and the BSOD send mesages to the 400 card and TENBUG uses the SCREEN.

Next, you should see the CPM prompt (on the TTY). This is because the IOBYTE is implemented in the VME10's BIOS on the HD. Initially IOBYTE is set to a 400 card, CON:=TTY:. The Screen keyboard is CON:=UC1:

The VME10's BIOS only supports VME10 Floppies and VME10 HDs. The Floppies MUST be inserted (opened) in the FD0x drives, and the HDs MUST be inserted (opened) in the HD0x drives. The RWIN disk controller can only access IMD Floppies, and RAW HDs.

To use Screen/Keyboard - STAT CON:=UC1:

To switch back to TTY - STAT CON:=TTY:

To use LPT: - STAT LST:=LPT: (must also open LPT via Devices Menu, and set ONLINE)
To use UL1: - STAT LST:=UL1: (must also open UL1 via Devices Menu, and set ONLINE)


To BOOT CPM hard disk with FAKE bios (CPM5mbHiTPA.DSK) 

The Fake BIOS uses a special emulator only, disk controller that can access many types of disks. This disk controller can access any supported type of disk in any drive. It auto blocks and deblocks. 

 The CPM BIOS auto detects the disk types and sets the DPBs appropriately. 

Start Emulator. This loads the Default ROM and the Character Font.
Open HD00. (use CPM5mbHiTPA.DSK - this will open R/W)
Open TTY (First MVME400 port, Device 0) by selecting under Menu Devices.
 (if you use the BSOD rom, there's no need for Screen/Keyboard, it is NOT used, there is no driver in the BIOS)
If you use TENBUG, then you must also open the screen/keyboard, since tenbug WILL use the screen

Push Power On Reset Button. Wait. 

IF USING THE BSOD ROM (use the simulated BOOT)
 After the BSOD message appears on the TTY, Push STOP button. 
 Select Boot disk HD00.
 Select Boot Type (Motorola)
 Select menu BO (CPM Loader does not process the command line, so, OK to leave blank or filled)

IF USING THE TENBUG ROM (use real boot via TENBUG)
 After you see the TENBUG> prompt, select which IO device for Tenbug to use as its console
  (type Any Character on a device..or for TENBUG 2.2 a cntrl-C is required for the 400 cards)
 At TENBUG 2.2> prompt, type BO

You should see the CPMLDR message appear on the VME10 Screen (tenbug) or TTY (bsod). This is due to the fact, that CPMLDR uses TRAP 15 IO to display messages and the BSOD send mesages to the 400 card and TENBUG uses the SCREEN.

Next, you should see CPM prompt (on the TTY). Fake BIOS does not use the vme10's screen.

The Fake BIOS prompts for the TPA size.

H= $180000 - $E00000 (the VMEbus) (this is what you want) 
L=    $B00 - $E00000 (B00 is after the TenBug (BSOD) scratch. You MUST populate the Reserved SCM memory)
V=    $400 -  $60000 (VME10 - overlays Tenbug (BSOD) scratch)
2=    $B00 -  $60000 (standard VME10)
C=    $400 - $E00000 (allows CPMSIM stuff to run. You MUST also populate the Reserved SCM memory)
S=    $B00 -  $15000 (for the CPM15000 S-Rec files)


This CPM's BIOS supports many disk types. You may insert (open) a disk image in any drive. The CPM fake Disk Controller can use any type of disk in any of the drives. 

IOBYTE is supported, but there's NO UC1: (the VME10 Screen/Keyboard driver is not included)

To use LPT: - STAT LST:=LPT: (must also open LPT, Device 8 via Devices Menu)
To use UL1: - STAT LST:=UL1: (must also open UL1, Device 9 via Devices Menu)


To Create a Disk Image.

Menu -> Disks -> Create IMD/RAW IMage
Select disk image type
  CPM uses floppies with 16 128 byte sectors on track 0 and  8 512 byte sectors on other tracks
Click Create button.

This Creates an empty disk image, initialized with the appropriate sector data as defined by Motorola ($4E for HD, and $E9 for FD) You MUST use CPM program INIT to place $E5's in the directory, else the disk wont work with CPM.

  (VersaDOS and unix uses floppies with 16 128 byte sectors on track 0 and 16 256 byte sectors on the other tracks.)

To Use a Disk Image

HD00 as example...
Select Menu -> Disks -> HD00 (if no disk already open for HD00)
Select disk in dialog box.


TO Stop Using a Disk Image.

HD00 as example...
Select Menu -> Disks -> HD00 (if disk already open for HD00, it will be closed)

WARNING - before closing (removing) a disk image, you must do whatever the OS requires for removing disk Media. For CPM, before removing a disk, you MUST do a Cntrl-C to flush the buffers. You should, also, do a Cntrl-C after inserting a new disk (if you did not do, before removing).

It appears that the VME10 CPM bios treats the HD as a removable disk. The Fake bios also treats the HD as a removable disk. 


To Transfer files between different formats of disks (CPM).

Best to use FAKE bios.

NOTE - Types of Disks are predefined and the FAKE bios auto detects the supported types. Only predefined types may be opened. Also, not all predefined types are supported by every OS. CPM's BIOS for the VME10, only supports 5mb, and 96TPI 5.25 floppies. The Fake BIOS supports many formats and the driver auto-Logs the appropriate type. 

SpecTbl:
	dc.l	$00020020,$01000132,dpb5mb,0		* 5mb
	dc.l	$00040020,$01000132,dpb10mb,0		*10mb
	dc.l	$00060020,$01000132,dpb15mb,0		*15mb
*	dc.l	$00060020,$0100033e,dpb40mb,0		*40mb
*	dc.l	$00080020,$01000400,dpb70mb,0		*70mb
	dc.l	$00020008,$02000028,dpb48TPI,1		*48tpi
*	dc.l	$00020008,$02000028,dpbCPM86,1		*48tpi
	dc.l	$00020008,$02000050,dpb96TPI,1		*96tpi
	dc.l	$0001001a,$0080004d,dpb3470,xlt3470	*.25
	dc.l	$00020012,$02000050,dpbPC1440,1		*PC1440
	dc.l	$00010100,$00800200,dpbCS16,0		*CPMSIM16MB

CPM86, 40mb and 70mb disks are commented out in the BIOS, because i dont know the CPM standard to use. 
CPM86 disk conflicts with the 48TPI disk. There's a program to allow transfers from a CPM disk that reprograms the DPB (it might work, have not tried it)


How to reconfigure CPM with FAKE BIOS

Files to rebuild CPM and the CPMLDR are found in USER 5 on the CPM5mbHiTPA.dsk image. 
Use the PUTBOOT found there, not the default one in USER 0. (the default putboot expects an RWIN DC)
Follow standard directions to rebuild. 


How to reconfigure CPM with VME10 BIOS

Follow standard directions. 

However, on disk image, VME105MB.DSK you will find new files for the modified System, in USER 5.

The Modified BIOS uses standard files, except for BIOSA.S, which is modified to support IOBYTE and to login drive C instead of drive A:

You will note that it is a kludge. The Fake bios IOBYTE stuff was simply added to the BIOSA.S file, with existing Bios functions called for everything else, except the MVME400 and MVME410. The 400 and the 410's drivers were left in the BIOS.C source, and are also in the resulting CPM.SYS, but only their initialize code is used. A UC1 output status was added, so that BAT: will work. 


How to Change CPU type

Stop the emulator before changing CPU type. Do NOT change while software is running. This is due to the fact that the CPU type can be changed in the middle of executing microcode. This will ruin the instruction currently executing. Attempts were made to make the change occur between instructions, but is not thoroughly tested.



HOWTO use Hot Patch

Any S-Rec file can be loaded at anytime into memory. If the S-Rec file contains a patch, it is loaded directly into memory. Hot patches are provided to fix the Time Loss in Versados. Versados thinks it is interrupted every 15.625ms, but since the VB runtime can not support periodic events except in 55ms increments, the timer's interrupt service routine can be patched to add 55mm instead of 15.625ms.

You must be certain that the code to be patched is already loaded. This is simple. Just wait for the initial login request, and then apply the patch. 

WARNING - if the CPU is executing the code that is being replaced by the HOT patch, things will go badly. If you STOP in the code being replaced, same bad results.

WARNING.... MAKE SURE THAT YOU APPLY THE RIGHT PATCH.. THE VDOS4.4 PATCH WILL ONLY WORK WITH VDOS 4.4. IT WILL CRASH OTHERS.