; ; Bret SROM V2.05 ; ; Stream 3 - Memory test ; srom_3.code: file format binary Disassembly of section .data: 0000000000000000 <.data>: 0: 0f 01 ff 77 hw_mtpr zero,0x10f ; ICM 4: 56 01 ff 77 hw_mtpr zero,0x156 ; PALtemp22 8: 57 01 ff 77 hw_mtpr zero,0x157 ; PALtemp23 c: 26 00 40 d3 bsr ra,0xa8 10: 34 00 40 d3 bsr ra,0xe4 14: d7 00 40 d3 bsr ra,0x374 18: 56 01 21 64 hw_mfpr t0,0x156 ; PALtemp22 1c: 20 17 04 48 sll v0,0x20,v0 20: 00 14 10 44 or v0,0x80,v0 24: 01 04 01 44 or v0,t0,t0 28: 56 01 21 74 hw_mtpr t0,0x156 ; PALtemp22 2c: 0d 0a 7f 22 lda a3,2573 30: 0d 0a 73 26 ldah a3,2573(a3) ; '\r\n\r\n' 34: 5b 07 a0 d3 bsr gp,0x1da4 38: 00 00 7f 22 lda a3,0 3c: 33 17 64 4a sll a3,0x20,a3 40: 42 72 73 22 lda a3,29250(a3) 44: 65 74 73 26 ldah a3,29797(a3) ; 'Bret' 48: 56 07 a0 d3 bsr gp,0x1da4 4c: 55 07 a0 d3 bsr gp,0x1da4 50: 4f 4d 7f 22 lda a3,19791 54: 20 00 73 26 ldah a3,32(a3) 58: 33 17 64 4a sll a3,0x20,a3 5c: 20 53 73 22 lda a3,21280(a3) 60: 52 00 73 26 ldah a3,82(a3) ; ' SROM ' (with NUL byte inside) 64: 4f 07 a0 d3 bsr gp,0x1da4 68: 56 00 7f 22 lda a3,86 ; 'V' 6c: 4d 07 a0 d3 bsr gp,0x1da4 70: 0d 0a 7f 22 lda a3,2573 74: 33 17 64 4a sll a3,0x20,a3 78: 32 2e 73 22 lda a3,11826(a3) 7c: 30 35 73 26 ldah a3,13616(a3) ; '2.05\r\n' 80: 48 07 a0 d3 bsr gp,0x1da4 84: 56 01 31 66 hw_mfpr a1,0x156 ; PALtemp22 88: 91 16 24 4a srl a1,0x20,a1 8c: 39 07 a0 d3 bsr gp,0x1d74 90: 0d 0a 7f 22 lda a3,2573 94: 33 17 64 4a sll a3,0x20,a3 98: 20 4d 73 22 lda a3,19744(a3) 9c: 48 7a 73 26 ldah a3,31304(a3) ; ' MHz\r\n' a0: 40 07 a0 d3 bsr gp,0x1da4 a4: 7e 02 e0 c3 br 0xaa0 a8: 08 00 5f 20 lda t1,8 ac: 16 02 42 74 hw_mtpr t1,0x216 ; DC_MODE b0: df 00 3f 23 lda t11,223 b4: e8 03 a0 d3 bsr gp,0x1058 ; diag_leds(t11) b8: 02 00 5f 20 lda t1,2 bc: 22 17 44 48 sll t1,0x20,t1 c0: 00 4e 42 24 ldah t1,19968(t1) c4: 18 01 42 74 hw_mtpr t1,0x118 ; ICSR c8: 00 00 5f 20 lda t1,0 cc: 17 02 42 74 hw_mtpr t1,0x217 ; MAF_MODE d0: 40 01 ff 67 hw_mfpr zero,0x140 ; PALtemp0 d4: 40 01 ff 67 hw_mfpr zero,0x140 ; PALtemp0 d8: 40 01 ff 67 hw_mfpr zero,0x140 ; PALtemp0 dc: 40 01 ff 67 hw_mfpr zero,0x140 ; PALtemp0 e0: 01 80 fa 6b ret e4: ab 00 c0 d3 bsr sp,0x394 e8: 56 01 00 64 hw_mfpr v0,0x156 ; PALtemp22 ec: c1 30 00 48 extbl v0,0x1,t0 f0: 01 90 20 44 and t0,0x4,t0 f4: 99 d4 3b 44 cmoveq t0,0xde,t11 f8: d9 d4 39 44 cmovne t0,0xce,t11 fc: 01 94 e0 47 mov 0x4,t0 100: 61 31 20 48 insbl t0,0x1,t0 104: 00 04 01 44 or v0,t0,v0 108: 56 01 00 74 hw_mtpr v0,0x156 ; PALtemp22 10c: d2 03 a0 d3 bsr gp,0x1058 ; diag_leds(t11) 110: f9 00 3f 23 lda t11,249 114: 16 04 ff 47 clr t8 118: 76 08 bf 22 lda a5,2166 11c: 35 97 a3 4a sll a5,0x1c,a5 120: 00 04 b5 22 lda a5,1024(a5) 124: 00 94 e0 47 mov 0x4,v0 128: 83 04 c0 d3 bsr sp,0x1338 ; stl_checked(t8, a5, t11) 12c: 00 01 b5 22 lda a5,256(a5) 130: ff ff 00 20 lda v0,-1(v0) 134: fc ff 1f fc bgt v0,0x128 138: 00 20 ae 22 lda a5,8192(s5) 13c: 7e 04 c0 d3 bsr sp,0x1338 ; stl_checked(t8, a5, t11) 140: 40 04 ae 22 lda a5,1088(s5) 144: 7c 04 c0 d3 bsr sp,0x1338 ; stl_checked(t8, a5, t11) 148: c0 00 ae 22 lda a5,192(s5) 14c: 00 ff df 22 lda t8,-256 150: 01 00 d6 26 ldah t8,1(t8) 154: 78 04 c0 d3 bsr sp,0x1338 ; stl_checked(t8, a5, t11) 158: f3 e0 df 22 lda t8,-7949 15c: 05 a1 d6 26 ldah t8,-24315(t8) 160: 36 f6 c1 4a zapnot t8,0xf,t8 164: 00 01 ae 22 lda a5,256(s5) 168: 73 04 c0 d3 bsr sp,0x1338 ; stl_checked(t8, a5, t11) 16c: 00 06 ae 22 lda a5,1536(s5) 170: 08 00 df 22 lda t8,8 174: 00 80 f5 6e hw_ldl/p t9,0(a5) 178: 17 f0 e0 46 and t9,0x7,t9 17c: 01 00 e0 e6 beq t9,0x184 180: 6d 04 c0 d3 bsr sp,0x1338 ; stl_checked(t8, a5, t11) 184: 78 08 bf 22 lda a5,2168 188: 35 97 a3 4a sll a5,0x1c,a5 18c: 00 01 b5 22 lda a5,256(a5) 190: ff ff df 22 lda t8,-1 194: 16 16 de 4a zap t8,0xf0,t8 198: 67 04 c0 d3 bsr sp,0x1338 ; stl_checked(t8, a5, t11) 19c: ef 04 60 d3 bsr t12,0x155c 1a0: 0c 05 60 d3 bsr t12,0x15d4 1a4: 40 42 1f 22 lda a0,16960 1a8: 0f 00 10 26 ldah a0,15(a0) 1ac: 81 04 c0 d3 bsr sp,0x13b4 1b0: 01 80 fa 6b ret ; v0 <- 1 << ((PALtemp23 & 7) + 19), or 0 if PALtemp23&7 is zero 1b4: 57 01 00 64 hw_mfpr v0,0x157 ; PALtemp23 1b8: 00 f0 00 44 and v0,0x7,v0 1bc: 04 00 00 e4 beq v0,0x1d0 1c0: 20 35 00 40 subq v0,0x1,v0 1c4: 19 34 e0 47 mov 0x1,t11 1c8: 20 07 20 4b sll t11,v0,v0 1cc: 20 97 02 48 sll v0,0x14,v0 1d0: 01 80 fe 6b ret zero,(sp),0x1 1d4: d0 00 3f 23 lda t11,208 1d8: 9f 03 a0 d3 bsr gp,0x1058 ; diag_leds(t11) 1dc: 00 00 1f 22 lda a0,0 1e0: 31 37 82 49 sll s3,0x11,a1 1e4: 12 04 ff 47 clr a2 1e8: 16 04 ff 47 clr t8 1ec: 3f 04 c0 d3 bsr sp,0x12ec ; fill_memory(a0, a1, a2, t8) 1f0: f0 ff df d3 bsr sp,0x1b4 1f4: 91 76 00 48 srl v0,0x3,a1 1f8: 3c 04 c0 d3 bsr sp,0x12ec ; fill_memory(a0, a1, a2, t8) 1fc: e8 01 c0 d3 bsr sp,0x9a0 ; fill_memory_with_quirks(a0, a1, a2, s0) 200: 01 80 fa 6b ret ; Initialise Dallas RTC and determine processor speed. ; v0 <- processor clock period in ps. 204: f0 49 1f 22 lda a0,18928 208: 02 00 10 26 ldah a0,2(a0) 20c: 69 04 c0 d3 bsr sp,0x13b4 210: 0c 00 3f 22 lda a1,12 214: 70 00 1f 22 lda a0,112 218: 9e 04 a0 d3 bsr gp,0x1494 21c: 71 00 1f 22 lda a0,113 220: 8c 04 a0 d3 bsr gp,0x1454 224: 0a 00 3f 22 lda a1,10 228: 70 00 1f 22 lda a0,112 22c: 99 04 a0 d3 bsr gp,0x1494 230: 26 00 3f 22 lda a1,38 234: 71 00 1f 22 lda a0,113 238: 96 04 a0 d3 bsr gp,0x1494 23c: 0b 00 3f 22 lda a1,11 240: 70 00 1f 22 lda a0,112 244: 93 04 a0 d3 bsr gp,0x1494 248: 46 00 3f 22 lda a1,70 24c: 71 00 1f 22 lda a0,113 250: 90 04 a0 d3 bsr gp,0x1494 254: 03 14 e8 47 mov 0x40,t2 258: 23 35 60 40 subq t2,0x1,t2 25c: 0a 00 3f 22 lda a1,10 260: 70 00 1f 22 lda a0,112 264: 8b 04 a0 d3 bsr gp,0x1494 268: 71 00 1f 22 lda a0,113 26c: 79 04 a0 d3 bsr gp,0x1454 270: 00 f0 0f 44 and v0,0x7f,v0 274: a0 d5 04 40 cmpeq v0,0x26,v0 278: 04 00 00 f4 bne v0,0x28c 27c: f6 ff 7f fc bgt t2,0x258 280: e9 00 3f 23 lda t11,233 284: 74 03 a0 d3 bsr gp,0x1058 ; diag_leds(t11) 288: 1e 00 e0 c3 br 0x304 28c: 02 14 e8 47 mov 0x40,t1 290: 04 04 ff 47 clr t3 294: 05 04 ff 47 clr t4 298: 0c 00 3f 22 lda a1,12 29c: 70 00 1f 22 lda a0,112 2a0: 7c 04 a0 d3 bsr gp,0x1494 2a4: 71 00 1f 22 lda a0,113 2a8: 6a 04 a0 d3 bsr gp,0x1454 2ac: 10 10 08 44 and v0,0x40,a0 2b0: f9 ff 1f e6 beq a0,0x298 2b4: 22 35 40 40 subq t1,0x1,t1 2b8: a3 19 44 40 cmplt t1,0x20,t2 2bc: 04 00 60 f4 bne t2,0x2d0 2c0: 01 00 1f 22 lda a0,1 2c4: 30 17 04 4a sll a0,0x20,a0 2c8: 0e 02 10 76 hw_mtpr a0,0x20e ; CC_CTL 2cc: f2 ff ff c3 br 0x298 2d0: 00 c0 3f 62 rpcc a1 2d4: 31 f6 21 4a zapnot a1,0xf,a1 2d8: a3 03 25 42 cmpult a1,t4,t2 2dc: 04 04 64 40 addq t2,t3,t3 2e0: 05 04 31 46 mov a1,t4 2e4: ec ff 5f fc bgt t1,0x298 2e8: 24 17 84 48 sll t3,0x20,t3 2ec: 11 04 91 40 addq t3,a1,a1 2f0: 44 29 1f 22 lda a0,10564 2f4: 35 3a 10 26 ldah a0,14901(a0) 2f8: 10 14 04 4e mulq a0,0x20,a0 2fc: cd 03 c0 d3 bsr sp,0x1234 300: 01 80 fb 6b ret zero,(t12),0x1 304: 01 00 5f 20 lda t1,1 308: 22 37 44 48 sll t1,0x21,t1 30c: 15 01 42 74 hw_mtpr t1,0x115 ; HWINT_CLR 310: 01 00 3f 20 lda t0,1 314: 01 00 3f 20 lda t0,1 318: 21 17 24 48 sll t0,0x20,t0 31c: 08 00 df 22 lda t8,8 320: 17 01 f7 66 hw_mfpr t9,0x117 ; SL_RCV 324: fe ff ff f6 bne t9,0x320 328: 0e 02 21 74 hw_mtpr t0,0x20e ; CC_CTL 32c: 17 01 f7 66 hw_mfpr t9,0x117 ; SL_RCV 330: fe ff ff e6 beq t9,0x32c 334: 36 35 c0 42 subq t8,0x1,t8 338: 04 00 c0 e6 beq t8,0x34c 33c: 17 01 f7 66 hw_mfpr t9,0x117 ; SL_RCV 340: fe ff ff f6 bne t9,0x33c 344: 36 35 c0 42 subq t8,0x1,t8 348: f8 ff df f6 bne t8,0x32c 34c: 00 c0 1f 63 rpcc t10 350: 38 f6 01 4b zapnot t10,0xf,t10 354: 80 76 00 4b srl t10,0x3,v0 358: 31 f6 01 48 zapnot v0,0xf,a1 35c: 34 00 1f 22 lda a0,52 360: 40 42 1f 20 lda v0,16960 364: 0f 00 00 24 ldah v0,15(v0) 368: 10 04 10 4c mulq v0,a0,a0 36c: b1 03 c0 d3 bsr sp,0x1234 370: 01 80 fb 6b ret zero,(t12),0x1 374: dd 00 3f 23 lda t11,221 ; 0xdd 378: 37 03 a0 d3 bsr gp,0x1058 ; diag_leds(t11) 37c: a1 ff 7f d3 bsr t12,0x204 ; v0 = clock period in ps, ref. from RTC. 380: 11 04 00 44 mov v0,a1 384: 40 42 1f 22 lda a0,16960 388: 0f 00 10 26 ldah a0,15(a0) 38c: a9 03 c0 d3 bsr sp,0x1234 390: 01 80 fa 6b ret 394: f0 ff 1f 24 ldah v0,-16 398: 0d 16 1c 48 zap v0,0xe0,s4 39c: 74 08 1f 20 lda v0,2164 3a0: 2e 97 03 48 sll v0,0x1c,s5 3a4: 01 80 fe 6b ret zero,(sp),0x1 ; DC - Sizing and initializing the Scache 3a8: dc 00 3f 23 lda t11,220 ; 0xDC 3ac: 2a 03 a0 d3 bsr gp,0x1058 ; diag_leds(t11) 3b0: 00 e0 7f 20 lda t2,-8192 3b4: 01 00 63 24 ldah t2,1(t2) 3b8: a8 90 4d 6c hw_ldq/p t1,168(s4) 3bc: 02 00 43 44 and t1,t2,t1 3c0: 02 00 40 f4 bne t1,0x3cc 3c4: ff 00 3f 23 lda t11,255 3c8: 23 03 a0 d3 bsr gp,0x1058 ; diag_leds(t11) 3cc: 80 b6 41 48 srl t1,0xd,v0 3d0: a3 f3 00 40 cmpult v0,0x7,t2 3d4: 04 00 60 e4 beq t2,0x3e8 3d8: 01 00 60 44 and t2,v0,t0 3dc: 23 37 60 48 sll t2,0x1,t2 3e0: fd ff 3f e4 beq t0,0x3d8 3e4: 22 b7 21 48 sll t0,0xd,t1 3e8: 02 10 3f 20 lda t0,4098 3ec: 03 04 41 44 or t1,t0,t2 3f0: 00 40 ff 63 mb 3f4: a8 90 6d 7c hw_stq/p t2,168(s4) 3f8: 00 40 ff 63 mb 3fc: da 00 3f 23 lda t11,218 ; 0xDA MCHK: ; This isn't used as an actual MCHK entry point -- it's in the middle of the ; cache configuration code. However, if a machine check were to happen, it ; would end up here and proceed to display t11 contents on the LEDs. 400: 15 03 a0 d3 bsr gp,0x1058 ; diag_leds(t11) 404: 40 80 3f 21 lda s0,-32704 408: 01 00 29 25 ldah s0,1(s0) ; s0 = 0x8040: disable Bcache, set EI_ECC and EI_DIS_ERR 40c: 00 40 ff 63 mb 410: 28 91 2d 7d hw_stq/p s0,296(s4) ; BC_CONTROL IPR - Bcache interface 414: 00 40 ff 63 mb 418: 08 04 ff 47 clr t7 41c: 00 40 ee 25 ldah fp,16384(s5) 420: 00 02 af 22 lda a5,512(fp) ; a5 = 87.8000.0200 - GRU CACHE_CNFG 424: 00 80 b5 6c hw_ldl/p t4,0(a5) 428: 12 04 a5 44 mov t4,a2 42c: 65 43 7f 22 lda a3,17253 430: 66 67 73 26 ldah a3,26470(a3) 434: 33 17 64 4a sll a3,0x20,a3 438: 43 61 73 22 lda a3,24899(a3) 43c: 63 68 73 26 ldah a3,26723(a3) ; 'CacheCfg' 440: d0 06 c0 d3 bsr sp,0x1f84 ; print_name_and_quadword_nc(a3, a2) 444: 01 00 9f 21 lda s3,1 448: 01 20 8c 25 ldah s3,8193(s3) 44c: 56 01 31 66 hw_mfpr a1,0x156 ; PALtemp22 450: d1 94 20 4a extll a1,0x4,a1 454: 40 42 1f 22 lda a0,16960 458: 0f 00 10 26 ldah a0,15(a0) 45c: 75 03 c0 d3 bsr sp,0x1234 460: 40 01 00 74 hw_mtpr v0,0x140 ; PALtemp0 464: fa 16 1f 22 lda a0,5882 468: 11 04 00 44 mov v0,a1 46c: 71 03 c0 d3 bsr sp,0x1234 470: 20 37 02 48 sll v0,0x11,v0 474: 09 04 09 44 or v0,s0,s0 478: ee 00 3f 23 lda t11,238 47c: 82 b6 a1 48 srl t4,0xd,t1 480: 02 f0 40 44 and t1,0x7,t1 484: 02 00 40 f4 bne t1,0x490 488: f3 02 a0 d3 bsr gp,0x1058 ; diag_leds(t11) 48c: 56 00 e0 c3 br 0x5e8 490: 08 04 48 44 or t1,t7,t7 494: 82 76 a1 48 srl t4,0xb,t1 498: 02 70 40 44 and t1,0x3,t1 49c: 56 01 00 64 hw_mfpr v0,0x156 ; PALtemp22 4a0: c4 94 00 48 extll v0,0x4,t3 4a4: 04 01 1f 22 lda a0,260 4a8: 30 05 90 40 subq t3,a0,a0 4ac: 21 00 3f 22 lda a1,33 4b0: 60 03 c0 d3 bsr sp,0x1234 4b4: 04 04 00 44 mov v0,t3 4b8: 06 04 ff 47 clr t5 4bc: 12 00 40 e4 beq t1,0x508 4c0: 2f 00 40 e0 blbc t1,0x580 4c4: 82 36 40 48 srl t1,0x1,t1 4c8: 1e 00 40 e0 blbc t1,0x544 4cc: bb cc ff 21 lda fp,-13125 4d0: de ee ef 25 ldah fp,-4386(fp) 4d4: 2f 17 e4 49 sll fp,0x20,fp 4d8: 77 88 df 23 lda sp,-30601 4dc: 9a aa de 27 ldah sp,-21862(sp) 4e0: 3e f6 c1 4b zapnot sp,0xf,sp 4e4: 0f 04 fe 45 or fp,sp,fp 4e8: 44 00 c0 d3 bsr sp,0x5fc 4ec: 7c 7c ff 21 lda fp,31868 4f0: fc fc ef 25 ldah fp,-772(fp) 4f4: 2f 17 e4 49 sll fp,0x20,fp 4f8: 0e 1e ef 21 lda fp,7694(fp) 4fc: 1e 3e ef 25 ldah fp,15902(fp) 500: 3e 00 c0 d3 bsr sp,0x5fc 504: 2c 00 e0 c3 br 0x5b8 508: 99 99 ff 21 lda fp,-26215 50c: 9a aa ef 25 ldah fp,-21862(fp) 510: 2f 17 e4 49 sll fp,0x20,fp 514: 66 77 df 23 lda sp,30566 518: 88 99 de 27 ldah sp,-26232(sp) 51c: 3e f6 c1 4b zapnot sp,0xf,sp 520: 0f 04 fe 45 or fp,sp,fp 524: 35 00 c0 d3 bsr sp,0x5fc 528: 3c 3c ff 21 lda fp,15420 52c: 3c 7c ef 25 ldah fp,31804(fp) 530: 2f 17 e4 49 sll fp,0x20,fp 534: 0e 1e ef 21 lda fp,7694(fp) 538: 3e 3c ef 25 ldah fp,15422(fp) 53c: 2f 00 c0 d3 bsr sp,0x5fc 540: 1d 00 e0 c3 br 0x5b8 544: 99 aa ff 21 lda fp,-21863 548: ab bb ef 25 ldah fp,-17493(fp) 54c: 2f 17 e4 49 sll fp,0x20,fp 550: 66 77 df 23 lda sp,30566 554: 88 99 de 27 ldah sp,-26232(sp) 558: 3e f6 c1 4b zapnot sp,0xf,sp 55c: 0f 04 fe 45 or fp,sp,fp 560: 26 00 c0 d3 bsr sp,0x5fc 564: 3c 7c ff 21 lda fp,31804 568: 7c fc ef 25 ldah fp,-900(fp) 56c: 2f 17 e4 49 sll fp,0x20,fp 570: 0e 1e ef 21 lda fp,7694(fp) 574: 1e 3e ef 25 ldah fp,15902(fp) 578: 20 00 c0 d3 bsr sp,0x5fc 57c: 0e 00 e0 c3 br 0x5b8 580: 99 bb ff 21 lda fp,-17511 584: bc cc ef 25 ldah fp,-13124(fp) 588: 2f 17 e4 49 sll fp,0x20,fp 58c: 77 88 df 23 lda sp,-30601 590: 89 99 de 27 ldah sp,-26231(sp) 594: 3e f6 c1 4b zapnot sp,0xf,sp 598: 0f 04 fe 45 or fp,sp,fp 59c: 17 00 c0 d3 bsr sp,0x5fc 5a0: 3c 7c ff 21 lda fp,31804 5a4: 7c fc ef 25 ldah fp,-900(fp) 5a8: 2f 17 e4 49 sll fp,0x20,fp 5ac: 0e 1c ef 21 lda fp,7182(fp) 5b0: 1e 1e ef 25 ldah fp,7710(fp) 5b4: 11 00 c0 d3 bsr sp,0x5fc 5b8: 11 11 ff 21 lda fp,4369 5bc: 11 11 ef 25 ldah fp,4369(fp) 5c0: 2f 17 e4 49 sll fp,0x20,fp 5c4: 11 11 ef 21 lda fp,4369(fp) 5c8: 11 11 ef 25 ldah fp,4369(fp) 5cc: 0b 00 c0 d3 bsr sp,0x5fc 5d0: 57 01 08 75 hw_mtpr t7,0x157 ; PALtemp23 5d4: 00 10 ee 25 ldah fp,4096(s5) 5d8: 00 80 8f 7d hw_stl/p s3,0(fp) 5dc: 00 40 ff 63 mb 5e0: 2b 00 60 d3 bsr t12,0x690 5e4: 01 80 fa 6b ret 5e8: 00 10 ee 25 ldah fp,4096(s5) 5ec: 00 80 8f 7d hw_stl/p s3,0(fp) 5f0: 00 40 ff 63 mb 5f4: 0a 00 60 d3 bsr t12,0x620 5f8: 01 80 fa 6b ret 5fc: 04 15 bf 20 lda t4,5380 600: 0c 00 a5 24 ldah t4,12(t4) 604: d3 00 e4 49 extbl fp,t3,a3 608: d2 00 a6 48 extbl t4,t5,a2 60c: 33 07 72 4a sll a3,a2,a3 610: 08 04 68 46 or a3,t7,t7 614: 06 34 c0 40 addq t5,0x1,t5 618: 01 80 fe 6b ret zero,(sp),0x1 61c: 8e 02 a0 d3 bsr gp,0x1058 ; diag_leds(t11) 620: 08 04 ff 47 clr t7 624: 00 40 ae 27 ldah gp,16384(s5) 628: 00 02 bd 23 lda gp,512(gp) 62c: 00 80 bd 6f hw_ldl/p gp,0(gp) 630: 9d 96 a0 4b srl gp,0x4,gp 634: 1d f0 a1 47 and gp,0xf,gp 638: 39 97 a0 4b sll gp,0x4,t11 63c: 08 04 28 47 or t11,t7,t7 640: 39 17 a1 4b sll gp,0x8,t11 644: 08 04 28 47 or t11,t7,t7 648: 23 1c 3f 23 lda t11,7203 64c: 39 97 21 4b sll t11,0xc,t11 650: 08 04 28 47 or t11,t7,t7 654: 09 31 20 45 andnot s0,0x1,s0 658: 00 40 ff 63 mb 65c: c8 91 0d 7d hw_stq/p t7,456(s4) 660: 00 40 ff 63 mb 664: 28 91 2d 7d hw_stq/p s0,296(s4) 668: 00 40 ff 63 mb 66c: 00 06 ae 23 lda gp,1536(s5) 670: 00 80 bd 6f hw_ldl/p gp,0(gp) 674: 08 00 3f 23 lda t11,8 678: 19 01 b9 47 andnot gp,t11,t11 67c: 00 06 ae 23 lda gp,1536(s5) 680: 00 80 3d 7f hw_stl/p t11,0(gp) 684: 00 40 ff 63 mb 688: 00 80 3d 6f hw_ldl/p t11,0(gp) 68c: 01 80 fb 6b ret zero,(t12),0x1 690: 09 34 20 45 or s0,0x1,s0 694: 57 01 08 65 hw_mfpr t7,0x157 ; PALtemp23 698: 00 40 ff 63 mb 69c: 28 91 2d 7d hw_stq/p s0,296(s4) 6a0: 00 40 ff 63 mb 6a4: c8 91 0d 7d hw_stq/p t7,456(s4) 6a8: 00 40 ff 63 mb 6ac: 00 06 ae 23 lda gp,1536(s5) 6b0: 00 80 bd 6f hw_ldl/p gp,0(gp) 6b4: 08 00 3f 23 lda t11,8 6b8: 19 04 b9 47 or gp,t11,t11 6bc: 00 06 ae 23 lda gp,1536(s5) 6c0: 00 80 3d 7f hw_stl/p t11,0(gp) 6c4: 00 40 ff 63 mb 6c8: 00 80 3d 6f hw_ldl/p t11,0(gp) 6cc: 01 80 fb 6b ret zero,(t12),0x1 ; D9 - Sizing memory 6d0: 0a 04 ff 47 clr s1 6d4: 0b 04 ff 47 clr s2 6d8: d9 00 3f 23 lda t11,217 ; 0xD9 6dc: 5e 02 a0 d3 bsr gp,0x1058 ; diag_leds(t11) 6e0: 00 10 ee 25 ldah fp,4096(s5) ; 87.5000.0000 6e4: 00 0b af 22 lda a5,2816(fp) 6e8: f6 00 3f 23 lda t11,246 ; 0xF6 ; initialise all three DRAM timing registers TMG0-TMG2 with 0x6038c140 6ec: 00 0b af 22 lda a5,2816(fp) ; CIA TMG0 register 87.5000.0B00 6f0: 40 c1 df 22 lda t8,-16064 6f4: 39 60 d6 26 ldah t8,24633(t8) 6f8: 0f 03 c0 d3 bsr sp,0x1338 ; stl_checked(t8, a5, t11) TMG0 <- 6038c140 6fc: 40 0b af 22 lda a5,2880(fp) ; CIA TMG1 register 87.5000.0B40 700: 40 c1 df 22 lda t8,-16064 704: 39 60 d6 26 ldah t8,24633(t8) 708: 0b 03 c0 d3 bsr sp,0x1338 ; stl_checked(t8, a5, t11) TMG1 <- 6038c140 70c: 80 0b af 22 lda a5,2944(fp) ; CIA TMG2 register 87.5000.0B80 710: 40 c1 df 22 lda t8,-16064 714: 39 60 d6 26 ldah t8,24633(t8) 718: 07 03 c0 d3 bsr sp,0x1338 ; stl_checked(t8, a5, t11) TMG2 <- 6038c140 ; clear all eight Memory Base Address registers MBA0-MBAE 71c: 00 06 0f 22 lda a0,1536(fp) ; CIA MBA0 register 87.5000.0600 720: 80 03 3f 22 lda a1,896 ; 0x380 724: 16 04 ff 47 clr t8 728: 15 04 11 42 addq a0,a1,a5 ; CIA MBAE..MBA0 registers 72c: 02 03 c0 d3 bsr sp,0x1338 ; stl_checked(t8, a5, t11) MBAx <- 0 730: 31 15 30 42 subq a1,0x80,a1 734: fc ff 3f fa bge a1,0x728 ; check memory banks 738: 03 14 e1 47 mov 0x8,t2 73c: 06 34 e0 47 mov 0x1,t5 ; constant 1 for bit mapping 740: 0a 04 ff 47 clr s1 ; bit map of banks and their sizes 744: 02 04 ff 47 clr t1 ; t1 = bank number; start at MBA0 ; testing 128 MB per DIMM ; initialise bank t1 for maximum size, starting at address 0 748: 90 36 40 48 srl t1,0x1,a0 ; a0 = 0 - MBA (bank pair) index 74c: 11 04 ff 47 clr a1 ; a1 = 0 - bank's base address 750: 12 14 f0 47 mov 0x80,a2 ; a2 = 0x80 - max size, 128 MB per DIMM 754: 13 14 e0 47 mov 0,a3 ; a3 = 0 - all TMGx are the same, use TMG0 758: 14 74 e0 47 mov 0x3,a4 ; a4 = 3 - use both "sides" of the bank 75c: 55 00 80 d3 bsr at,0x8b4 ; set_mba(a0, a1, a2, a3, a4) 760: 30 57 63 48 sll t2,0x1a,a0 ; if odd bank side in t1, a0 = 8 << 26: start addr 764: d0 02 5f 44 cmovlbc t1,zero,a0 ; if even bank side in t1, a0 = 0: start addr 768: 20 00 1f 24 ldah v0,32 ; v0 = 0x200000: 2 MB size 76c: 91 76 00 48 srl v0,0x3,a1 ; a1 = size in quadwords 770: 12 04 ff 47 clr a2 ; a2 = 0 - use t8 to fill 774: 16 04 ff 47 clr t8 ; t8 = 0 - fill with zeros 778: dc 02 c0 d3 bsr sp,0x12ec ; fill_memory(a0, a1, a2, t8) 77c: 11 11 df 22 lda t8,4369 780: 11 11 d6 26 ldah t8,4369(t8) 784: 36 17 c4 4a sll t8,0x20,t8 788: 11 11 d6 22 lda t8,4369(t8) 78c: 11 11 d6 26 ldah t8,4369(t8) ; 0x1111111111111111 790: 91 36 60 48 srl t2,0x1,a1 794: 13 04 10 46 mov a0,a3 798: 67 00 60 d3 bsr t12,0x938 ; test 79c: 37 00 20 e4 beq t0,0x87c ; if t0 == 0, proceed to next bank 7a0: 04 00 00 e7 beq t10,0x7b4 ; if t10 == 0, proceed to 222...22 7a4: 00 14 47 40 addq t1,0x38,v0 ; if t10 != 0, add to bit map 7a8: 20 07 c0 48 sll t5,v0,v0 7ac: 0a 04 0a 44 or v0,s1,s1 ; set bit in s1 7b0: 32 00 e0 c3 br 0x87c ; proceed to next bank 7b4: 36 37 c0 4a sll t8,0x1,t8 ; 0x2222222222222222, most likely 7b8: 00 01 70 22 lda a3,256(a0) 7bc: 5e 00 60 d3 bsr t12,0x938 ; test 7c0: 03 00 20 f4 bne t0,0x7d0 ; if t0 != 0, try 32 MB 7c4: 00 14 40 40 addq t1,0,v0 ; if t0 == 0, add to bit map 7c8: 20 07 c0 48 sll t5,v0,v0 ; will set bit in s1 after br 7cc: 2b 00 e0 c3 br 0x87c ; proceed to next bank ; testing 32 MB per DIMM 7d0: 90 36 40 48 srl t1,0x1,a0 ; a0 = MBA (bank pair) index from bank number in t1 7d4: 11 04 ff 47 clr a1 ; a1 = 0 - bank's base address 7d8: 12 14 e4 47 mov 0x20,a2 ; a2 = 0x20 - 32 MB per DIMM 7dc: 13 14 e0 47 mov 0,a3 ; a3 = 0 - use TMG0 for DRAM timing 7e0: 14 74 e0 47 mov 0x3,a4 ; a4 = 3 - use both "sides" of the bank 7e4: 33 00 80 d3 bsr at,0x8b4 ; set_mba(a0, a1, a2, a3, a4) 7e8: 30 17 63 48 sll t2,0x18,a0 7ec: d0 02 5f 44 cmovlbc t1,zero,a0 7f0: 00 02 70 22 lda a3,512(a0) 7f4: 33 33 df 22 lda t8,13107 7f8: 33 33 d6 26 ldah t8,13107(t8) 7fc: 36 17 c4 4a sll t8,0x20,t8 800: 33 33 d6 22 lda t8,13107(t8) 804: 33 33 d6 26 ldah t8,13107(t8) ; 0x3333333333333333 808: 4b 00 60 d3 bsr t12,0x938 ; test 80c: 03 00 20 f4 bne t0,0x81c ; if t0 != 0, try 8 MB 810: 00 14 41 40 addq t1,0x8,v0 ; if t0 == 0, add to bit map 814: 20 07 c0 48 sll t5,v0,v0 ; will set bit in s1 after br 818: 18 00 e0 c3 br 0x87c ; proceed to next bank ; testing 8 MB per DIMM 81c: 90 36 40 48 srl t1,0x1,a0 ; a0 = MBA (bank pair) index from bank number in t1 820: 11 04 ff 47 clr a1 ; a1 = 0 - bank's base address 824: 12 14 e1 47 mov 0x8,a2 ; a2 = 0x08 - 8 MB per DIMM 828: 13 14 e0 47 mov 0,a3 ; a3 = 0 - use TMG0 for DRAM timing 82c: 14 74 e0 47 mov 0x3,a4 ; a4 = 3 - use both "sides" of the bank 830: 20 00 80 d3 bsr at,0x8b4 ; set_mba(a0, a1, a2, a3, a4) 834: 30 d7 62 48 sll t2,0x16,a0 838: d0 02 5f 44 cmovlbc t1,zero,a0 83c: 44 44 df 22 lda t8,17476 840: 44 44 d6 26 ldah t8,17476(t8) 844: 36 17 c4 4a sll t8,0x20,t8 848: 44 44 d6 22 lda t8,17476(t8) 84c: 44 44 d6 26 ldah t8,17476(t8) ; 0x4444444444444444 850: 91 36 60 48 srl t2,0x1,a1 854: 13 04 10 46 mov a0,a3 858: 37 00 60 d3 bsr t12,0x938 ; test 85c: 07 00 20 e4 beq t0,0x87c ; if t0 == 0, proceed to next bank 860: 04 00 00 e7 beq t10,0x874 ; if t10 == 0, proceed to set bit 864: 00 14 47 40 addq t1,0x38,v0 ; if t10 != 0, add to bit map 868: 20 07 c0 48 sll t5,v0,v0 86c: 0a 04 0a 44 or v0,s1,s1 ; set bit in s1 870: 02 00 e0 c3 br 0x87c ; proceed to next bank 874: 00 14 42 40 addq t1,0x10,v0 878: 20 07 c0 48 sll t5,v0,v0 ; will set bit in s1 87c: 0a 04 0a 44 or v0,s1,s1 880: 02 34 40 40 addq t1,0x1,t1 ; t1 <- next bank 884: b0 ff 5f f0 blbs t1,0x748 ; if odd, loop back to test it 888: 30 55 40 40 subq t1,0x2,a0 ; bank pair (a0, a0+1) we've just tested 88c: 22 00 c0 d3 bsr sp,0x918 ; v0 <- &MBA[a0/2] 890: 00 80 e0 7f hw_stl/p zero,0(v0) ; clear MBA for previous bank pair 894: a0 95 40 40 cmpeq t1,0x4,v0 ; 4 banks (2 pairs) done? 898: ab ff 1f e4 beq v0,0x748 ; not yet - continue testing 89c: 20 f6 41 49 zapnot s1,0xf,v0 ; v0 = bitmask of successfully tested banks 8a0: 02 00 00 f4 bne v0,0x8ac ; anything there? Proceed to configuring 8a4: fa 00 3f 23 lda t11,250 ; 0xFA - no usable memory detected 8a8: eb 01 a0 d3 bsr gp,0x1058 ; diag_leds(t11) 8ac: 52 00 60 d3 bsr t12,0x9f8 ; D8 - Configuring memory 8b0: 01 80 fa 6b ret ; set_mba(a0, a1, a2, a3, a4) ; Configure a CIA Memory Base Address register for a bank (pair). ; Inputs: a0 - bank pair number, 0-7 for MBA0-MBAE ; a1 - base physical address ; a2 - DIMM size in MB: ; 8 (0x08) - 32 MB total, ROW_TYPE 000b: 10R x 10C ; 16 (0x10) - 64 MB total, ROW_TYPE 000b (invalid?) ; 32 (0x20) - 128 MB total, ROW_TYPE 001b: 11x11 or 12x10 RxC ; 64 (0x40) - 256 MB total, ROW_TYPE 000b (invalid?) ; 128 (0x80) - 512 MB total, ROW_TYPE 010b: 12x12 or 13x11 RxC ; a3 - TMG_SEL: 0/1/2 for 60/70/80 ns DRAM ; a4 - valid sides: 00b - bank not valid, 01b - S0 valid, 11b - S1 and S0 valid 8b4: 96 16 21 4a srl a1,0x8,t8 ; PATTERN field <25:16> 8b8: 20 97 63 4a sll a3,0x1c,v0 ; TMG_SEL field <29:28> 8bc: 16 04 16 44 or v0,t8,t8 8c0: 00 04 ff 47 clr v0 ; v0 = 0 - ROW_TYPE 000b: 10R x 10C 8c4: b7 15 50 42 cmpeq a2,0x80,t9 ; if a2 == 0x80 8c8: c0 54 e0 46 cmovne t9,0x2,v0 ; v0 = 2 - ROW_TYPE 010b: 12x12 or 13x11 RxC 8cc: b7 15 44 42 cmpeq a2,0x20,t9 ; else if a2 == 0x20 8d0: c0 34 e0 46 cmovne t9,0x1,v0 ; v0 = 1 - ROW_TYPE 001b: 11x11 or 12x10 RxC 8d4: 20 37 00 48 sll v0,0x1,v0 ; ROW_TYPE field <3:1> 8d8: 16 04 16 44 or v0,t8,t8 8dc: 95 56 40 4a srl a2,0x2,a5 8e0: 35 35 a0 42 subq a5,0x1,a5 8e4: 35 97 a0 4a sll a5,0x4,a5 ; MASK field <8:4> 8e8: 16 04 b6 46 or a5,t8,t8 8ec: 00 30 80 46 and a4,0x1,v0 8f0: 20 17 00 48 sll v0,0,v0 ; S0_VALID field <0> 8f4: 16 04 16 44 or v0,t8,t8 8f8: 80 36 80 4a srl a4,0x1,v0 8fc: 20 f7 01 48 sll v0,0xf,v0 ; S1_VALID field <15> 900: 16 04 16 44 or v0,t8,t8 904: 06 00 c0 d3 bsr sp,0x920 ; v0 <- &MBA[a0] 908: 15 04 00 44 mov v0,a5 90c: f6 00 3f 23 lda t11,246 ; 0xF6 910: 89 02 c0 d3 bsr sp,0x1338 ; stl_checked(t8, a5, t11) 914: 01 80 fc 6b ret zero,(at),0x1 ; &MBA[a0/2] -> v0 - get MBA register address for bank number passed in a0 (e.g. 4 -> &MBA4) 918: 81 36 00 4a srl a0,0x1,t0 91c: 01 00 e0 c3 br 0x924 ; &MBA[a0] -> v0 - get MBA register address for bank pair number passed in a0 (e.g. 3 -> &MBA6) 920: 01 04 10 46 mov a0,t0 924: 21 f7 20 48 sll t0,0x7,t0 ; t0 = a0 * 0x80 928: 00 10 0e 24 ldah v0,4096(s5) 92c: 00 06 00 20 lda v0,1536(v0) ; v0 = CIA MBA0 reg addr 930: 00 04 01 40 addq v0,t0,v0 ; v0 = MBAn reg addr (n=a0) 934: 01 80 fe 6b ret zero,(sp),0x1 ; some sort of test 938: 12 04 ff 47 clr a2 93c: 18 00 c0 d3 bsr sp,0x9a0 ; fill_memory_with_quirks(a0, a1, a2, s0) 940: 07 04 10 46 mov a0,t6 944: 10 04 73 46 mov a3,a0 948: 68 02 c0 d3 bsr sp,0x12ec ; fill_memory(a0, a1, a2, t8) 94c: 14 00 c0 d3 bsr sp,0x9a0 ; fill_memory_with_quirks(a0, a1, a2, s0) 950: 10 04 e7 44 mov t6,a0 954: 14 04 31 46 mov a1,a4 958: d5 12 c0 4a extwl t8,0,a5 95c: 01 04 ff 47 clr t0 960: 00 90 f0 6e hw_ldq/p t9,0(a0) 964: 19 d4 e0 47 mov 0x6,t11 968: c0 02 f9 4a extwl t9,t11,v0 96c: b8 05 a0 42 cmpeq a5,v0,t10 970: 01 04 01 43 addq t10,t0,t0 974: 39 55 20 43 subq t11,0x2,t11 978: fb ff 3f fb bge t11,0x968 97c: 34 35 80 42 subq a4,0x1,a4 980: 10 14 01 42 addq a0,0x8,a0 984: f6 ff 9f fe bgt a4,0x960 988: 34 57 20 4a sll a1,0x2,a4 98c: 18 08 34 44 xor t0,a4,t10 990: 10 04 e7 44 mov t6,a0 994: 02 00 c0 d3 bsr sp,0x9a0 ; fill_memory_with_quirks(a0, a1, a2, s0) 998: 00 04 ff 47 clr v0 99c: 01 80 fb 6b ret zero,(t12),0x1 ; fill_memory_with_quirks(a0, a1, a2, s0) ; With some augmentation of the start address in a0. 9a0: 87 02 00 d0 bsr v0,0x13c0 ; save_regs 9a4: 09 00 20 e1 blbc s0,0x9cc 9a8: 02 fe df d3 bsr sp,0x1b4 9ac: 07 00 00 e4 beq v0,0x9cc 9b0: 04 04 b5 46 mov a5,t3 9b4: 05 04 d6 46 mov t8,t4 9b8: 16 04 ff 47 clr t8 9bc: 10 04 10 40 addq v0,a0,a0 9c0: 4a 02 c0 d3 bsr sp,0x12ec ; fill_memory(a0, a1, a2, t8) 9c4: 09 00 e0 c3 br 0x9ec 9c8: 7d 02 00 d0 bsr v0,0x13c0 ; save_regs 9cc: 04 04 b5 46 mov a5,t3 9d0: 05 04 d6 46 mov t8,t4 9d4: 16 04 ff 47 clr t8 9d8: 03 14 e1 47 mov 0x8,t2 9dc: 01 00 10 26 ldah a0,1(a0) 9e0: 42 02 c0 d3 bsr sp,0x12ec ; fill_memory(a0, a1, a2, t8) 9e4: 23 35 60 40 subq t2,0x1,t2 9e8: fc ff 7f fc bgt t2,0x9dc 9ec: 15 04 84 44 mov t3,a5 9f0: 16 04 a5 44 mov t4,t8 9f4: 84 02 e0 c3 br 0x1408 ; restore_regs and return ; D8 - Configuring memory 9f8: d8 00 3f 23 lda t11,216 ; 0xD8 9fc: 96 01 a0 d3 bsr gp,0x1058 ; diag_leds(t11) a00: 00 94 e0 47 mov 0x4,v0 a04: 02 04 ff 47 clr t1 a08: 03 14 f0 47 mov 0x80,t2 a0c: 05 04 60 4c mulq t2,v0,t4 a10: 06 04 ff 47 clr t5 a14: 0c 04 ff 47 clr s3 a18: 08 00 ff 20 lda t6,8 a1c: 00 70 e0 44 and t6,0x3,v0 a20: 02 00 00 f4 bne v0,0xa2c a24: c4 00 46 49 extbl s1,t5,t3 a28: 10 04 ff 47 clr a0 a2c: a0 b3 e0 40 cmpult t6,0x5,v0 a30: 94 74 00 44 cmoveq v0,0x3,a4 a34: d4 34 00 44 cmovne v0,0x1,a4 a38: 00 70 80 44 and t3,0x3,v0 a3c: a0 05 80 42 cmpeq a4,v0,v0 a40: 0d 00 00 e4 beq v0,0xa78 a44: 13 14 e0 47 mov 0,a3 a48: 11 04 5f 44 or t1,zero,a1 a4c: 12 04 7f 44 or t2,zero,a2 a50: 98 ff 9f d3 bsr at,0x8b4 ; set_mba(a0, a1, a2, a3, a4) a54: 20 97 a2 48 sll t4,0x14,v0 a58: 02 04 40 40 addq t1,v0,t1 a5c: 0c 04 85 41 addq s3,t4,s3 a60: 14 70 80 44 and t3,0x3,a4 a64: a0 75 80 42 cmpeq a4,0x3,v0 a68: 03 00 00 e4 beq v0,0xa78 a6c: 20 97 a2 48 sll t4,0x14,v0 a70: 02 04 40 40 addq t1,v0,t1 a74: 0c 04 85 41 addq s3,t4,s3 a78: 10 34 00 42 addq a0,0x1,a0 a7c: 84 56 80 48 srl t3,0x2,t3 a80: 27 35 e0 40 subq t6,0x1,t6 a84: e5 ff ff f4 bne t6,0xa1c a88: 83 56 60 48 srl t2,0x2,t2 a8c: 85 56 a0 48 srl t4,0x2,t4 a90: 06 34 c0 40 addq t5,0x1,t5 a94: a0 95 c0 40 cmpeq t5,0x4,v0 a98: df ff 1f e4 beq v0,0xa18 a9c: 01 80 fb 6b ret zero,(t12),0x1 aa0: 41 fe 5f d3 bsr ra,0x3a8 aa4: 0a ff 5f d3 bsr ra,0x6d0 aa8: cd 00 3f 23 lda t11,205 ; 0xCD - Code execution complete aac: 6a 01 a0 d3 bsr gp,0x1058 ; diag_leds(t11) ab0: 7f 01 ff 21 lda fp,383 ab4: bf fd df d3 bsr sp,0x1b4 ab8: 07 00 00 f4 bne v0,0xad8 abc: 0f 11 e8 45 andnot fp,0x40,fp ac0: 42 43 7f 22 lda a3,17218 ac4: 0d 0a 73 26 ldah a3,2573(a3) ac8: 33 17 64 4a sll a3,0x20,a3 acc: 4e 4f 73 22 lda a3,20302(a3) ad0: 20 00 73 26 ldah a3,32(a3) ; 'NO BC\r\n' (with NUL byte inside) ad4: 22 05 c0 d3 bsr sp,0x1f60 ad8: 04 04 ff 47 clr t3 adc: 25 97 82 49 sll s3,0x14,t4 ae0: 06 34 e0 47 mov 0x1,t5 ae4: 24 01 e0 c3 br 0xf78 ae8: 10 04 84 44 mov t3,a0 aec: 07 04 c6 44 mov t5,t6 af0: 12 04 ff 47 clr a2 af4: 31 05 a4 40 subq t4,t3,a1 af8: 91 76 20 4a srl a1,0x3,a1 afc: 40 04 a0 d3 bsr gp,0x1c00 b00: 00 50 e8 45 and fp,0x42,v0 b04: a0 55 08 40 cmpeq v0,0x42,v0 b08: 05 00 00 e4 beq v0,0xb20 b0c: d5 00 3f 23 lda t11,213 b10: 51 01 a0 d3 bsr gp,0x1058 ; diag_leds(t11) b14: 3f 00 80 d3 bsr at,0xc14 b18: e5 00 3f 23 lda t11,229 b1c: 68 00 80 d3 bsr at,0xcc0 b20: 37 04 a0 d3 bsr gp,0x1c00 b24: 00 90 e0 45 and fp,0x4,v0 b28: 09 00 00 e4 beq v0,0xb50 b2c: 00 01 1f 20 lda v0,256 b30: 0f 04 e0 45 or fp,v0,fp b34: d4 00 3f 23 lda t11,212 b38: 47 01 a0 d3 bsr gp,0x1058 ; diag_leds(t11) b3c: 35 00 80 d3 bsr at,0xc14 b40: e4 00 3f 23 lda t11,228 b44: 5e 00 80 d3 bsr at,0xcc0 b48: 00 01 1f 20 lda v0,256 b4c: 0f 01 e0 45 andnot fp,v0,fp b50: 31 05 a4 40 subq t4,t3,a1 b54: 91 76 20 4a srl a1,0x3,a1 b58: 29 04 a0 d3 bsr gp,0x1c00 b5c: 00 10 e1 45 and fp,0x8,v0 b60: 08 00 00 e4 beq v0,0xb84 b64: d3 00 3f 23 lda t11,211 b68: 3b 01 a0 d3 bsr gp,0x1058 ; diag_leds(t11) b6c: e3 00 3f 23 lda t11,227 b70: 12 34 e0 47 mov 0x1,a2 b74: dd 01 c0 d3 bsr sp,0x12ec ; fill_memory(a0, a1, a2, t8) b78: 21 04 a0 d3 bsr gp,0x1c00 b7c: e4 01 c0 d3 bsr sp,0x1310 b80: 4f 00 80 d3 bsr at,0xcc0 b84: 00 10 e2 45 and fp,0x10,v0 b88: 12 00 00 e4 beq v0,0xbd4 b8c: d2 00 3f 23 lda t11,210 b90: 31 01 a0 d3 bsr gp,0x1058 ; diag_leds(t11) b94: 02 54 e0 47 mov 0x2,t1 b98: 55 55 df 22 lda t8,21845 b9c: 55 55 d6 26 ldah t8,21845(t8) ba0: 36 17 c4 4a sll t8,0x20,t8 ba4: 55 55 d6 22 lda t8,21845(t8) ba8: 55 55 d6 26 ldah t8,21845(t8) bac: e2 00 3f 23 lda t11,226 bb0: 13 04 a0 d3 bsr gp,0x1c00 bb4: 12 04 ff 47 clr a2 bb8: cc 01 c0 d3 bsr sp,0x12ec ; fill_memory(a0, a1, a2, t8) bbc: 10 04 a0 d3 bsr gp,0x1c00 bc0: d3 01 c0 d3 bsr sp,0x1310 bc4: 3e 00 80 d3 bsr at,0xcc0 bc8: 36 37 c0 4a sll t8,0x1,t8 bcc: 22 35 40 40 subq t1,0x1,t1 bd0: f7 ff 5f fc bgt t1,0xbb0 bd4: 0a 04 a0 d3 bsr gp,0x1c00 bd8: 00 10 e4 45 and fp,0x20,v0 bdc: 07 00 00 e4 beq v0,0xbfc be0: d1 00 3f 23 lda t11,209 be4: 1c 01 a0 d3 bsr gp,0x1058 ; diag_leds(t11) be8: 16 04 ff 47 clr t8 bec: bf 01 c0 d3 bsr sp,0x12ec ; fill_memory(a0, a1, a2, t8) bf0: e1 00 3f 23 lda t11,225 bf4: c6 01 c0 d3 bsr sp,0x1310 bf8: 31 00 80 d3 bsr at,0xcc0 bfc: 27 35 e0 40 subq t6,0x1,t6 c00: 03 00 e0 ec ble t6,0xc10 c04: 0d 0a 7f 22 lda a3,2573 ; '\r\n' c08: d5 04 c0 d3 bsr sp,0x1f60 c0c: b9 ff ff c3 br 0xaf4 c10: 9c 02 e0 c3 br 0x1684 c14: 02 04 ff 47 clr t1 c18: 11 14 e1 47 mov 0x8,a1 c1c: 12 04 ff 47 clr a2 c20: 16 14 e0 47 mov 0,t8 c24: b1 01 c0 d3 bsr sp,0x12ec ; fill_memory(a0, a1, a2, t8) c28: 00 01 1f 20 lda v0,256 c2c: 00 00 0f 44 and v0,fp,v0 c30: 02 00 00 e4 beq v0,0xc3c c34: 5a ff df d3 bsr sp,0x9a0 ; fill_memory_with_quirks(a0, a1, a2, s0) c38: 01 00 e0 c3 br 0xc40 c3c: 62 ff df d3 bsr sp,0x9c8 c40: 03 34 e0 47 mov 0x1,t2 c44: 16 04 63 44 mov t2,t8 c48: 55 06 50 40 s8addq t1,a0,a5 c4c: 00 90 d5 7e hw_stq/p t8,0(a5) c50: 00 01 1f 20 lda v0,256 c54: 00 00 0f 44 and v0,fp,v0 c58: 02 00 00 e4 beq v0,0xc64 c5c: 50 ff df d3 bsr sp,0x9a0 ; fill_memory_with_quirks(a0, a1, a2, s0) c60: 01 00 e0 c3 br 0xc68 c64: 58 ff df d3 bsr sp,0x9c8 c68: 55 06 50 40 s8addq t1,a0,a5 c6c: 13 04 b5 46 mov a5,a3 c70: 00 90 f5 6e hw_ldq/p t9,0(a5) c74: 18 08 f6 46 xor t9,t8,t10 c78: 10 00 00 f7 bne t10,0xcbc c7c: 11 14 e1 47 mov 0x8,a1 c80: 15 04 10 46 mov a0,a5 c84: 16 04 ff 47 clr t8 c88: a0 05 b3 42 cmpeq a5,a3,v0 c8c: 03 00 00 f4 bne v0,0xc9c c90: 00 90 f5 6e hw_ldq/p t9,0(a5) c94: 18 08 f6 46 xor t9,t8,t10 c98: 08 00 00 f7 bne t10,0xcbc c9c: 15 14 a1 42 addq a5,0x8,a5 ca0: 31 35 20 42 subq a1,0x1,a1 ca4: f8 ff 3f f6 bne a1,0xc88 ca8: 23 37 60 48 sll t2,0x1,t2 cac: e5 ff 7f f4 bne t2,0xc44 cb0: 02 34 40 40 addq t1,0x1,t1 cb4: a3 13 41 40 cmpult t1,0x8,t2 cb8: d7 ff 7f f4 bne t2,0xc18 cbc: 01 80 fc 6b ret zero,(at),0x1 cc0: 03 00 00 e7 beq t10,0xcd0 cc4: e4 00 a0 d3 bsr gp,0x1058 ; diag_leds(t11) cc8: 00 30 e0 45 and fp,0x1,v0 ccc: 6d 02 00 f4 bne v0,0x1684 cd0: 01 80 fc 6b ret zero,(at),0x1 cd4: f9 03 c0 d3 bsr sp,0x1cbc cd8: 04 04 00 44 mov v0,t3 cdc: f7 03 c0 d3 bsr sp,0x1cbc ce0: 05 04 00 44 mov v0,t4 ce4: 12 04 84 44 mov t3,a2 ce8: 64 72 7f 22 lda a3,29284 cec: 3a 00 73 26 ldah a3,58(a3) cf0: 33 17 64 4a sll a3,0x20,a3 cf4: 4c 6f 73 22 lda a3,28492(a3) cf8: 41 64 73 26 ldah a3,25665(a3) ; 'LoAddr:' cfc: a1 04 c0 d3 bsr sp,0x1f84 d00: 12 04 a5 44 mov t4,a2 d04: 64 72 7f 22 lda a3,29284 d08: 3a 00 73 26 ldah a3,58(a3) d0c: 33 17 64 4a sll a3,0x20,a3 d10: 48 69 73 22 lda a3,26952(a3) d14: 41 64 73 26 ldah a3,25665(a3) ; 'HiAddr:' d18: 9a 04 c0 d3 bsr sp,0x1f84 d1c: a0 07 a4 40 cmpule t4,t3,v0 d20: 10 00 00 e4 beq v0,0xd64 d24: 61 20 7f 22 lda a3,8289 d28: 76 61 73 26 ldah a3,24950(a3) d2c: 33 17 64 4a sll a3,0x20,a3 d30: 4e 6f 73 22 lda a3,28494(a3) d34: 74 20 73 26 ldah a3,8308(a3) ; 'Not a va' d38: 89 04 c0 d3 bsr sp,0x1f60 d3c: 72 61 7f 22 lda a3,24946 d40: 6e 67 73 26 ldah a3,26478(a3) d44: 33 17 64 4a sll a3,0x20,a3 d48: 6c 69 73 22 lda a3,26988(a3) d4c: 64 20 73 26 ldah a3,8292(a3) ; 'lid rang' d50: 83 04 c0 d3 bsr sp,0x1f60 d54: 65 21 7f 22 lda a3,8549 d58: 0d 0a 73 26 ldah a3,2573(a3) ; 'e!\r\n' d5c: 80 04 c0 d3 bsr sp,0x1f60 d60: dc ff ff c3 br 0xcd4 d64: 47 02 e0 c3 br 0x1684 d68: 01 00 f0 45 and fp,a0,t0 d6c: 02 00 20 f4 bne t0,0xd78 d70: 0f 04 f0 45 or fp,a0,fp d74: 01 00 e0 c3 br 0xd7c d78: 0f 01 f0 45 andnot fp,a0,fp d7c: 10 00 f0 45 and fp,a0,a0 d80: 01 00 a0 d3 bsr gp,0xd88 d84: 01 80 fc 6b ret zero,(at),0x1 d88: 03 00 00 e6 beq a0,0xd98 d8c: 4f 4e 7f 22 lda a3,20047 ; 'ON' d90: 73 04 c0 d3 bsr sp,0x1f60 d94: 03 00 e0 c3 br 0xda4 d98: 4f 46 7f 22 lda a3,17999 d9c: 46 00 73 26 ldah a3,70(a3) ; 'OFF' da0: 6f 04 c0 d3 bsr sp,0x1f60 da4: 0d 0a 7f 22 lda a3,2573 ; '\r\n' da8: 6d 04 c0 d3 bsr sp,0x1f60 dac: 01 80 fd 6b ret zero,(gp),0x1 db0: 4f 47 5f 20 lda t1,18255 ; 'GO' (big endian) db4: 02 08 02 44 xor v0,t1,t1 db8: 4b ff 5f e4 beq t1,0xae8 dbc: 47 4e 5f 20 lda t1,20039 dc0: 41 52 42 24 ldah t1,21057(t1) dc4: 22 17 41 48 sll t1,0x8,t1 dc8: 45 00 42 20 lda t1,69(t1) dcc: 02 08 02 44 xor v0,t1,t1 dd0: c0 ff 5f e4 beq t1,0xcd4 dd4: 53 50 5f 20 lda t1,20563 dd8: 45 52 42 24 ldah t1,21061(t1) ddc: 02 08 02 44 xor v0,t1,t1 de0: 09 00 40 f4 bne t1,0xe08 de4: 56 01 08 75 hw_mtpr t7,0x156 ; PALtemp22 de8: 08 11 08 45 andnot t7,0x40,t7 dec: b6 03 c0 d3 bsr sp,0x1cc8 df0: 56 01 08 65 hw_mfpr t7,0x156 ; PALtemp22 df4: 06 04 00 44 mov v0,t5 df8: 12 04 c6 44 mov t5,a2 dfc: 72 65 7f 22 lda a3,25970 e00: 70 73 73 26 ldah a3,29552(a3) ; 'reps' e04: 62 04 c0 d3 bsr sp,0x1f90 e08: 4f 52 5f 20 lda t1,21071 e0c: 45 5a 42 24 ldah t1,23109(t1) e10: 02 08 02 44 xor v0,t1,t1 e14: 05 00 40 f4 bne t1,0xe2c e18: 7a 65 7f 22 lda a3,25978 e1c: 72 6f 73 26 ldah a3,28530(a3) ; 'zero' e20: 4f 04 c0 d3 bsr sp,0x1f60 e24: 10 14 e4 47 mov 0x20,a0 e28: cf ff 9f d3 bsr at,0xd68 e2c: 43 42 5f 20 lda t1,16963 e30: 22 17 44 48 sll t1,0x20,t1 e34: 53 54 42 20 lda t1,21587(t1) e38: 49 42 42 24 ldah t1,16969(t1) e3c: 02 08 02 44 xor v0,t1,t1 e40: 07 00 40 f4 bne t1,0xe60 e44: 62 69 7f 22 lda a3,26978 e48: 74 73 73 26 ldah a3,29556(a3) e4c: 33 17 64 4a sll a3,0x20,a3 e50: 42 43 73 22 lda a3,17218(a3) ; 'BCbits' (with NUL bytes inside) e54: 42 04 c0 d3 bsr sp,0x1f60 e58: 10 54 e0 47 mov 0x2,a0 e5c: c2 ff 9f d3 bsr at,0xd68 e60: 4d 45 5f 20 lda t1,17741 e64: 4d 00 42 24 ldah t1,77(t1) e68: 22 17 44 48 sll t1,0x20,t1 e6c: 53 54 42 20 lda t1,21587(t1) e70: 49 42 42 24 ldah t1,16969(t1) e74: 02 08 02 44 xor v0,t1,t1 e78: 08 00 40 f4 bne t1,0xe9c e7c: 62 69 7f 22 lda a3,26978 e80: 74 73 73 26 ldah a3,29556(a3) e84: 33 17 64 4a sll a3,0x20,a3 e88: 4d 45 73 22 lda a3,17741(a3) e8c: 4d 00 73 26 ldah a3,77(a3) ; 'MEMbits' (with NUL byte inside) e90: 33 04 c0 d3 bsr sp,0x1f60 e94: 10 94 e0 47 mov 0x4,a0 e98: b3 ff 9f d3 bsr at,0xd68 e9c: 52 44 5f 20 lda t1,17490 ea0: 44 41 42 24 ldah t1,16708(t1) ea4: 02 08 02 44 xor v0,t1,t1 ea8: 05 00 40 f4 bne t1,0xec0 eac: 61 64 7f 22 lda a3,25697 eb0: 64 72 73 26 ldah a3,29284(a3) ; 'addr' eb4: 2a 04 c0 d3 bsr sp,0x1f60 eb8: 10 14 e1 47 mov 0x8,a0 ebc: aa ff 9f d3 bsr at,0xd68 ec0: 4c 4c 5f 20 lda t1,19532 ec4: 45 43 42 24 ldah t1,17221(t1) ec8: 02 08 02 44 xor v0,t1,t1 ecc: 05 00 40 f4 bne t1,0xee4 ed0: 63 65 7f 22 lda a3,25955 ed4: 6c 6c 73 26 ldah a3,27756(a3) ; 'cell' ed8: 21 04 c0 d3 bsr sp,0x1f60 edc: 10 14 e2 47 mov 0x10,a0 ee0: a1 ff 9f d3 bsr at,0xd68 ee4: 54 49 5f 20 lda t1,18772 ee8: 4e 49 42 24 ldah t1,18766(t1) eec: 02 08 02 44 xor v0,t1,t1 ef0: eb fe 5f e4 beq t1,0xaa0 ef4: 54 4c 5f 20 lda t1,19540 ef8: 41 48 42 24 ldah t1,18497(t1) efc: 02 08 02 44 xor v0,t1,t1 f00: 05 00 40 f4 bne t1,0xf18 f04: 68 61 7f 22 lda a3,24936 f08: 6c 74 73 26 ldah a3,29804(a3) ; 'halt' f0c: 14 04 c0 d3 bsr sp,0x1f60 f10: 10 34 e0 47 mov 0x1,a0 f14: 94 ff 9f d3 bsr at,0xd68 f18: 43 42 5f 20 lda t1,16963 ; command 'BC' (big endian) f1c: 02 08 02 44 xor v0,t1,t1 f20: 11 00 40 f4 bne t1,0xf68 f24: 10 10 f0 45 and fp,0x80,a0 f28: 06 00 00 e6 beq a0,0xf44 f2c: 42 43 7f 22 lda a3,17218 f30: 0d 0a 73 26 ldah a3,2573(a3) f34: 33 17 64 4a sll a3,0x20,a3 f38: 4e 4f 73 22 lda a3,20302(a3) f3c: 20 00 73 26 ldah a3,32(a3) ; 'NO BC\r\n' (with NUL byte inside) f40: 07 04 c0 d3 bsr sp,0x1f60 f44: 62 63 7f 22 lda a3,25442 ; 'bc' f48: 05 04 c0 d3 bsr sp,0x1f60 f4c: 10 14 e8 47 mov 0x40,a0 f50: 01 10 e8 45 and fp,0x40,t0 f54: 02 00 20 f4 bne t0,0xf60 f58: cd fd 7f d3 bsr t12,0x690 f5c: 01 00 e0 c3 br 0xf64 f60: af fd 7f d3 bsr t12,0x620 f64: 80 ff 9f d3 bsr at,0xd68 f68: 57 4f 5f 20 lda t1,20311 f6c: 48 53 42 24 ldah t1,21320(t1) ; command 'SHOW' (big endian) f70: 02 08 02 44 xor v0,t1,t1 f74: 37 00 40 f4 bne t1,0x1054 f78: 10 10 f0 45 and fp,0x80,a0 f7c: 06 00 00 e6 beq a0,0xf98 f80: 42 43 7f 22 lda a3,17218 f84: 0d 0a 73 26 ldah a3,2573(a3) f88: 33 17 64 4a sll a3,0x20,a3 f8c: 4e 4f 73 22 lda a3,20302(a3) f90: 20 00 73 26 ldah a3,32(a3) ; 'NO BC\r\n' (with NUL byte inside) f94: f2 03 c0 d3 bsr sp,0x1f60 f98: 62 63 7f 22 lda a3,25442 ; 'bc' f9c: f0 03 c0 d3 bsr sp,0x1f60 fa0: 10 10 e8 45 and fp,0x40,a0 fa4: 78 ff bf d3 bsr gp,0xd88 fa8: 62 69 7f 22 lda a3,26978 fac: 74 73 73 26 ldah a3,29556(a3) fb0: 33 17 64 4a sll a3,0x20,a3 fb4: 42 43 73 22 lda a3,17218(a3) ; 'BCbits' (with NUL bytes inside) fb8: e9 03 c0 d3 bsr sp,0x1f60 fbc: 10 50 e0 45 and fp,0x2,a0 fc0: 71 ff bf d3 bsr gp,0xd88 fc4: 62 69 7f 22 lda a3,26978 fc8: 74 73 73 26 ldah a3,29556(a3) fcc: 33 17 64 4a sll a3,0x20,a3 fd0: 4d 45 73 22 lda a3,17741(a3) fd4: 4d 00 73 26 ldah a3,77(a3) ; 'MEMbits' (with NUL byte inside) fd8: e1 03 c0 d3 bsr sp,0x1f60 fdc: 10 90 e0 45 and fp,0x4,a0 fe0: 69 ff bf d3 bsr gp,0xd88 fe4: 68 61 7f 22 lda a3,24936 fe8: 6c 74 73 26 ldah a3,29804(a3) ; 'halt' fec: dc 03 c0 d3 bsr sp,0x1f60 ff0: 10 30 e0 45 and fp,0x1,a0 ff4: 64 ff bf d3 bsr gp,0xd88 ff8: 7a 65 7f 22 lda a3,25978 ffc: 72 6f 73 26 ldah a3,28530(a3) ; 'zero' 1000: d7 03 c0 d3 bsr sp,0x1f60 1004: 10 10 e4 45 and fp,0x20,a0 1008: 5f ff bf d3 bsr gp,0xd88 100c: 61 64 7f 22 lda a3,25697 1010: 64 72 73 26 ldah a3,29284(a3) ; 'addr' 1014: d2 03 c0 d3 bsr sp,0x1f60 1018: 10 10 e1 45 and fp,0x8,a0 101c: 5a ff bf d3 bsr gp,0xd88 1020: 63 65 7f 22 lda a3,25955 1024: 6c 6c 73 26 ldah a3,27756(a3) ; 'cell' 1028: cd 03 c0 d3 bsr sp,0x1f60 102c: 10 10 e2 45 and fp,0x10,a0 1030: 55 ff bf d3 bsr gp,0xd88 1034: 12 04 c6 44 mov t5,a2 1038: 20 20 7f 22 lda a3,8224 103c: 3a 00 73 26 ldah a3,58(a3) 1040: 33 17 64 4a sll a3,0x20,a3 1044: 72 65 73 22 lda a3,25970(a3) 1048: 70 73 73 26 ldah a3,29552(a3) ; 'reps :' 104c: d0 03 c0 d3 bsr sp,0x1f90 1050: 24 ff ff c3 br 0xce4 1054: 8b 01 e0 c3 br 0x1684 ; diag_leds(t11) ; Display a code on the diagnostic LEDs (or Flamingo LSM). ; Output something to the SROM diag port, if enabled. ; Input: t11 - code to display. 1058: 01 00 20 f7 bne t11,0x1060 105c: 01 80 fd 6b ret zero,(gp),0x1 1060: 52 01 52 76 hw_mtpr a2,0x152 ; PALtemp18 1064: 53 01 73 76 hw_mtpr a3,0x153 ; PALtemp19 1068: 54 01 10 76 hw_mtpr a0,0x154 ; PALtemp20 106c: 55 01 31 76 hw_mtpr a1,0x155 ; PALtemp21 1070: 56 01 52 66 hw_mfpr a2,0x156 ; PALtemp22 1074: d2 30 40 4a extbl a2,0x1,a2 1078: 06 00 40 f2 blbs a2,0x1094 107c: 08 00 7f 22 lda a3,8 1080: 80 87 73 26 ldah a3,-30848(a3) 1084: 33 f6 61 4a zapnot a3,0xf,a3 1088: 33 17 61 4a sll a3,0x8,a3 108c: 00 80 33 7f hw_stl/p t11,0(a3) 1090: 00 40 ff 63 mb 1094: b3 13 3c 43 cmpult t11,0xe0,a3 1098: 07 00 60 e6 beq a3,0x10b8 109c: 11 04 39 47 mov t11,a1 10a0: b2 03 c0 d3 bsr sp,0x1f6c 10a4: 2e 00 1f 22 lda a0,46 10a8: aa 03 c0 d3 bsr sp,0x1f54 10ac: b3 b5 39 43 cmpeq t11,0xcd,a3 10b0: 2c 00 60 f6 bne a3,0x1164 10b4: 52 00 e0 c3 br 0x1200 10b8: 18 01 52 66 hw_mfpr a2,0x118 ; ICSR 10bc: 10 34 00 46 or a0,0x1,a0 10c0: 30 f7 04 4a sll a0,0x27,a0 10c4: 12 04 50 46 or a2,a0,a2 10c8: 18 01 52 76 hw_mtpr a2,0x118 ; ICSR 10cc: 01 00 5f 22 lda a2,1 10d0: 56 01 10 66 hw_mfpr a0,0x156 ; PALtemp22 10d4: 10 04 50 46 or a2,a0,a0 10d8: 56 01 10 76 hw_mtpr a0,0x156 ; PALtemp22 10dc: 32 17 27 4b sll t11,0x38,a2 10e0: 12 04 b2 47 or gp,a2,a2 10e4: 71 2f 7f 22 lda a3,12145 10e8: 50 43 73 26 ldah a3,17232(a3) 10ec: 33 17 64 4a sll a3,0x20,a3 10f0: 0d 0a 73 22 lda a3,2573(a3) 10f4: 53 65 73 26 ldah a3,25939(a3) ; '\r\nSeq/PC' 10f8: a2 03 c0 d3 bsr sp,0x1f84 10fc: 12 f0 21 47 and t11,0xf,a2 1100: b2 53 41 42 cmpult a2,0xa,a2 1104: 3e 00 40 e6 beq a2,0x1200 1108: 3d 00 00 e7 beq t10,0x1200 110c: 12 04 b5 46 mov a5,a2 1110: 41 64 7f 22 lda a3,25665 1114: 64 72 73 26 ldah a3,29284(a3) ; 'Addr' 1118: 9a 03 c0 d3 bsr sp,0x1f84 111c: 12 04 f7 46 mov t9,a2 1120: 52 65 7f 22 lda a3,25938 1124: 63 00 73 26 ldah a3,99(a3) 1128: 33 17 64 4a sll a3,0x20,a3 112c: 44 61 73 22 lda a3,24900(a3) 1130: 74 61 73 26 ldah a3,24948(a3) ; 'DataRec' 1134: 93 03 c0 d3 bsr sp,0x1f84 1138: 12 04 d6 46 mov t8,a2 113c: 45 78 7f 22 lda a3,30789 1140: 70 00 73 26 ldah a3,112(a3) 1144: 33 17 64 4a sll a3,0x20,a3 1148: 44 61 73 22 lda a3,24900(a3) 114c: 74 61 73 26 ldah a3,24948(a3) ; 'DataExp' 1150: 8c 03 c0 d3 bsr sp,0x1f84 1154: 12 04 18 47 mov t10,a2 1158: 58 4f 7f 22 lda a3,20312 115c: 52 00 73 26 ldah a3,82(a3) ; 'XOR' 1160: 88 03 c0 d3 bsr sp,0x1f84 1164: 0d 0a 7f 22 lda a3,2573 ; '\r\n' 1168: 7d 03 c0 d3 bsr sp,0x1f60 116c: 12 04 4a 45 mov s1,a2 1170: 4d 65 7f 22 lda a3,25933 1174: 6d 00 73 26 ldah a3,109(a3) 1178: 33 17 64 4a sll a3,0x20,a3 117c: 63 66 73 22 lda a3,26211(a3) 1180: 67 64 73 26 ldah a3,25703(a3) ; 'cfgdMem' 1184: 7f 03 c0 d3 bsr sp,0x1f84 1188: 07 00 60 e5 beq s2,0x11a8 118c: 12 04 6b 45 mov s2,a2 1190: 4d 65 7f 22 lda a3,25933 1194: 6d 00 73 26 ldah a3,109(a3) 1198: 33 17 64 4a sll a3,0x20,a3 119c: 62 61 73 22 lda a3,24930(a3) 11a0: 64 00 73 26 ldah a3,100(a3) ; 'badMem' (with NUL byte inside) 11a4: 77 03 c0 d3 bsr sp,0x1f84 11a8: 12 04 8c 45 mov s3,a2 11ac: 4d 42 7f 22 lda a3,16973 11b0: 33 17 64 4a sll a3,0x20,a3 11b4: 63 66 73 22 lda a3,26211(a3) 11b8: 67 64 73 26 ldah a3,25703(a3) ; 'cfgdMB' 11bc: 71 03 c0 d3 bsr sp,0x1f84 11c0: 12 04 08 45 mov t7,a2 11c4: 63 6e 7f 22 lda a3,28259 11c8: 66 67 73 26 ldah a3,26470(a3) 11cc: 33 17 64 4a sll a3,0x20,a3 11d0: 62 63 73 22 lda a3,25442(a3) 11d4: 5f 00 73 26 ldah a3,95(a3) ; 'bc_cnfg' (with NUL byte inside) 11d8: 6a 03 c0 d3 bsr sp,0x1f84 11dc: 12 04 29 45 mov s0,a2 11e0: 63 6e 7f 22 lda a3,28259 11e4: 74 6c 73 26 ldah a3,27764(a3) 11e8: 33 17 64 4a sll a3,0x20,a3 11ec: 62 63 73 22 lda a3,25442(a3) 11f0: 5f 00 73 26 ldah a3,95(a3) ; 'bc_cntl' (with NUL byte inside) 11f4: 63 03 c0 d3 bsr sp,0x1f84 11f8: 0d 0a 7f 22 lda a3,2573 ; '\r\n' 11fc: 58 03 c0 d3 bsr sp,0x1f60 1200: 18 01 52 66 hw_mfpr a2,0x118 ; ICSR 1204: 10 34 00 46 or a0,0x1,a0 1208: 30 f7 04 4a sll a0,0x27,a0 120c: 12 01 50 46 andnot a2,a0,a2 1210: 18 01 52 76 hw_mtpr a2,0x118 ; ICSR 1214: b3 13 3e 43 cmpult t11,0xf0,a3 1218: 1a 01 60 e6 beq a3,0x1684 121c: 54 01 10 66 hw_mfpr a0,0x154 ; PALtemp20 1220: 55 01 31 66 hw_mfpr a1,0x155 ; PALtemp21 1224: 52 01 52 66 hw_mfpr a2,0x152 ; PALtemp18 1228: 53 01 73 66 hw_mfpr a3,0x153 ; PALtemp19 122c: 1f 04 ff 47 nop 1230: 01 80 fd 6b ret zero,(gp),0x1 1234: 14 00 20 e6 beq a1,0x1288 1238: 00 04 ff 47 clr v0 123c: b5 03 11 42 cmpult a0,a1,a5 1240: 13 00 a0 f6 bne a5,0x1290 1244: 17 04 10 46 mov a0,t9 1248: 18 04 31 46 mov a1,t10 124c: 16 04 ff 47 clr t8 1250: 15 34 e0 47 mov 0x1,a5 1254: 21 05 f8 42 subq t9,t10,t0 1258: 16 34 c0 42 addq t8,0x1,t8 125c: 38 37 00 4b sll t10,0x1,t10 1260: fc ff 3f f8 bge t0,0x1254 1264: 36 55 c0 42 subq t8,0x2,t8 1268: 98 56 00 4b srl t10,0x2,t10 126c: 35 07 b6 4a sll a5,t8,a5 1270: 00 04 a0 46 or a5,v0,v0 1274: 37 05 f8 42 subq t9,t10,t9 1278: a1 07 37 42 cmpule a1,t9,t0 127c: f2 ff 3f f4 bne t0,0x1248 1280: 01 04 f7 46 mov t9,t0 1284: 01 80 fe 6b ret zero,(sp),0x1 1288: ff ff 1f 20 lda v0,-1 128c: 01 80 fe 6b ret zero,(sp),0x1 1290: 01 04 10 46 mov a0,t0 1294: 01 80 fe 6b ret zero,(sp),0x1 1298: e6 ff df d3 bsr sp,0x1234 129c: 01 00 20 e4 beq t0,0x12a4 12a0: 00 34 00 40 addq v0,0x1,v0 12a4: 01 80 fd 6b ret zero,(gp),0x1 12a8: 15 04 10 46 mov a0,a5 12ac: 00 90 b5 7e hw_stq/p a5,0(a5) 12b0: 00 40 ff 63 mb 12b4: 95 34 a0 46 cmoveq a5,0x1,a5 12b8: 35 37 a0 4a sll a5,0x1,a5 12bc: a0 03 b1 42 cmpult a5,a1,v0 12c0: fa ff 1f f4 bne v0,0x12ac 12c4: 15 04 10 46 mov a0,a5 12c8: 16 04 b5 46 mov a5,t8 12cc: 00 90 f5 6e hw_ldq/p t9,0(a5) 12d0: 18 08 f6 46 xor t9,t8,t10 12d4: 04 00 00 f7 bne t10,0x12e8 12d8: 95 34 a0 46 cmoveq a5,0x1,a5 12dc: 35 37 a0 4a sll a5,0x1,a5 12e0: a0 03 b1 42 cmpult a5,a1,v0 12e4: f8 ff 1f f4 bne v0,0x12c8 12e8: 01 80 fe 6b ret zero,(sp),0x1 ; fill_memory(a0, a1, a2, t8) ; Fill a range of memory with quadword writes. ; Inputs: a0 - start address ; a1 - length in quadwords ; a2 - data selector: 0 to fill with data from t8, non-zero to fill with address ; t8 - data to fill if a2 == 0 12ec: 15 04 10 46 mov a0,a5 12f0: 14 04 31 46 mov a1,a4 12f4: d6 04 55 46 cmovne a2,a5,t8 12f8: 00 90 d5 7e hw_stq/p t8,0(a5) 12fc: 00 40 ff 63 mb 1300: 15 14 a1 42 addq a5,0x8,a5 1304: 34 35 80 42 subq a4,0x1,a4 1308: fa ff 9f fe bgt a4,0x12f4 130c: 01 80 fe 6b ret zero,(sp),0x1 ; compare_memory(a0, a1, a2, t8) ; Compare a range of memory with specified data using quadword reads. ; Inputs: a0 - start address ; a1 - length in quadwords ; a2 - data selector: 0 to compare with data in t8, non-zero to compare with address ; t8 - data for comparison if a2 == 0 ; Returns t10 - 0 if all compared ok, non-zero otherwise 1310: 15 04 10 46 mov a0,a5 1314: 14 04 31 46 mov a1,a4 1318: 00 90 f5 6e hw_ldq/p t9,0(a5) 131c: d6 04 55 46 cmovne a2,a5,t8 1320: 18 08 d7 46 xor t8,t9,t10 1324: 03 00 00 f7 bne t10,0x1334 1328: 34 35 80 42 subq a4,0x1,a4 132c: 15 14 a1 42 addq a5,0x8,a5 1330: f9 ff 9f fe bgt a4,0x1318 1334: 01 80 fe 6b ret zero,(sp),0x1 ; stl_checked(t8, a5, t11) ; Write longword to a physical address, read back and compare. ; In case of miscompare, display error code on diagnostic LEDs and halt. ; Inputs: t8 - longword value to write ; a5 - physical address ; t11 - error code 1338: 00 80 d5 7e hw_stl/p t8,0(a5) 133c: 00 40 ff 63 mb 1340: 00 80 f5 6e hw_ldl/p t9,0(a5) 1344: 17 16 fe 4a zap t9,0xf0,t9 1348: 18 08 f6 46 xor t9,t8,t10 134c: 01 00 00 e7 beq t10,0x1354 1350: 41 ff bf d3 bsr gp,0x1058 ; diag_leds(t11) 1354: 01 80 fe 6b ret zero,(sp),0x1 1358: 00 80 d5 7e hw_stl/p t8,0(a5) 135c: 00 40 ff 63 mb 1360: 00 80 f5 6e hw_ldl/p t9,0(a5) 1364: 17 16 fe 4a zap t9,0xf0,t9 1368: 18 08 f6 46 xor t9,t8,t10 136c: 01 80 fe 6b ret zero,(sp),0x1 1370: 56 01 00 64 hw_mfpr v0,0x156 ; PALtemp22 1374: c0 94 00 48 extll v0,0x4,v0 1378: 01 00 00 f4 bne v0,0x1380 137c: 0a 01 1f 20 lda v0,266 1380: 00 04 10 4c mulq v0,a0,v0 1384: 01 00 9f 22 lda a4,1 1388: 34 17 84 4a sll a4,0x20,a4 138c: 0e 02 94 76 hw_mtpr a4,0x20e ; CC_CTL 1390: 40 01 ff 67 hw_mfpr zero,0x140 ; PALtemp0 1394: 40 01 ff 67 hw_mfpr zero,0x140 ; PALtemp0 1398: 40 01 ff 67 hw_mfpr zero,0x140 ; PALtemp0 139c: 40 01 ff 67 hw_mfpr zero,0x140 ; PALtemp0 13a0: 00 c0 9f 62 rpcc a4 13a4: 34 f6 81 4a zapnot a4,0xf,a4 13a8: b4 09 14 40 cmplt v0,a4,a4 13ac: fc ff 9f e6 beq a4,0x13a0 13b0: 01 80 fe 6b ret zero,(sp),0x1 13b4: 02 00 00 d0 bsr v0,0x13c0 ; save_regs 13b8: ed ff df d3 bsr sp,0x1370 13bc: 12 00 e0 c3 br 0x1408 ; restore_regs ; save_regs 13c0: 41 01 de 77 hw_mtpr sp,0x141 ; PALtemp1 13c4: 42 01 42 74 hw_mtpr t1,0x142 ; PALtemp2 13c8: 43 01 63 74 hw_mtpr t2,0x143 ; PALtemp3 13cc: 44 01 84 74 hw_mtpr t3,0x144 ; PALtemp4 13d0: 45 01 a5 74 hw_mtpr t4,0x145 ; PALtemp5 13d4: 46 01 c6 74 hw_mtpr t5,0x146 ; PALtemp6 13d8: 47 01 e7 74 hw_mtpr t6,0x147 ; PALtemp7 13dc: 48 01 08 75 hw_mtpr t7,0x148 ; PALtemp8 13e0: 49 01 29 75 hw_mtpr s0,0x149 ; PALtemp9 13e4: 4a 01 10 76 hw_mtpr a0,0x14a ; PALtemp10 13e8: 4b 01 31 76 hw_mtpr a1,0x14b ; PALtemp11 13ec: 4c 01 52 76 hw_mtpr a2,0x14c ; PALtemp12 13f0: 4d 01 73 76 hw_mtpr a3,0x14d ; PALtemp13 13f4: 4e 01 5a 77 hw_mtpr ra,0x14e ; PALtemp14 13f8: 4f 01 7b 77 hw_mtpr t12,0x14f ; PALtemp15 13fc: 50 01 9c 77 hw_mtpr at,0x150 ; PALtemp16 1400: 51 01 bd 77 hw_mtpr gp,0x151 ; PALtemp17 1404: 01 80 e0 6b ret zero,(v0),0x1 ; restore_regs 1408: 41 01 de 67 hw_mfpr sp,0x141 ; PALtemp1 140c: 42 01 42 64 hw_mfpr t1,0x142 ; PALtemp2 1410: 43 01 63 64 hw_mfpr t2,0x143 ; PALtemp3 1414: 44 01 84 64 hw_mfpr t3,0x144 ; PALtemp4 1418: 45 01 a5 64 hw_mfpr t4,0x145 ; PALtemp5 141c: 46 01 c6 64 hw_mfpr t5,0x146 ; PALtemp6 1420: 47 01 e7 64 hw_mfpr t6,0x147 ; PALtemp7 1424: 48 01 08 65 hw_mfpr t7,0x148 ; PALtemp8 1428: 49 01 29 65 hw_mfpr s0,0x149 ; PALtemp9 142c: 4a 01 10 66 hw_mfpr a0,0x14a ; PALtemp10 1430: 4b 01 31 66 hw_mfpr a1,0x14b ; PALtemp11 1434: 4c 01 52 66 hw_mfpr a2,0x14c ; PALtemp12 1438: 4d 01 73 66 hw_mfpr a3,0x14d ; PALtemp13 143c: 4e 01 5a 67 hw_mfpr ra,0x14e ; PALtemp14 1440: 4f 01 7b 67 hw_mfpr t12,0x14f ; PALtemp15 1444: 50 01 9c 67 hw_mfpr at,0x150 ; PALtemp16 1448: 51 01 bd 67 hw_mfpr gp,0x151 ; PALtemp17 144c: 1f 04 ff 47 nop 1450: 01 80 fe 6b ret zero,(sp),0x1 1454: 08 00 ff 21 lda fp,8 1458: 05 00 e0 c3 br 0x1470 145c: 09 00 ff 21 lda fp,9 1460: 03 00 e0 c3 br 0x1470 1464: 0a 00 ff 21 lda fp,10 1468: 01 00 e0 c3 br 0x1470 146c: 0b 00 ff 21 lda fp,11 1470: 16 00 c0 d3 bsr sp,0x14cc 1474: 00 80 01 6c hw_ldl/p v0,0(t0) 1478: 19 70 00 46 and a0,0x3,t11 147c: 39 77 20 4b sll t11,0x3,t11 1480: 80 06 19 48 srl v0,t11,v0 1484: 19 70 e0 45 and fp,0x3,t11 1488: 19 34 20 43 addq t11,0x1,t11 148c: 40 06 19 48 mskql v0,t11,v0 1490: 01 80 fd 6b ret zero,(gp),0x1 1494: 08 00 ff 21 lda fp,8 1498: 05 00 e0 c3 br 0x14b0 149c: 09 00 ff 21 lda fp,9 14a0: 03 00 e0 c3 br 0x14b0 14a4: 0a 00 ff 21 lda fp,10 14a8: 01 00 e0 c3 br 0x14b0 14ac: 0b 00 ff 21 lda fp,11 14b0: 06 00 c0 d3 bsr sp,0x14cc 14b4: 00 70 00 46 and a0,0x3,v0 14b8: 20 77 00 48 sll v0,0x3,v0 14bc: 20 07 20 4a sll a1,v0,v0 14c0: 00 80 01 7c hw_stl/p v0,0(t0) 14c4: 00 40 ff 63 mb 14c8: 01 80 fd 6b ret zero,(gp),0x1 14cc: 58 08 3f 23 lda t11,2136 14d0: 70 08 39 27 ldah t11,2160(t11) 14d4: 39 17 24 4b sll t11,0x20,t11 14d8: 60 08 39 23 lda t11,2144(t11) 14dc: 00 08 39 27 ldah t11,2048(t11) 14e0: 80 56 e0 49 srl fp,0x2,v0 14e4: 00 70 00 44 and v0,0x3,v0 14e8: 21 37 00 48 sll v0,0x1,t0 14ec: c1 02 21 4b extwl t11,t0,t0 14f0: 21 97 23 48 sll t0,0x1c,t0 14f4: b9 15 00 40 cmpeq v0,0,t11 14f8: 17 00 20 f7 bne t11,0x1558 14fc: a0 75 00 40 cmpeq v0,0x3,v0 1500: 0f 00 00 e4 beq v0,0x1540 1504: 80 96 e0 49 srl fp,0x4,v0 1508: 00 70 00 44 and v0,0x3,v0 150c: 74 08 3f 23 lda t11,2164 1510: 39 97 23 4b sll t11,0x1c,t11 1514: 80 04 39 23 lda t11,1152(t11) 1518: 00 80 19 7c hw_stl/p v0,0(t11) 151c: 99 16 e2 49 srl fp,0x10,t11 1520: 19 f0 3f 47 and t11,0xff,t11 1524: 39 17 22 4b sll t11,0x10,t11 1528: 01 04 21 47 or t11,t0,t0 152c: 04 00 00 e4 beq v0,0x1540 1530: 99 16 e1 49 srl fp,0x8,t11 1534: 19 f0 3f 47 and t11,0xff,t11 1538: 39 b7 22 4b sll t11,0x15,t11 153c: 01 04 21 47 or t11,t0,t0 1540: 39 b7 00 4a sll a0,0x5,t11 1544: 01 04 21 47 or t11,t0,t0 1548: 80 16 e0 49 srl fp,0,v0 154c: 00 70 e0 45 and fp,0x3,v0 1550: 20 77 00 48 sll v0,0x3,v0 1554: 01 04 20 44 or t0,v0,t0 1558: 01 80 fe 6b ret zero,(sp),0x1 155c: 0c 00 ff 21 lda fp,12 1560: 0f 96 e0 49 zap fp,0x4,fp 1564: 0a 00 1f 24 ldah v0,10 1568: 0f 04 0f 44 or v0,fp,fp 156c: 0d 00 1f 22 lda a0,13 1570: f8 00 3f 22 lda a1,248 1574: ce ff bf d3 bsr gp,0x14b0 1578: 40 00 1f 22 lda a0,64 157c: 68 00 3f 22 lda a1,104 1580: cb ff bf d3 bsr gp,0x14b0 1584: 41 00 1f 22 lda a0,65 1588: 8d 00 3f 22 lda a1,141 158c: c8 ff bf d3 bsr gp,0x14b0 1590: 42 00 1f 22 lda a0,66 1594: f0 00 3f 22 lda a1,240 1598: c5 ff bf d3 bsr gp,0x14b0 159c: 44 00 1f 22 lda a0,68 15a0: 10 00 3f 22 lda a1,16 15a4: c2 ff bf d3 bsr gp,0x14b0 15a8: 0f 00 ff 21 lda fp,15 15ac: 0f 96 e0 49 zap fp,0x4,fp 15b0: 0a 00 1f 24 ldah v0,10 15b4: 0f 04 0f 44 or v0,fp,fp 15b8: 60 00 1f 22 lda a0,96 15bc: ff ff 3f 26 ldah a1,-1 15c0: 31 f6 21 4a zapnot a1,0xf,a1 15c4: ba ff bf d3 bsr gp,0x14b0 15c8: 70 00 1f 22 lda a0,112 15cc: b8 ff bf d3 bsr gp,0x14b0 15d0: 01 80 fb 6b ret zero,(t12),0x1 ; Configure EISA ports 0x22, 0x398-0x399, and 0x3f8-0x3fb. ; These are system board devices. 15d4: 09 00 ff 21 lda fp,9 15d8: 22 00 1f 22 lda a0,34 15dc: 02 0f 3f 22 lda a1,3842 15e0: b3 ff bf d3 bsr gp,0x14b0 15e4: 22 00 1f 22 lda a0,34 15e8: 40 67 3f 22 lda a1,26432 15ec: b0 ff bf d3 bsr gp,0x14b0 15f0: 22 00 1f 22 lda a0,34 15f4: 4e 03 3f 22 lda a1,846 15f8: ad ff bf d3 bsr gp,0x14b0 15fc: 22 00 1f 22 lda a0,34 1600: 4f ff 3f 22 lda a1,-177 1604: 01 00 31 26 ldah a1,1(a1) 1608: a9 ff bf d3 bsr gp,0x14b0 160c: 08 00 ff 21 lda fp,8 1610: fb 03 1f 22 lda a0,1019 1614: 80 00 3f 22 lda a1,128 1618: a5 ff bf d3 bsr gp,0x14b0 161c: f8 03 1f 22 lda a0,1016 1620: 0c 00 3f 22 lda a1,12 1624: a2 ff bf d3 bsr gp,0x14b0 1628: f9 03 1f 22 lda a0,1017 162c: 00 00 3f 22 lda a1,0 1630: 9f ff bf d3 bsr gp,0x14b0 1634: fb 03 1f 22 lda a0,1019 1638: 03 00 3f 22 lda a1,3 163c: 9c ff bf d3 bsr gp,0x14b0 1640: fa 03 1f 22 lda a0,1018 1644: 07 00 3f 22 lda a1,7 1648: 99 ff bf d3 bsr gp,0x14b0 164c: 98 03 1f 22 lda a0,920 1650: 87 ff bf d3 bsr gp,0x1470 1654: 98 03 1f 22 lda a0,920 1658: 85 ff bf d3 bsr gp,0x1470 165c: 98 03 1f 22 lda a0,920 1660: 00 00 3f 22 lda a1,0 1664: 92 ff bf d3 bsr gp,0x14b0 1668: 99 03 1f 22 lda a0,921 166c: 0f 00 3f 22 lda a1,15 1670: 8f ff bf d3 bsr gp,0x14b0 1674: 99 03 1f 22 lda a0,921 1678: 0f 00 3f 22 lda a1,15 167c: 8c ff bf d3 bsr gp,0x14b0 1680: 01 80 fb 6b ret zero,(t12),0x1 ; print SROM> prompt and input command line 1684: 56 01 08 65 hw_mfpr t7,0x156 ; PALtemp22 1688: 08 14 10 45 or t7,0x80,t7 168c: 08 d1 03 45 andnot t7,0x1e,t7 1690: 56 01 08 75 hw_mtpr t7,0x156 ; PALtemp22 1694: 4f 4d 7f 22 lda a3,19791 1698: 3e 20 73 26 ldah a3,8254(a3) 169c: 33 17 64 4a sll a3,0x20,a3 16a0: 0d 0a 73 22 lda a3,2573(a3) 16a4: 53 52 73 26 ldah a3,21075(a3) ; '\r\nSROM> ' 16a8: 2d 02 c0 d3 bsr sp,0x1f60 16ac: 3e 02 c0 d3 bsr sp,0x1fa8 ; readline() -> v0 (also a3), t0 16b0: 01 00 5f 24 ldah t1,1 16b4: a2 03 02 40 cmpult v0,t1,t1 16b8: 0b 00 40 e4 beq t1,0x16e8 ; br if longer than 2 characters 16bc: c2 30 00 48 extbl v0,0x1,t1 ; t1 <- first character 16c0: 02 98 4a 44 xor t1,0x54,t1 ; 'T' 16c4: 08 00 40 f4 bne t1,0x16e8 16c8: c0 10 00 48 extbl v0,0,v0 ; v0 <- second character 16cc: 3c 02 c0 d3 bsr sp,0x1fc0 ; hex_to_num(a3) -> v0 16d0: 05 00 00 e8 blt v0,0x16e8 16d4: a2 13 02 40 cmpult v0,0x10,t1 16d8: 03 00 40 e4 beq t1,0x16e8 16dc: 20 57 00 48 sll v0,0x2,v0 16e0: a0 0a 00 20 lda v0,2720(v0) ; jump table at 0xaa0 16e4: 00 00 e0 6b jmp (v0) 16e8: 4d 48 5f 20 lda t1,18509 ; 'HM' (big endian) 16ec: 02 08 02 44 xor v0,t1,t1 16f0: 09 00 40 f4 bne t1,0x1718 16f4: 56 01 08 65 hw_mfpr t7,0x156 ; PALtemp22 16f8: 08 34 00 45 or t7,0x1,t7 16fc: 56 01 08 75 hw_mtpr t7,0x156 ; PALtemp22 1700: 65 6d 7f 22 lda a3,28005 1704: 0d 0a 73 26 ldah a3,2573(a3) 1708: 33 17 64 4a sll a3,0x20,a3 170c: 48 69 73 22 lda a3,26952(a3) 1710: 20 4d 73 26 ldah a3,19744(a3) ; 'Hi Mem\r\n' 1714: a3 01 a0 d3 bsr gp,0x1da4 1718: 4d 4c 5f 20 lda t1,19533 ; 'LM' (big endian) 171c: 02 08 02 44 xor v0,t1,t1 1720: 09 00 40 f4 bne t1,0x1748 1724: 56 01 08 65 hw_mfpr t7,0x156 ; PALtemp22 1728: 08 31 00 45 andnot t7,0x1,t7 172c: 56 01 08 75 hw_mtpr t7,0x156 ; PALtemp22 1730: 65 6d 7f 22 lda a3,28005 1734: 0d 0a 73 26 ldah a3,2573(a3) 1738: 33 17 64 4a sll a3,0x20,a3 173c: 4c 6f 73 22 lda a3,28492(a3) 1740: 20 4d 73 26 ldah a3,19744(a3) ; 'Lo Mem\r\n' 1744: 97 01 a0 d3 bsr gp,0x1da4 1748: 57 51 5f 20 lda t1,20823 ; 'QW' (big endian) 174c: 02 08 02 44 xor v0,t1,t1 1750: 0b 00 40 f4 bne t1,0x1780 1754: 56 01 08 65 hw_mfpr t7,0x156 ; PALtemp22 1758: 08 14 08 45 or t7,0x40,t7 175c: 56 01 08 75 hw_mtpr t7,0x156 ; PALtemp22 1760: 6f 64 7f 22 lda a3,25711 1764: 65 00 73 26 ldah a3,101(a3) 1768: 33 17 64 4a sll a3,0x20,a3 176c: 51 57 73 22 lda a3,22353(a3) 1770: 20 4d 73 26 ldah a3,19744(a3) ; 'QW Mode' 1774: 8b 01 a0 d3 bsr gp,0x1da4 1778: 0d 0a 7f 22 lda a3,2573 ; '\r\n' 177c: 89 01 a0 d3 bsr gp,0x1da4 1780: 57 4c 5f 20 lda t1,19543 ; 'LW' (big endian) 1784: 02 08 02 44 xor v0,t1,t1 1788: 0b 00 40 f4 bne t1,0x17b8 178c: 56 01 08 65 hw_mfpr t7,0x156 ; PALtemp22 1790: 08 11 08 45 andnot t7,0x40,t7 1794: 56 01 08 75 hw_mtpr t7,0x156 ; PALtemp22 1798: 6f 64 7f 22 lda a3,25711 179c: 65 00 73 26 ldah a3,101(a3) 17a0: 33 17 64 4a sll a3,0x20,a3 17a4: 4c 57 73 22 lda a3,22348(a3) 17a8: 20 4d 73 26 ldah a3,19744(a3) ; 'LW Mode' 17ac: 7d 01 a0 d3 bsr gp,0x1da4 17b0: 0d 0a 7f 22 lda a3,2573 ; '\r\n' 17b4: 7b 01 a0 d3 bsr gp,0x1da4 17b8: 4d 45 5f 20 lda t1,17741 ; 'EM' (big endian) 17bc: 02 08 02 44 xor v0,t1,t1 17c0: 01 00 40 f4 bne t1,0x17c8 17c4: 7f 00 e0 c3 br 0x19c4 17c8: 4d 42 5f 20 lda t1,16973 ; 'BM' (big endian) 17cc: 02 08 02 44 xor v0,t1,t1 17d0: 02 00 40 f4 bne t1,0x17dc 17d4: 08 14 01 45 or t7,0x8,t7 17d8: 7a 00 e0 c3 br 0x19c4 17dc: 4d 44 5f 20 lda t1,17485 ; 'DM' (big endian) 17e0: 02 08 02 44 xor v0,t1,t1 17e4: 01 00 40 f4 bne t1,0x17ec 17e8: 84 00 e0 c3 br 0x19fc 17ec: 4d 46 5f 20 lda t1,17997 ; 'FM' (big endian) 17f0: 02 08 02 44 xor v0,t1,t1 17f4: 02 00 40 f4 bne t1,0x1800 17f8: 08 14 01 45 or t7,0x8,t7 17fc: 7f 00 e0 c3 br 0x19fc 1800: 41 42 5f 20 lda t1,16961 ; 'BA' (big endian) 1804: 02 08 02 44 xor v0,t1,t1 1808: 15 00 40 f4 bne t1,0x1860 180c: 56 01 42 64 hw_mfpr t1,0x156 ; PALtemp22 1810: 02 f6 41 48 zap t1,0xf,t1 1814: 08 14 04 45 or t7,0x20,t7 1818: 02 04 02 45 or t7,t1,t1 181c: 56 01 42 74 hw_mtpr t1,0x156 ; PALtemp22 1820: 08 34 00 45 or t7,0x1,t7 1824: 25 01 c0 d3 bsr sp,0x1cbc 1828: 40 01 00 74 hw_mtpr v0,0x140 ; PALtemp0 182c: 56 01 08 65 hw_mfpr t7,0x156 ; PALtemp22 1830: 41 64 7f 22 lda a3,25665 1834: 64 72 73 26 ldah a3,29284(a3) 1838: 33 17 64 4a sll a3,0x20,a3 183c: 42 61 73 22 lda a3,24898(a3) 1840: 73 65 73 26 ldah a3,25971(a3) ; 'BaseAddr' 1844: 57 01 a0 d3 bsr gp,0x1da4 1848: 40 01 52 66 hw_mfpr a2,0x140 ; PALtemp0 184c: 3a 00 7f 22 lda a3,58 1850: 33 17 64 4a sll a3,0x20,a3 1854: 20 20 73 22 lda a3,8224(a3) 1858: 4f 4e 73 26 ldah a3,20047(a3) ; ' ON:' 185c: 33 01 40 d3 bsr ra,0x1d2c 1860: 41 53 5f 20 lda t1,21313 ; 'SA' (big endian) 1864: 02 08 02 44 xor v0,t1,t1 1868: 11 00 40 f4 bne t1,0x18b0 186c: 56 01 42 64 hw_mfpr t1,0x156 ; PALtemp22 1870: 02 f6 41 48 zap t1,0xf,t1 1874: 08 14 04 45 or t7,0x20,t7 1878: 02 04 02 45 or t7,t1,t1 187c: 56 01 42 74 hw_mtpr t1,0x156 ; PALtemp22 1880: 41 64 7f 22 lda a3,25665 1884: 64 72 73 26 ldah a3,29284(a3) 1888: 33 17 64 4a sll a3,0x20,a3 188c: 42 61 73 22 lda a3,24898(a3) 1890: 73 65 73 26 ldah a3,25971(a3) ; 'BaseAddr' 1894: 43 01 a0 d3 bsr gp,0x1da4 1898: 40 01 52 66 hw_mfpr a2,0x140 ; PALtemp0 189c: 3a 00 7f 22 lda a3,58 18a0: 33 17 64 4a sll a3,0x20,a3 18a4: 20 20 73 22 lda a3,8224(a3) 18a8: 4f 4e 73 26 ldah a3,20047(a3) ; ' ON:' 18ac: 1f 01 40 d3 bsr ra,0x1d2c 18b0: 41 43 5f 20 lda t1,17217 ; 'CA' (big endian) 18b4: 02 08 02 44 xor v0,t1,t1 18b8: 11 00 40 f4 bne t1,0x1900 18bc: 56 01 42 64 hw_mfpr t1,0x156 ; PALtemp22 18c0: 02 f6 41 48 zap t1,0xf,t1 18c4: 08 11 04 45 andnot t7,0x20,t7 18c8: 02 04 02 45 or t7,t1,t1 18cc: 56 01 42 74 hw_mtpr t1,0x156 ; PALtemp22 18d0: 41 64 7f 22 lda a3,25665 18d4: 64 72 73 26 ldah a3,29284(a3) 18d8: 33 17 64 4a sll a3,0x20,a3 18dc: 42 61 73 22 lda a3,24898(a3) 18e0: 73 65 73 26 ldah a3,25971(a3) ; 'BaseAddr' 18e4: 2f 01 a0 d3 bsr gp,0x1da4 18e8: 40 01 52 66 hw_mfpr a2,0x140 ; PALtemp0 18ec: 3a 00 7f 22 lda a3,58 18f0: 33 17 64 4a sll a3,0x20,a3 18f4: 20 4f 73 22 lda a3,20256(a3) 18f8: 46 46 73 26 ldah a3,17990(a3) ; ' OFF:' 18fc: 0b 01 40 d3 bsr ra,0x1d2c 1900: 4d 52 5f 20 lda t1,21069 ; 'RM' (big endian) 1904: 02 08 02 44 xor v0,t1,t1 1908: 02 00 40 f4 bne t1,0x1914 190c: 08 94 00 45 or t7,0x4,t7 1910: 2c 00 e0 c3 br 0x19c4 1914: 4d 57 5f 20 lda t1,22349 ; 'WM' (big endian) 1918: 02 08 02 44 xor v0,t1,t1 191c: 02 00 40 f4 bne t1,0x1928 1920: 08 94 00 45 or t7,0x4,t7 1924: 35 00 e0 c3 br 0x19fc 1928: 4d 21 5f 20 lda t1,8525 ; '!M' (big endian) 192c: 02 08 02 44 xor v0,t1,t1 1930: 02 00 40 f4 bne t1,0x193c 1934: 08 14 03 45 or t7,0x18,t7 1938: 30 00 e0 c3 br 0x19fc 193c: 4d 58 5f 20 lda t1,22605 ; 'XM' (big endian) 1940: 02 08 02 44 xor v0,t1,t1 1944: 13 00 40 f4 bne t1,0x1994 1948: c7 00 40 d3 bsr ra,0x1c68 194c: 0b 04 1f 44 or v0,zero,s2 1950: ae 00 40 d3 bsr ra,0x1c0c 1954: 0d 04 0b 40 addq v0,s2,s4 1958: 09 04 ff 47 clr s0 195c: 0a 04 ff 47 clr s1 1960: 3c 01 c0 d3 bsr sp,0x1e54 ; getchar() -> v0 1964: 6c 01 09 48 insbl v0,s0,s3 1968: 0a 04 8a 45 or s3,s1,s1 196c: 09 34 20 41 addq s0,0x1,s0 1970: a0 15 21 41 cmpeq s0,0x8,v0 1974: fa ff 1f e4 beq v0,0x1960 1978: 00 90 4b 7d hw_stq/p s1,0(s2) 197c: 00 90 4b 6d hw_ldq/p s1,0(s2) 1980: 0a 08 4a 45 xor s1,s1,s1 1984: 0b 14 61 41 addq s2,0x8,s2 1988: a0 05 6d 41 cmpeq s2,s4,v0 198c: f2 ff 1f e4 beq v0,0x1958 1990: 3c ff ff c3 br 0x1684 1994: 54 53 5f 20 lda t1,21332 ; 'ST' (big endian) 1998: 02 08 02 44 xor v0,t1,t1 199c: 07 00 40 f4 bne t1,0x19bc 19a0: c6 00 c0 d3 bsr sp,0x1cbc 19a4: 00 34 00 44 or v0,0x1,v0 19a8: 0b 01 00 74 hw_mtpr v0,0x10b ; EXC_ADDR 19ac: 1f 04 ff 47 nop 19b0: 1f 04 ff 47 nop 19b4: 1f 04 ff 47 nop 19b8: 00 80 ff 7b hw_rei 19bc: fc fc ff c3 br 0xdb0 19c0: 30 ff ff c3 br 0x1684 19c4: 08 51 00 45 andnot t7,0x2,t7 19c8: bc 00 c0 d3 bsr sp,0x1cbc 19cc: 0a 04 1f 44 or v0,zero,s1 19d0: 00 10 01 45 and t7,0x8,v0 19d4: 02 00 00 e4 beq v0,0x19e0 19d8: b8 00 c0 d3 bsr sp,0x1cbc 19dc: 0b 04 1f 44 or v0,zero,s2 19e0: 00 10 04 45 and t7,0x20,v0 19e4: 03 00 00 e4 beq v0,0x19f4 19e8: 40 01 00 64 hw_mfpr v0,0x140 ; PALtemp0 19ec: 0b 04 0b 40 addq v0,s2,s2 19f0: 0a 04 0a 40 addq v0,s1,s1 19f4: 11 00 80 d3 bsr at,0x1a3c 19f8: 22 ff ff c3 br 0x1684 19fc: 08 54 00 45 or t7,0x2,t7 1a00: ae 00 c0 d3 bsr sp,0x1cbc 1a04: 0a 04 1f 44 or v0,zero,s1 1a08: 00 10 01 45 and t7,0x8,v0 1a0c: 02 00 00 e4 beq v0,0x1a18 1a10: aa 00 c0 d3 bsr sp,0x1cbc 1a14: 0b 04 1f 44 or v0,zero,s2 1a18: 00 10 04 45 and t7,0x20,v0 1a1c: 03 00 00 e4 beq v0,0x1a2c 1a20: 40 01 00 64 hw_mfpr v0,0x140 ; PALtemp0 1a24: 0b 04 0b 40 addq v0,s2,s2 1a28: 0a 04 0a 40 addq v0,s1,s1 1a2c: a6 00 c0 d3 bsr sp,0x1cc8 1a30: 0d 04 1f 44 or v0,zero,s4 1a34: 01 00 80 d3 bsr at,0x1a3c 1a38: 12 ff ff c3 br 0x1684 1a3c: 00 10 08 45 and t7,0x40,v0 1a40: 02 00 00 e4 beq v0,0x1a4c 1a44: 0a f1 40 45 andnot s1,0x7,s1 1a48: 0b f1 60 45 andnot s2,0x7,s2 1a4c: 0a 71 40 45 andnot s1,0x3,s1 1a50: 0b 71 60 45 andnot s2,0x3,s2 1a54: 00 10 02 45 and t7,0x10,v0 1a58: 4d 00 00 f4 bne v0,0x1b90 1a5c: 00 50 00 45 and t7,0x2,v0 1a60: 2e 00 00 f4 bne v0,0x1b1c 1a64: 00 90 00 45 and t7,0x4,v0 1a68: 09 00 00 e4 beq v0,0x1a90 1a6c: 15 01 ff 77 hw_mtpr zero,0x115 ; HWINT_CLR 1a70: 00 10 08 45 and t7,0x40,v0 1a74: 03 00 00 e4 beq v0,0x1a84 1a78: 00 90 2a 6e hw_ldq/p a1,0(s1) 1a7c: a5 00 c0 d3 bsr sp,0x1d14 1a80: fd ff 1f e4 beq v0,0x1a78 1a84: 00 80 2a 6e hw_ldl/p a1,0(s1) 1a88: a2 00 c0 d3 bsr sp,0x1d14 1a8c: fd ff 1f e4 beq v0,0x1a84 1a90: 91 16 44 49 srl s1,0x20,a1 1a94: b7 00 a0 d3 bsr gp,0x1d74 1a98: 2e 00 1f 22 lda a0,46 1a9c: 0b 01 c0 d3 bsr sp,0x1ecc 1aa0: 11 04 4a 45 mov s1,a1 1aa4: b3 00 a0 d3 bsr gp,0x1d74 1aa8: 3a 20 7f 22 lda a3,8250 ; ': ' 1aac: bd 00 a0 d3 bsr gp,0x1da4 1ab0: 00 10 08 45 and t7,0x40,v0 1ab4: 0a 00 00 e4 beq v0,0x1ae0 1ab8: 00 90 2a 6e hw_ldq/p a1,0(s1) 1abc: 51 01 31 76 hw_mtpr a1,0x151 ; PALtemp17 1ac0: 91 16 24 4a srl a1,0x20,a1 1ac4: 11 04 31 46 mov a1,a1 1ac8: aa 00 a0 d3 bsr gp,0x1d74 1acc: 2e 00 1f 22 lda a0,46 1ad0: fe 00 c0 d3 bsr sp,0x1ecc 1ad4: 51 01 31 66 hw_mfpr a1,0x151 ; PALtemp17 1ad8: a6 00 a0 d3 bsr gp,0x1d74 1adc: 03 00 e0 c3 br 0x1aec 1ae0: 00 80 2a 6e hw_ldl/p a1,0(s1) 1ae4: 11 04 31 46 mov a1,a1 1ae8: a2 00 a0 d3 bsr gp,0x1d74 1aec: 0d 0a 7f 22 lda a3,2573 ; '\r\n' 1af0: ac 00 a0 d3 bsr gp,0x1da4 1af4: 00 10 01 45 and t7,0x8,v0 1af8: 07 00 00 e4 beq v0,0x1b18 1afc: 0a 94 40 41 addq s1,0x4,s1 1b00: 00 10 08 45 and t7,0x40,v0 1b04: 01 00 00 e4 beq v0,0x1b0c 1b08: 0a 94 40 41 addq s1,0x4,s1 1b0c: 3c 00 a0 d3 bsr gp,0x1c00 1b10: a0 03 4b 41 cmpult s1,s2,v0 1b14: de ff 1f f4 bne v0,0x1a90 1b18: 38 00 e0 c3 br 0x1bfc 1b1c: 00 90 00 45 and t7,0x4,v0 1b20: 0b 00 00 e4 beq v0,0x1b50 1b24: 15 01 ff 77 hw_mtpr zero,0x115 ; HWINT_CLR 1b28: 00 10 08 45 and t7,0x40,v0 1b2c: 04 00 00 e4 beq v0,0x1b40 1b30: 00 90 aa 7d hw_stq/p s4,0(s1) 1b34: 00 40 ff 63 mb 1b38: 76 00 c0 d3 bsr sp,0x1d14 1b3c: fc ff 1f e4 beq v0,0x1b30 1b40: 00 80 aa 7d hw_stl/p s4,0(s1) 1b44: 00 40 ff 63 mb 1b48: 72 00 c0 d3 bsr sp,0x1d14 1b4c: fc ff 1f e4 beq v0,0x1b40 1b50: 00 10 08 45 and t7,0x40,v0 1b54: 02 00 00 e4 beq v0,0x1b60 1b58: 00 90 aa 7d hw_stq/p s4,0(s1) 1b5c: 01 00 e0 c3 br 0x1b64 1b60: 00 80 aa 7d hw_stl/p s4,0(s1) 1b64: 00 40 ff 63 mb 1b68: 00 10 01 45 and t7,0x8,v0 1b6c: 07 00 00 e4 beq v0,0x1b8c 1b70: 0a 94 40 41 addq s1,0x4,s1 1b74: 00 10 08 45 and t7,0x40,v0 1b78: 01 00 00 e4 beq v0,0x1b80 1b7c: 0a 94 40 41 addq s1,0x4,s1 1b80: 1f 00 a0 d3 bsr gp,0x1c00 1b84: a0 03 4b 41 cmpult s1,s2,v0 1b88: f1 ff 1f f4 bne v0,0x1b50 1b8c: 1b 00 e0 c3 br 0x1bfc 1b90: 0e 04 4a 45 mov s1,s5 1b94: 00 10 08 45 and t7,0x40,v0 1b98: 03 00 00 e4 beq v0,0x1ba8 1b9c: 00 90 aa 7d hw_stq/p s4,0(s1) 1ba0: 0a 14 41 41 addq s1,0x8,s1 1ba4: 02 00 e0 c3 br 0x1bb0 1ba8: 00 80 aa 7d hw_stl/p s4,0(s1) 1bac: 0a 94 40 41 addq s1,0x4,s1 1bb0: 00 40 ff 63 mb 1bb4: 57 00 c0 d3 bsr sp,0x1d14 1bb8: b2 fe 1f f4 bne v0,0x1684 1bbc: a0 03 4b 41 cmpult s1,s2,v0 1bc0: f4 ff 1f f4 bne v0,0x1b94 1bc4: 0a 04 ce 45 mov s5,s1 1bc8: 00 10 08 45 and t7,0x40,v0 1bcc: 03 00 00 e4 beq v0,0x1bdc 1bd0: 00 90 aa 6d hw_ldq/p s4,0(s1) 1bd4: 0a 14 41 41 addq s1,0x8,s1 1bd8: 02 00 e0 c3 br 0x1be4 1bdc: 00 80 aa 6d hw_ldl/p s4,0(s1) 1be0: 0a 94 40 41 addq s1,0x4,s1 1be4: 4b 00 c0 d3 bsr sp,0x1d14 1be8: a6 fe 1f f4 bne v0,0x1684 1bec: a0 03 4b 41 cmpult s1,s2,v0 1bf0: f5 ff 1f f4 bne v0,0x1bc8 1bf4: 0a 04 ce 45 mov s5,s1 1bf8: e5 ff ff c3 br 0x1b90 1bfc: 01 80 fc 6b ret zero,(at),0x1 1c00: 44 00 c0 d3 bsr sp,0x1d14 1c04: 9f fe 1f f4 bne v0,0x1684 1c08: 01 80 fd 6b ret zero,(gp),0x1 1c0c: 00 10 08 45 and t7,0x40,v0 1c10: 10 00 00 e4 beq v0,0x1c54 1c14: 20 00 7f 22 lda a3,32 1c18: 33 17 64 4a sll a3,0x20,a3 1c1c: 4c 6f 73 22 lda a3,28492(a3) 1c20: 44 3e 73 26 ldah a3,15940(a3) ; 'LoD> ' 1c24: 5f 00 a0 d3 bsr gp,0x1da4 1c28: 63 00 80 d3 bsr at,0x1db8 1c2c: 09 04 00 44 mov v0,s0 1c30: 20 00 7f 22 lda a3,32 1c34: 33 17 64 4a sll a3,0x20,a3 1c38: 48 69 73 22 lda a3,26952(a3) 1c3c: 44 3e 73 26 ldah a3,15940(a3) ; 'HiD> ' 1c40: 58 00 a0 d3 bsr gp,0x1da4 1c44: 5c 00 80 d3 bsr at,0x1db8 1c48: 20 17 04 48 sll v0,0x20,v0 1c4c: 00 04 09 44 or v0,s0,v0 1c50: 01 80 fa 6b ret 1c54: 20 00 7f 26 ldah a3,32 1c58: 44 3e 73 22 lda a3,15940(a3) ; 'D> ' 1c5c: 51 00 a0 d3 bsr gp,0x1da4 1c60: 55 00 80 d3 bsr at,0x1db8 1c64: 01 80 fa 6b ret 1c68: 00 30 00 45 and t7,0x1,v0 1c6c: 0e 00 00 e4 beq v0,0x1ca8 1c70: 00 10 10 45 and t7,0x80,v0 1c74: 0c 00 00 e4 beq v0,0x1ca8 1c78: 41 4c 7f 22 lda a3,19521 1c7c: 3e 20 73 26 ldah a3,8254(a3) ; 'AL> ' 1c80: 48 00 a0 d3 bsr gp,0x1da4 1c84: 4c 00 80 d3 bsr at,0x1db8 1c88: 29 f6 01 48 zapnot v0,0xf,s0 1c8c: 41 48 7f 22 lda a3,18497 1c90: 3e 20 73 26 ldah a3,8254(a3) ; 'AH> ' 1c94: 43 00 a0 d3 bsr gp,0x1da4 1c98: 47 00 80 d3 bsr at,0x1db8 1c9c: 20 17 04 48 sll v0,0x20,v0 1ca0: 00 04 09 44 or v0,s0,v0 1ca4: 01 80 fa 6b ret 1ca8: 41 3e 7f 22 lda a3,15937 1cac: 20 00 73 26 ldah a3,32(a3) ; 'A> ' 1cb0: 3c 00 a0 d3 bsr gp,0x1da4 1cb4: 40 00 80 d3 bsr at,0x1db8 1cb8: 01 80 fa 6b ret 1cbc: c0 fd 1f d0 bsr v0,0x13c0 1cc0: e9 ff 5f d3 bsr ra,0x1c68 1cc4: d0 fd ff c3 br 0x1408 1cc8: bd fd 1f d0 bsr v0,0x13c0 1ccc: cf ff 5f d3 bsr ra,0x1c0c 1cd0: cd fd ff c3 br 0x1408 ; hex_to_num(a3) -> v0 1cd4: 08 00 9f 20 lda t3,8 1cd8: 05 04 7f 46 or a3,zero,t4 1cdc: 20 97 00 48 sll v0,0x4,v0 1ce0: 24 35 80 40 subq t3,0x1,t3 1ce4: c2 00 a4 48 extbl t4,t3,t1 1ce8: 07 00 40 e4 beq t1,0x1d08 1cec: 22 15 46 40 subq t1,0x30,t1 1cf0: a3 59 41 40 cmplt t1,0xa,t2 1cf4: 03 00 60 f4 bne t2,0x1d04 1cf8: 22 35 42 40 subq t1,0x11,t1 1cfc: 02 54 41 40 addq t1,0xa,t1 1d00: 02 f0 41 44 and t1,0xf,t1 1d04: 00 04 40 44 or t1,v0,v0 1d08: f4 ff 9f f4 bne t3,0x1cdc 1d0c: 20 f6 01 48 zapnot v0,0xf,v0 1d10: 01 80 fd 6b ret zero,(gp),0x1 1d14: 00 01 00 64 hw_mfpr v0,0x100 ; ISR 1d18: 80 36 04 48 srl v0,0x21,v0 1d1c: 01 30 00 44 and v0,0x1,t0 1d20: 21 37 24 48 sll t0,0x21,t0 1d24: 15 01 21 74 hw_mtpr t0,0x115 ; HWINT_CLR 1d28: 01 80 fe 6b ret zero,(sp),0x1 1d2c: 1d 00 a0 d3 bsr gp,0x1da4 1d30: 09 00 1f 22 lda a0,9 1d34: 65 00 c0 d3 bsr sp,0x1ecc 1d38: 91 16 44 4a srl a2,0x20,a1 1d3c: 0d 00 a0 d3 bsr gp,0x1d74 1d40: 2e 00 1f 22 lda a0,46 1d44: 61 00 c0 d3 bsr sp,0x1ecc 1d48: 03 00 e0 c3 br 0x1d58 1d4c: 15 00 a0 d3 bsr gp,0x1da4 1d50: 09 00 1f 22 lda a0,9 1d54: 5d 00 c0 d3 bsr sp,0x1ecc 1d58: 31 f6 41 4a zapnot a2,0xf,a1 1d5c: 05 00 a0 d3 bsr gp,0x1d74 1d60: 0d 0a 7f 22 lda a3,2573 ; '\r\n' 1d64: 0f 00 a0 d3 bsr gp,0x1da4 1d68: 01 80 fa 6b ret ; print_hex_byte(a1) ; Print out a byte as two hex digits to the SROM debug port. ; Input: a1 - byte value to print. 1d6c: 02 00 1f 20 lda v0,2 1d70: 01 00 e0 c3 br 0x1d78 ; Entry print_hex_longword(a1) ; Print out a longword as eight hex digits to the SROM debug port. ; Input: a1 - value to print. 1d74: 08 00 1f 20 lda v0,8 1d78: 13 04 ff 47 clr a3 1d7c: 33 17 61 4a sll a3,0x8,a3 1d80: 01 f0 21 46 and a1,0xf,t0 1d84: 01 14 26 40 addq t0,0x30,t0 1d88: a2 59 27 40 cmplt t0,0x3a,t1 1d8c: 01 00 40 f4 bne t1,0x1d94 1d90: 01 f4 24 40 addq t0,0x27,t0 1d94: 13 04 33 44 or t0,a3,a3 1d98: 91 96 20 4a srl a1,0x4,a1 1d9c: 20 35 00 40 subq v0,0x1,v0 1da0: f6 ff 1f f4 bne v0,0x1d7c ; Entry sl_xmit(a3) ; Transmit a string of up to 8 characters to the SROM debug port. ; Input: a3 - NUL terminated string. 1da4: 30 36 60 4a zapnot a3,0x1,a0 1da8: 48 00 c0 d3 bsr sp,0x1ecc 1dac: 93 16 61 4a srl a3,0x8,a3 1db0: fc ff 7f f6 bne a3,0x1da4 1db4: 01 80 fd 6b ret zero,(gp),0x1 1db8: 02 00 a0 d3 bsr gp,0x1dc4 ; readline() -> v0 (also a3), t0 1dbc: c5 ff bf d3 bsr gp,0x1cd4 ; hex_to_num(a3) -> v0 1dc0: 01 80 fc 6b ret zero,(at),0x1 ; readline -> v0 and a3 (length -> t0) 1dc4: 01 04 ff 47 clr t0 ; length 1dc8: 13 04 ff 47 clr a3 ; string accumulator ; CLI input loop 1dcc: 21 00 c0 d3 bsr sp,0x1e54 ; getchar() -> v0 1dd0: a3 75 00 40 cmpeq v0,0x3,t2 ; Ctrl-C 1dd4: 2b fe 7f f4 bne t2,0x1684 ; back to prompt if Ctrl-C 1dd8: a3 f5 0f 40 cmpeq v0,0x7f,t2 ; DEL 1ddc: 0b 00 60 e4 beq t2,0x1e0c 1de0: fa ff 3f ec ble t0,0x1dcc 1de4: 10 14 e1 47 mov 0x8,a0 ; erase last character 1de8: 38 00 c0 d3 bsr sp,0x1ecc 1dec: 10 14 e4 47 mov 0x20,a0 1df0: 36 00 c0 d3 bsr sp,0x1ecc 1df4: 10 14 e1 47 mov 0x8,a0 1df8: 34 00 c0 d3 bsr sp,0x1ecc 1dfc: 93 16 61 4a srl a3,0x8,a3 1e00: 21 35 20 40 subq t0,0x1,t0 1e04: 81 1c 20 44 cmovle t0,0,t0 1e08: f0 ff ff c3 br 0x1dcc 1e0c: 10 04 1f 44 or v0,zero,a0 1e10: a3 b5 01 40 cmpeq v0,0xd,t2 ; 1e14: 0a 00 60 f4 bne t2,0x1e40 1e18: 23 35 0c 40 subq v0,0x61,t2 ; 'a' 1e1c: 03 00 60 e8 blt t2,0x1e2c 1e20: a3 5d 0f 40 cmple v0,0x7a,t2 ; 'z' 1e24: 01 00 60 e4 beq t2,0x1e2c 1e28: 20 15 04 40 subq v0,0x20,v0 ; v0 <- toupper(v0) if between 'a' and 'z' 1e2c: 33 17 61 4a sll a3,0x8,a3 1e30: 13 04 13 44 or v0,a3,a3 ; append v0 to a3 in big endian order 1e34: 01 34 20 40 addq t0,0x1,t0 ; increment length 1e38: 24 00 c0 d3 bsr sp,0x1ecc ; echo 1e3c: e3 ff ff c3 br 0x1dcc 1e40: 22 00 c0 d3 bsr sp,0x1ecc ; process 1e44: 0a 00 1f 22 lda a0,10 1e48: 20 00 c0 d3 bsr sp,0x1ecc 1e4c: 00 04 73 46 mov a3,v0 ; v0 <- input string 1e50: 01 80 fd 6b ret zero,(gp),0x1 ; getchar ; Receive a character from the UART debug port and place it in v0. 1e54: 05 14 e1 47 mov 0x8,t4 1e58: 04 04 ff 47 clr t3 1e5c: 03 04 ff 47 clr t2 1e60: 17 01 42 64 hw_mfpr t1,0x117 ; SL_RCV 1e64: fe ff 5f f4 bne t1,0x1e60 1e68: 27 00 60 d3 bsr t12,0x1f08 1e6c: 28 00 60 d3 bsr t12,0x1f10 1e70: 17 01 42 64 hw_mfpr t1,0x117 ; SL_RCV 1e74: 82 d6 40 48 srl t1,0x6,t1 1e78: 22 07 44 48 sll t1,t3,t1 1e7c: 03 04 43 44 or t1,t2,t2 1e80: 04 34 80 40 addq t3,0x1,t3 1e84: 25 35 a0 40 subq t4,0x1,t4 1e88: f8 ff bf f4 bne t4,0x1e6c 1e8c: 20 00 60 d3 bsr t12,0x1f10 1e90: 17 01 42 64 hw_mfpr t1,0x117 ; SL_RCV 1e94: 00 04 7f 44 or t2,zero,v0 ; v0 <- input char 1e98: 02 10 10 45 and t7,0x80,t1 1e9c: 07 00 40 e4 beq t1,0x1ebc 1ea0: 02 18 0b 44 xor v0,0x58,t1 ; 'X' 1ea4: 05 00 40 f4 bne t1,0x1ebc ; if t7 is set and 'X' is received over UART, modify PALtemp22 1ea8: 56 01 42 64 hw_mfpr t1,0x156 ; PALtemp22 1eac: 02 f6 41 48 zap t1,0xf,t1 1eb0: 08 11 10 45 andnot t7,0x80,t7 1eb4: 02 04 02 45 or t7,t1,t1 1eb8: 56 01 42 74 hw_mtpr t1,0x156 ; PALtemp22 1ebc: 01 00 5f 20 lda t1,1 1ec0: 22 37 44 48 sll t1,0x21,t1 1ec4: 15 01 42 74 hw_mtpr t1,0x115 ; HWINT_CLR 1ec8: 01 80 fe 6b ret zero,(sp),0x1 1ecc: 56 01 00 64 hw_mfpr v0,0x156 ; PALtemp22 1ed0: 00 10 10 44 and v0,0x80,v0 1ed4: 0b 00 00 e4 beq v0,0x1f04 1ed8: 14 00 9f 20 lda t3,20 1edc: 00 ff 10 22 lda a0,-256(a0) 1ee0: 30 17 01 4a sll a0,0x8,a0 1ee4: 01 00 1f 20 lda v0,1 1ee8: 20 37 04 48 sll v0,0x21,v0 1eec: 15 01 00 74 hw_mtpr v0,0x115 ; HWINT_CLR 1ef0: 16 01 10 76 hw_mtpr a0,0x116 ; SL_XMIT 1ef4: 90 36 00 4a srl a0,0x1,a0 1ef8: 24 35 80 40 subq t3,0x1,t3 1efc: 04 00 60 d3 bsr t12,0x1f10 1f00: f8 ff 9f f4 bne t3,0x1ee4 1f04: 01 80 fe 6b ret zero,(sp),0x1 1f08: 07 34 e0 47 mov 0x1,t6 1f0c: 01 00 e0 c3 br 0x1f14 1f10: 07 04 ff 47 clr t6 1f14: 56 01 00 64 hw_mfpr v0,0x156 ; PALtemp22 1f18: c0 94 00 48 extll v0,0x4,v0 1f1c: 00 94 06 4c mulq v0,0x34,v0 1f20: 80 06 07 48 srl v0,t6,v0 1f24: 01 00 ff 20 lda t6,1 1f28: 27 17 e4 48 sll t6,0x20,t6 1f2c: 0e 02 e7 74 hw_mtpr t6,0x20e ; CC_CTL 1f30: 40 01 ff 67 hw_mfpr zero,0x140 ; PALtemp0 1f34: 40 01 ff 67 hw_mfpr zero,0x140 ; PALtemp0 1f38: 40 01 ff 67 hw_mfpr zero,0x140 ; PALtemp0 1f3c: 40 01 ff 67 hw_mfpr zero,0x140 ; PALtemp0 1f40: 00 c0 ff 60 rpcc t6 1f44: 27 f6 e1 48 zapnot t6,0xf,t6 1f48: a7 09 07 40 cmplt v0,t6,t6 1f4c: fc ff ff e4 beq t6,0x1f40 1f50: 01 80 fb 6b ret zero,(t12),0x1 1f54: 1a fd 1f d0 bsr v0,0x13c0 1f58: dc ff df d3 bsr sp,0x1ecc 1f5c: 2a fd ff c3 br 0x1408 1f60: 17 fd 1f d0 bsr v0,0x13c0 1f64: 8f ff bf d3 bsr gp,0x1da4 1f68: 27 fd ff c3 br 0x1408 1f6c: 14 fd 1f d0 bsr v0,0x13c0 1f70: 7e ff bf d3 bsr gp,0x1d6c 1f74: 24 fd ff c3 br 0x1408 1f78: 11 fd 1f d0 bsr v0,0x13c0 1f7c: 7d ff bf d3 bsr gp,0x1d74 1f80: 21 fd ff c3 br 0x1408 1f84: 0e fd 1f d0 bsr v0,0x13c0 1f88: 68 ff 5f d3 bsr ra,0x1d2c 1f8c: 1e fd ff c3 br 0x1408 1f90: 0b fd 1f d0 bsr v0,0x13c0 1f94: 6d ff 5f d3 bsr ra,0x1d4c 1f98: 1b fd ff c3 br 0x1408 1f9c: 08 fd 1f d0 bsr v0,0x13c0 1fa0: ac ff df d3 bsr sp,0x1e54 ; getchar() -> v0 1fa4: 18 fd ff c3 br 0x1408 ; save regs; readline() -> v0 (also a3), t0; restore regs 1fa8: 05 fd 1f d0 bsr v0,0x13c0 1fac: 85 ff bf d3 bsr gp,0x1dc4 ; readline() -> v0 (also a3), t0 1fb0: 15 fd ff c3 br 0x1408 1fb4: 02 fd 1f d0 bsr v0,0x13c0 1fb8: 7f ff 9f d3 bsr at,0x1db8 1fbc: 12 fd ff c3 br 0x1408 ; save regs; hex_to_num(a3) -> v0; restore regs 1fc0: ff fc 1f d0 bsr v0,0x13c0 1fc4: 43 ff bf d3 bsr gp,0x1cd4 ; hex_to_num(a3) -> v0 1fc8: 0f fd ff c3 br 0x1408 ...