| CedarInt.bermuda |
| 28-Oct-87 21:34:07 |

| DiskBoot.loc	18-May-87  8:56:16 PDT |
| MemDebug.loc	 2-Sep-87  9:48:18 PDT |
| RAMDebug.loc	 2-Sep-87  9:45:12 PDT |
| RAMSysB2.loc	25-Sep-87 17:38:43 PDT |

| CPDebug.bermuda |
| LoadIOPSymbols [DiskBoot]; |
| LoadIOPSymbols [RAMSysB2]; |
| LoadIOPSymbols [MemDebug]; |			| symbols for MesaDove.db |
| LoadIOPSymbols [RAMDebug]; |			| symbols for MesaDove.db |

BootIOP [];
SetDataType [word];
WriteIO [80,8000];
SetDataType [byte];
WriteIO [E018,5];
WriteIO [E01F,FF];
LoadIOPCodeOnly [RAMSysB2];
SetDataType [word];

IOP [1, 1]! 870C;				| loaderVirtualMemoryLocation ← 3E02|

IOP [6, 0]! 053C ← 4000;			| prebootSwitches: without PiggyBack Board |
IOP [7, 0]! CS ← C00;				| Get past burdock problems. |
IOP [8, 0]! IP ← 0;				| Get past burdock problems. |

BreakIOP [D40E];				| DisplayInit+C |
ContinueIOP [0];

IOP [3, 0]! DX ← FC00;				| Execute display handler from prom |

BreakIOP [C64A];				| get into DiskInitial (IOPE@Restart)|
ContinueIOP [0];
UnbreakIOP [C64A];				| IOPE@Restart |

BreakIOP [F92];					| StartRam |
ContinueIOP [0];

SetDataType [byte];

BreakIOP [95E4];				| DaybrkCP |
ContinueIOP [0];

IOP [9, 0]! 1734 ← 90;				| ZeroDownNotifyBits+26 |
IOP [0A, 0]! 1735 ← 90;				| Don't let MesaUpDn start the CP (ZeroDownNotifyBits+27)|
IOP [0B, 0]! 1736 ← 90;				| ZeroDownNotifyBits+28 |
IOP [0C, 0]! 1737 ← 90;				| ZeroDownNotifyBits+29 |
IOP [0D, 0]! 1738 ← 90;				| ZeroDownNotifyBits+2A |

BreakIOP [C8D7];				| SystemLoop |
ContinueIOP [0];
UnbreakIOP [C8D7];				| SystemLoop |

Boot [];
LoadNoSymbols [DaybreakInit, 0];		| run initialization code |

Break [4];
Start [0, 0, 0];
UnBreak [4];

Load [Cedar0, 0];
LoadMore [Cedar1, 1];

BreakIOP [E671];				| EndError+7 |
ContinueIOP [0];				| Get past all initialization |
UnbreakIOP [E671];				| EndError+7 |

CP [1, 0]! rhG;
CP [2, 0]! rhMDS;
CP [3, 0]! rhL;
CP [4, 0]! UvChigh;
CP [5, 0]! rhPC;
CP [6, 0]! .ib;
CP [7, 0]! .ibPtr;
CP [9, 0]! rhT;
CP [A, 0]! rhTT;
CP [B, 0]! rhRx;

CP [0, 1]! UvG;
CP [1, 1]! G;
CP [2, 1]! UvL;
CP [3, 1]! L;
CP [4, 1]! UvC;
CP [5, 1]! PC;
CP [6, 1]! UvPCpage;
CP [7, 1]! .pc16;
CP [8, 1]! uT;
CP [9, 1]! T;
CP [A, 1]! TT;
CP [B, 1]! Rx;

CP [0, 2]! TOS;
CP [1, 2]! uStack9;
CP [2, 2]! uStack8;
CP [3, 2]! uStack7;
CP [4, 2]! uStack6;
CP [5, 2]! uStack5;
CP [6, 2]! uStack4;
CP [7, 2]! uStack3;
CP [8, 2]! uStack2;
CP [9, 2]! .stackP;

| special germ mumbo-jumbo |

CP [10, 2]! transferCount ← 2C;		| pages in the germ (approx) |
CP [11, 2]! topPage ← 1B80;		| 4MB == magic! (first vacant page) |

Break [looper];
Start [mapGerm, mapGerm, 0];
UnBreak [looper];

CP [13, 1]! rE ← 3e03;			| shift germ by one page |

CP [16, 0]! .map 3e02 ← 8004;		| swap this special(?) page |
CP [17, 0]! .map 200 ← d31f;		| swap this special(?) page |
CP [18, 0]! .map 1b53 ← 60;		| swap this special(?) page |
CP [1B, 0]! .mv 3e0200;

Break [vswapdone];
Continue [0];
UnBreak [vswapdone];

| set request stuff |

CP [1E, 0]! .mv 3e02f0;			| action ← 0 |
CP [1F, 0]! .mv 3e02f1 ← 5;		| device ← 5 |
CP [20, 0]! .mv 3e02f2;			| ordinal ← 0 |
CP [21, 0]! .mv 3e02f3 ← A80;		| bootfile ← A80 (5200'b) |
CP [22, 0]! .mv 3e02f4;			| net ← 0 |
CP [23, 0]! .mv 3e02f5;			| host ← 0 |

| begin emulator stuff |

CP [9, 2]! .stackP;			| ← 0 |

Break [MInt0];
Break [MInt1];
Break [IntReturns];
Break [ReadAndClearIOPBits];
Break [LastChance];

Start [Germ, Germ, 0];
UnBreak [LastChance];

BreakIOP [C92B];			| SYSTEMIDLE |
ContinueIOP [0];			| process i/o requests |

CP [D, 0]! uWDC;
CP [E, 0]! uWP;
CP [F, 0]! uWW;
CP [10, 0]! rInt;
CP [11, 0]! rhInt;