1 ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2 ; 3 ; D O R A D O B a s e B o a r d D e b u g g e r 4 ; 5 ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 6 7 ; filed on DoradoBaseDebug.masm 8 ; E. McCreight 9 ; last modified December 7, 1981 10:46 AM 10 11 .EXPORT PacifyWatchdog,SetProblem,ClearProblem 12 .EXPORT CallPtr 13 14 .IMPORT PowerUpMinus5And12,PowerUpAllSupplies,PowerUpDisk 15 .IMPORT DisconnectMufMan 16 .IMPORT StdClockSpeedH,StdClockSpeedL 17 .IMPORT MidasSetup 18 .IMPORT InitEnvironment,DoAllConversions 19 .IMPORT SetManifold,Problems 20 21 .PREDEFINE "MCS6502PREDEFS.SR" 22 .GETNOLIST "DoradoIO.mdefs" 23 24 ; Reset Pointers 25 FFFC 26 .LOC 0fffc FFFC 02 00 27 .ADR Reset FFFE 00 00 28 .ADR Interrupt 29 30 ; V a r i a b l e s 31 0000 32 .LOC ResetData 33 .SHORT ResetData 34 35 CallPtr: 0000 36 .BLK 2 37 38 WatchdogTemp: 0002 39 .BLK 1 40 41 0000 42 .LOC ResetCode 43 44 Interrupt: 0000 40 45 RTI 46 47 SetProblem: 48 ClearProblem: 0001 60 49 RTS 50 51 ; This is the reset code that gets run whenever the circuit 52 ; breakers are turned on or the little button on the front 53 ; panel is pushed. 54 55 Reset: 0002 D8 56 CLD 57 58 ; Clear all the bytes in page 0. 59 0003 A2 00 60 LDXI 0 0005 A9 00 61 LDAI 0 62 63 ClearMoreBytes: 0007 95 00 64 STAX 0 0009 CA 65 DEX 000A D0 FB 66 BNE ClearMoreBytes 67 68 ; Set up the stack and prepare for interrupts. 69 000C D8 70 CLD 000D A2 FF 71 LDXI 0ff 000F 9A 72 TXS 0010 20 00 00 73 JSR MidasSetup 74 75 ; Set the data direction registers in the I/O ports, after first 76 ; setting some output registers so their critical bits will 77 ; remain high 78 0013 A2 FF 79 LDXI 0ff ; set for all output bits 0015 8E 01 04 80 STX DAC+DDR 0018 8E 81 05 81 STX MCPBusH+DDR 82 001B E8 83 INX ; set for all input bits 001C 8E 03 05 84 STX CPRegL+DDR 001F 8E 01 05 85 STX CPRegH+DDR 86 0022 A2 E0 87 LDXI ISel ; set for mixtures 0024 8E 81 04 88 STX Comparators+DDR 89 0027 A2 C0 90 LDXI MASync+Trap' 0029 8E 03 04 91 STX CPIBus+DDR 92 002C A2 80 93 LDXI LampOff 002E 8E 82 04 94 STX MiscByte 0031 8E 83 04 95 STX MiscByte+DDR 96 0034 A2 F1 97 LDXI 80+MCPABus+MCPStrobe 0036 8E 83 05 98 STX MCPBusL+DDR 99 0039 A2 40 100 LDXI WatchdogDDRValue 003B 8E 01 06 101 STX Watchdog+DDR 102 103 ; Now initialize the voltage, current, and temperature vectors. 104 003E 20 00 00 105 JSR InitEnvironment 106 107 ; Power sequencing. First make sure our own supply is in spec. 108 109 RebootDorado: 0041 20 BA 00 110 JSR PacifyWatchdog 0044 20 00 00 111 JSR DoAllConversions 112 113 CheckVCC: 0047 A2 00 114 LDXI DisconnectMufMan 0049 20 00 00 115 JSR SetManifold ; force IO reset 116 117 ; Now start up the Ecl supplies. 118 004C A2 00 119 LDXI PowerUpAllSupplies 004E 20 00 00 120 JSR SetManifold 121 122 SuppliesAllUp: 123 124 ; Set the standard clock speed 125 0051 A2 00 126 LDXI StdClockSpeedH 0053 20 00 00 127 JSR SetManifold 0056 A2 00 128 LDXI StdClockSpeedL 0058 20 00 00 129 JSR SetManifold 130 131 Continuous: 005B 20 00 00 132 JSR DoAllConversions 133 005E A9 00 134 LDAI 0 0060 8D 00 00 135 STA Problems 136 0063 A9 E0 137 LDAI 0e0,#LowAddrByte ; standard place 0065 85 00 138 STA CallPtr 0067 A9 00 139 LDAI 0e0,#HighAddrByte 0069 85 01 140 STA CallPtr+1 141 142 Spin: 006B AE 00 00 143 LDX Problems ; this allows debugging subroutines, etc. 006E F0 1A 144 BEQ Routine0 0070 CA 145 DEX 0071 F0 20 146 BEQ Routine1 0073 CA 147 DEX 0074 F0 26 148 BEQ Routine2 0076 CA 149 DEX 0077 F0 33 150 BEQ Routine3 151 0079 20 82 00 152 JSR CallIt 007C 20 BA 00 153 JSR PacifyWatchdog 007F 4C 6B 00 154 JMP Spin 155 156 ;Run the subroutine 0,1,2,or 3, if the location in 157 ;Problems is = to a 0,1,2 or 3. if Problems is larger than 158 ;3 than CallPtr and CallPtr+1 should point to 159 ;the subroutine that you are using for debugging. 160 ;The location Problems is preset to E0. 161 162 CallIt: 0082 A5 01 163 LDA CallPtr+1 0084 48 164 PHA 0085 A5 00 165 LDA CallPtr 0087 48 166 PHA 0088 08 167 PHP 0089 40 168 RTI 169 ;Run this routine if Problems is=to a 0 170 ;This routine will Pacify the watchdog timer and return to spin 171 172 Routine0: 008A 20 00 00 173 JSR DoAllConversions 008D 20 BA 00 174 JSR PacifyWatchdog 0090 4C 6B 00 175 JMP Spin 176 177 ;Run this routine if Problems is=to a 1 178 ;This routine will increment the dac from 0 to 256 179 180 Routine1: 0093 EE 00 04 181 INC DAC 0096 20 BA 00 182 JSR PacifyWatchdog 0099 4C 6B 00 183 JMP Spin 184 185 ;Run this routine if Problems is=to a 2 186 ;This routine will turn all of the dac bits on and then off. 187 188 Routine2: 009C A9 00 189 LDAI 0 009E 8D 00 04 190 STA DAC 00A1 A9 FF 191 LDAI 0ff 00A3 8D 00 04 192 STA DAC 00A6 20 BA 00 193 JSR PacifyWatchdog 00A9 4C 6B 00 194 JMP Spin 195 196 ;Run this routine if Problems is=to a 3 197 ;This routine will turn the lite on and if we exit midas the 198 ;watch dog timer should reboot the dorado and turn off the lite 199 200 Routine3: 00AC A9 00 201 LDAI 0 00AE 8D 82 04 202 STA MiscByte 00B1 4C AC 00 203 JMP Routine3 204 205 206 OnceOnly: 00B4 A9 00 207 LDAI 0 00B6 8D 00 00 208 STA Problems 00B9 60 209 RTS 210 211 ; Let the watchdog timer know we're still alive by copying 212 ; WatchdogIn to WatchdogOut every once in a while. 213 214 PacifyWatchdog: 00BA AD 00 06 215 LDA Watchdog 00BD 29 80 216 ANDI WatchdogIn 00BF 6A 217 RORA ; carries WatchdogIn to WatchdogOut 00C0 85 02 218 STA WatchdogTemp 00C2 78 219 SEI 00C3 AD 00 06 220 LDA Watchdog 00C6 29 BF 221 ANDI 0ff-WatchdogOut 00C8 05 02 222 ORA WatchdogTemp 00CA 8D 00 06 223 STA Watchdog 00CD 58 224 CLI 00CE 60 225 RTS 226 227 .END