{File name: MultiBankStartMesa.mc Last Edited by : Makoto Udagawa 25-Feb-85 11:23:56 Delete MCtl set routine. Makoto Udagawa 22-Feb-85 15:35:52 Add MCtl set routine{+++}. Makoto Udagawa 20-Feb-85 14:46:37 Comment out "Reserve[1,7F];". Makoto Udagawa 29-Jan-85 15:38:12 Modify for smalltalk. murage.pa 1-Feb-84 17:12:57 Fix for MultiBank machine. Amy Fasnacht: 30-Nov-83 14:06:28 Move rhTT out of conditional assembly Amy Fasnacht: 10-Nov-83 16:57:40 Change comments only Amy Fasnacht: 31-Aug-83 9:32:08 Move the IOPage for larger VM Daniels: 24-Jun-83 17:25:54 Get xtFC0 from Mesa.df Amy Fasnacht: June 29, 1982 9:00 AM Add PCtl ← 11 for LSEP Amy Fasnacht: April 27, 1982 11:25 AM Add TCtl ← 1 for mag tape Amy Fasnacht: April 23, 1982 1:40 PM Add assembly configs for MagTapeMesa Johnsson: December 28, 1981 3:53 PM Floppy boot MDS 0 Sandman November 13, 1981 2:33 PM New instruction set Last Edited by Jim Frandeen: November 3, 1981 2:20 PM: change Display CSB for smooth scrolling. Init uWP and uPCCross in InitDLion. Last Edited: By Ev. Neely October 9, 1981 3:56 PM Added Trident Init under switch. Description: Mesa Emulator initialization, Author: R. Johnsson} {Reserve[1,7F];} {Reserve[800,801];for smalltalk} Reserve[0F6F]; Reserve[0F6F]; Reserve[0F78]; Reserve[0F7F,0FFF]; {Kernel} {Assembly Configs: Config# File 0 Mesa.db 1 RavenMesa.db 2 TridentMesa.db 3 TridentRavenMesa.db 4 MagTapeMesa.db 5 TridentMagTapeMesa.db} { - - - - begin - - - -} Set[MyLabel1,0F79]; Set[MyLabel2,0F7A]; Set[MyLabel3,0F7B]; {SetTask[0]; StartAddress[Germ]; MyFix - jmm 24-Oct-83 11:34:06} Noop, c1, at[MyLabel1]; Noop, c2, at[MyLabel2]; Noop, c3, at[MyLabel3]; { - - - - end - - - -} {Normal boot starts at Germ, Floppy boot starts at Germ+1} Germ: TOS ← 0, rhMDS ← 0, CANCELBR[SetMDS,0F], c1, at[Add[GermRumHookup,0]];{for smalltalk} TOS ← 0, rhMDS ← 0, CANCELBR[SetMDS,0F], c1, at[Add[GermRumHookup,1]];{for smalltalk} {Start at Go for Burdock loaded bootfile without germ} Go: TOS ← 2, rhMDS ← 2, CANCELBR[SetMDS,0F], c1; SetMDS: UvMDS ← TOS, c2; IOPCtl ← IOPInMode, c3; uWP ← 0, ClrIntErr, c1; IfGreater[Config, 3, SkipTo[MagTape], ]; IfEqual[Config, 3, SkipTo[Printer], ]; IfEqual[Config, 1, SkipTo[Printer], ]; L ← 41, c2; DCtl ← L LRot0, c3; Noop, c1; L ← 11, c2; PCtl ← L LRot0, c3; SkipTo[DisplayOrPrinterOrMagTape]; Printer! DCtl ← 2, c2; PCtl ← 3, c3; SkipTo[DisplayOrPrinterOrMagTape]; MagTape! DCtl ← 2, c2; TCtl ← 1, c3; DisplayOrPrinterOrMagTape! MoreInit: UvG ← TOS ← 0, c1; UBrkByte ← 0, c2; TT ← uIOPage, c3; rhTT ← IOPageHigh, c1; Noop, c2; Noop, c3; {set all keys up; 2003D thru 20043 ← -1} uXTS ← stackP ← 0, c1; T ← 0FF LShift1, SE ← 1, c2; Q ← 7, c3; KeyLoop: MAR ← [rhTT, IOPage.keyBitsm1+Q], BRANCH[$,KeyDone], c1; uTickCount ← MDR ← L xor ~L, CANCELBR[$,0], c2; Q ← Q - 1, ZeroBr, GOTO[KeyLoop], c3; KeyDone: IfGreater[Config, 1, , SkipTo[ShugartInit]]; IfEqual[Config, 4, SkipTo[ShugartInit],]; PC ← 0+0+1, CANCELBR[$,0], c2; {Trident} uWDC ← PC, c3; {Trident} RCnt ← 0F, c1; {Trident} KCtl ← RCnt LRot12, c2; {Trident} KCmd ← U0400, c3; {Trident} SkipTo[EitherDisk]; ShugartInit! KCtl ← 0, PC ← 0+0+1, CANCELBR[$,0], c2; {SAx000} uWDC ← PC, c3; {SAx000} EitherDisk! MAR ← [rhTT, IOPage.DSCB.fieldCmd+0], c1; MDR ← L{picture off, enable display request}, c2; T ← T + 3{@SD[sBoot]}, c3; LastChance: MAR ← [rhTT, IOPage.DSCB.syncCmd+0], c1; MDR ← L, rhT ← xtFC0 {picture off, enable display request}, c2; uDestLo ← T, YDisp, L ← 0, GOTO[XFER], c3;