       1                                	.title	M9312 11/60-70 Diagnostic/Console ROM
       2                                
       3                                	; This source code is an exact copy of the DEC M9312 23-616F1 console PROM.
       4                                	;
       5                                	; This console/diagnostic PROM is for 11/60-70 CPUs.
       6                                	;
       7                                	; Standard devices are 82S137, 74S573 or other compatible bipolar PROMs
       8                                	; with a 1024x4 TriState 18pin DIP architecture.
       9                                
      10                                	.asect
      11 165000                         	.=165000
      12                                
      13 165000                         base	=.
      14                                
      15 165000 010037  000700          START:	mov	r0,@#700		;
      16 165004 010137  000702          	mov	r1,@#702		;
      17 165010 010437  000704          	mov	r4,@#704		;
      18 165014 005037  000706          	clr	@#706			;
      19                                
      20 165020                         	.=base+20
      21 165020 052737  100000  177776  DIAG:	bis	#100000,@#177776	;
      22 165026 032737  040000  177776  	bit	#040000,@#177776	;
      23 165034 001402                  	beq	L1			;
      24 165036 005237  000706          	inc	@#706			;
      25 165042 005037  177776          L1:	clr	@#177776		;
      26 165046 000401                  	br	L2			;
      27 165050 000000                  	halt				;
      28                                
      29 165052 005006                  L2:	clr	sp			;
      30 165054 100404                  	bmi	L3			;
      31 165056 102403                  	bvs	L3			;
      32 165060 101002                  	bhi	L3			;
      33 165062 002401                  	blt	L3			;
      34 165064 101401                  	blos	L4			;
      35 165066 000000                  L3:	halt				;
      36                                
      37 165070 005306                  L4:	dec	sp			;
      38 165072 100003                  	bpl	L5			;
      39 165074 001402                  	beq	L5			;
      40 165076 002001                  	bge	L5			;
      41 165100 003401                  	ble	L6			;
      42 165102 000000                  L5:	halt				;
      43                                
      44 165104 006006                  L6:	ror	sp			;
      45 165106 102002                  	bvc	L7			;
      46 165110 103001                  	bcc	L7			;
      47 165112 001001                  	bne	L8			;
      48 165114 000000                  L7:	halt				;
      49                                
      50 165116 012706  125252          L8:	mov	#125252,sp		;
      51 165122 010600                  	mov	sp,r0			;
      52 165124 010001                  	mov	r0,r1			;
      53 165126 010102                  	mov	r1,r2			;
      54 165130 010203                  	mov	r2,r3			;
      55 165132 010304                  	mov	r3,r4			;
      56 165134 010405                  	mov	r4,r5			;
      57 165136 160501                  	sub	r5,r1			;
      58 165140 002401                  	blt	NODIAG			;
      59 165142 001401                  	beq	L9			;
      60                                
      61 165144                         	.=base+144
      62 165144 000000                  NODIAG:	halt				;
      63                                
      64 165146 006102                  L9:	rol	r2			;
      65 165150 103001                  	bcc	L10			;
      66 165152 002401                  	blt	L11			;
      67 165154 000000                  L10:	halt				;
      68                                
      69 165156 060203                  L11:	add	r2,r3			;
      70 165160 005203                  	inc	r3			;
      71 165162 005103                  	com	r3			;
      72 165164 060301                  	add	r3,r1			;
      73 165166 103401                  	bcs	L12			;
      74 165170 003401                  	ble	L13			;
      75 165172 000000                  L12:	halt				;
      76                                
      77 165174 006004                  L13:	ror	r4			;
      78 165176 050403                  	bis	r4,r3			;
      79 165200 060503                  	add	r5,r3			;
      80 165202 005203                  	inc	r3			;
      81 165204 103402                  	bcs	L14			;
      82 165206 005301                  	dec	r1			;
      83 165210 002401                  	blt	L15			;
      84 165212 000000                  L14:	halt				;
      85                                
      86 165214 005100                  L15:	com	r0			;
      87 165216 101401                  	blos	L16			;
      88 165220 000000                  	halt				;
      89                                
      90 165222 040001                  L16:	bic	r0,r1			;
      91 165224 060101                  	add	r1,r1			;
      92 165226 003001                  	bgt	L17			;
      93 165230 003401                  	ble	L18			;
      94 165232 000000                  L17:	halt				;
      95                                
      96 165234 000301                  L18:	swab	r1			;
      97 165236 020127  052125          	cmp	r1,#052125		;
      98 165242 001004                  	bne	L19			;
      99 165244 030405                  	bit	r4,r5			;
     100 165246 003002                  	bgt	L19			;
     101 165250 005105                  	com	r5			;
     102 165252 001001                  	bne	L20			;
     103 165254 000000                  L19:	halt				;
     104                                
     105 165256 112700  177401          L20:	movb	#177401,r0		;
     106 165262 100001                  	bpl	L21			;
     107 165264 000000                  L22:	halt				;
     108                                
     109 165266 077002                  L21:	sob	r0,L22			;
     110 165270 005001                  	clr	r1			;
     111 165272 005201                  L23:	inc	r1			;
     112 165274 077002                  	sob	r0,L23			;
     113 165276 005700                  	tst	r0			;
     114 165300 001002                  	bne	L24			;
     115 165302 005701                  	tst	r1			;
     116 165304 001401                  	beq	L25			;
     117 165306 000000                  L24:	halt				;
     118                                
     119 165310 012706  000776          L25:	mov	#776,sp			;
     120 165314 004767  165322'         	jsr	pc,L26			;
     121 165320 000000                  N2:	halt				;
     122                                
     123 165322 022716  165320          L26:	cmp	#N2,(sp)		;
     124 165326 001401                  	beq	L27			;
     125 165330 000000                  	halt				;
     126                                
     127 165332 012716  165342          L27:	mov	#N3,(sp)		;
     128 165336 000207                  	rts	pc			;
     129 165340 000000                  	halt				;
     130                                
     131 165342 005046                  N3:	clr	-(sp)			;
     132 165344 012746  165354          	mov	#N4,-(sp)		;
     133 165350 000002                  	rti				;
     134 165352 000000                  	halt				;
     135                                
     136 165354 000137  165362          N4:	jmp	@#N5			;
     137 165360 000000                  	halt				;
     138                                
     139 165362 012705  160000          N5:	mov	#160000,r5		;
     140 165366 005037  000006          	clr	@#6			;
     141 165372 012737  165400  000004  	mov	#N6,@#4			;
     142 165400 012706  000776          N6:	mov	#776,sp			;
     143 165404 005745                  	tst	-(r5)			;
     144 165406 012737  165714  000114  	mov	#N12,@#114		;
     145 165414 005037  000116          	clr	@#116			;
     146 165420 012703  177746          	mov	#177746,r3		;
     147 165424 012713  000014          	mov	#14,(r3)		;
     148 165430 012702  001000          	mov	#1000,r2		;
     149 165434 010200                  	mov	r2,r0			;
     150 165436 010010                  L28:	mov	r0,(r0)			;
     151 165440 005720                  	tst	(r0)+			;
     152 165442 020005                  	cmp	r0,r5			;
     153 165444 101774                  	blos	L28			;
     154 165446 010200                  	mov	r2,r0			;
     155 165450 011001                  L30:	mov	(r0),r1			;
     156 165452 020001                  	cmp	r0,r1			;
     157 165454 001401                  	beq	L29			;
     158 165456 000000                  	halt				;
     159                                
     160 165460 005120                  L29:	com	(r0)+			;
     161 165462 020005                  	cmp	r0,r5			;
     162 165464 101771                  	blos	L30			;
     163 165466 014001                  L32:	mov	-(r0),r1		;
     164 165470 005101                  	com	r1			;
     165 165472 020001                  	cmp	r0,r1			;
     166 165474 001401                  	beq	L31			;
     167 165476 000000                  	halt				;
     168                                
     169 165500 020002                  L31:	cmp	r0,r2			;
     170 165502 001371                  	bne	L32			;
     171 165504 005016                  	clr	(sp)			;
     172 165506 012704  125252          	mov	#125252,r4		;
     173 165512 012713  000030          	mov	#30,(r3)		;
     174 165516 012700  004000          	mov	#4000,r0		;
     175 165522 012702  001000          L39:	mov	#1000,r2		;
     176 165526 005104                  L36:	com	r4			;
     177 165530 010410                  	mov	r4,(r0)			;
     178 165532 005110                  	com	(r0)			;
     179 165534 005110                  	com	(r0)			;
     180 165536 021004                  	cmp	(r0),r4			;
     181 165540 001401                  	beq	L33			;
     182 165542 000000                  	halt				;
     183                                
     184 165544 006037  177752          L33:	ror	@#177752		;
     185 165550 103402                  	bcs	L34			;
     186 165552 000000                  	halt				;
     187 165554 000461                  	br	L35			;
     188                                
     189 165556 105116                  L34:	comb	(sp)			;
     190 165560 001362                  	bne	L36			;
     191 165562 000402                  	br	L37			;
     192                                
     193 165564                         	.=base+564
     194 165564 000167  165000'         RESTRT:	jmp	START			;
     195                                
     196 165570 005720                  L37:	tst	(r0)+			;
     197 165572 077223                  	sob	r2,L36			;
     198 165574 012713  000044          	mov	#44,(r3)		;
     199 165600 012700  006000          	mov	#6000,r0		;
     200 165604 105166  000001          	comb	1(sp)			;
     201 165610 001344                  	bne	L39			;
     202 165612 012702  001000          	mov	#1000,r2		;
     203 165616 010200                  	mov	r2,r0			;
     204 165620 010010                  L40:	mov	r0,(r0)			;
     205 165622 005720                  	tst	(r0)+			;
     206 165624 020005                  	cmp	r0,r5			;
     207 165626 101774                  	blos	L40			;
     208 165630 012701  000003          	mov	#3,r1			;
     209 165634 005016                  	clr	(sp)			;
     210 165636 005737  000706          	tst	@#706			;
     211 165642 001020                  	bne	L41			;
     212 165644 012716  000030          	mov	#30,(sp)		;
     213 165650 010200                  L45:	mov	r2,r0			;
     214 165652 005110                  L44:	com	(r0)			;
     215 165654 005110                  	com	(r0)			;
     216 165656 020010                  	cmp	r0,(r0)			;
     217 165660 001401                  	beq	L42			;
     218 165662 000000                  	halt				;
     219                                
     220 165664 005720                  L42:	tst	(r0)+			;
     221 165666 006037  177752          	ror	@#177752		;
     222 165672 103402                  	bcs	L43			;
     223 165674 000000                  	halt				;
     224 165676 000410                  	br	L35			;
     225                                
     226 165700 020005                  L43:	cmp	r0,r5			;
     227 165702 101763                  	blos	L44			;
     228 165704 011613                  L41:	mov	(sp),(r3)		;
     229 165706 005016                  	clr	(sp)			;
     230 165710 077121                  	sob	r1,L45			;
     231 165712 000404                  	br	L46			;
     232                                
     233 165714 000000                  N12:	halt				;
     234 165716 000402                  	br	L46			;
     235                                
     236 165720 012713  000014          L35:	mov	#14,(r3)		;
     237 165724 013700  000700          L46:	mov	@#700,r0		;
     238 165730 013701  000702          	mov	@#702,r1		;
     239 165734 013704  000704          	mov	@#704,r4		;
     240 165740 000164  000002          	jmp	2(r4)			;
     241                                
     242 165744 013704  177570          	mov	@#177570,r4		;
     243 165750 042704  177000          	bic	#177000,r4		;
     244 165754 052704  173000          	bis	#173000,r4		;
     245 165760 113700  177571          	movb	@#177571,r0		;
     246 165764 006200                  	asr	r0			;
     247 165766 000241                  	clc				;
     248 165770 000114                  	jmp	(r4)			;
     249 165772 000000                  	halt				;
     250                                
     251                                	; ------------------------------------------------------------
     252                                
     253 165774                         	.=base+774
     254 165774    060     102          verson:	.ascii	"0B"			; version ID
     255                                
     256 165776                         	.=base+776
     257 165776 025055                  crc16:	.word	<025055>		; CRC-16 will go here
     258                                
     259                                	.end
     259                                
