diff options
Diffstat (limited to 'libgloss/hp74x/iva_table.s')
-rw-r--r-- | libgloss/hp74x/iva_table.s | 996 |
1 files changed, 996 insertions, 0 deletions
diff --git a/libgloss/hp74x/iva_table.s b/libgloss/hp74x/iva_table.s new file mode 100644 index 000000000..289ea3c94 --- /dev/null +++ b/libgloss/hp74x/iva_table.s @@ -0,0 +1,996 @@ +/**************************************************************************** + + THIS SOFTWARE IS NOT COPYRIGHTED + + HP offers the following for use in the public domain. HP makes no + warranty with regard to the software or it's performance and the + user accepts the software "AS IS" with all faults. + + HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD + TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +****************************************************************************/ + + .space $TEXT$ + .subspa $CODE$,access=0x2c + +#include "diagnose.h" +#if 0 +#include "iva_table.h" +#endif + +R_gr0 .equ 0 +R_gr1 .equ 4 +R_gr2 .equ 8 +R_gr3 .equ 12 +R_gr4 .equ 16 +R_gr5 .equ 20 +R_gr6 .equ 24 +R_gr7 .equ 28 +R_gr8 .equ 32 +R_gr9 .equ 36 +R_gr10 .equ 40 +R_gr11 .equ 44 +R_gr12 .equ 48 +R_gr13 .equ 52 +R_gr14 .equ 56 +R_gr15 .equ 60 +R_gr16 .equ 64 +R_gr17 .equ 68 +R_gr18 .equ 72 +R_gr19 .equ 76 +R_gr20 .equ 80 +R_gr21 .equ 84 +R_gr22 .equ 88 +R_gr23 .equ 92 +R_gr24 .equ 96 +R_gr25 .equ 100 +R_gr26 .equ 104 +R_gr27 .equ 108 +R_gr28 .equ 112 +R_gr29 .equ 116 +R_gr30 .equ 120 +R_gr31 .equ 124 +R_rctr .equ 160 +R_cpu0 .equ 164 +R_pidr1 .equ 168 +R_pidr2 .equ 172 +R_ccr .equ 176 +R_sar .equ 180 +R_pidr3 .equ 184 +R_pidr4 .equ 188 +R_iva .equ 192 +R_eiem .equ 196 + +R_itmr .equ 200 +R_pcsqH .equ 204 +R_pcoqH .equ 208 +R_iir .equ 212 +R_pcsqT .equ 216 +R_pcoqT .equ 220 +R_isr .equ 224 +R_ior .equ 228 +R_ipsw .equ 232 +R_eirr .equ 236 +R_tr0 .equ 240 +R_tr1 .equ 244 +R_tr2 .equ 248 +R_tr3 .equ 252 +R_tr4 .equ 256 +R_tr5 .equ 260 +R_tr6 .equ 264 +R_tr7 .equ 268 + +R_SIZE .equ 300 + + .import putc,code + .import puts,code + .import putnum,code + .import put_led,code + .import save_regs,code + .import STUB_RESTORE,code + .import RegBlk,data + .export iva_table,data + .IMPORT led_putnum,code + .IMPORT delay,code + .IMPORT putnum,code + .IMPORT outbyte,code + .IMPORT print,code + + .align 2048 +iva_table + .blockz 32 ; entry 0 is reserved + + .align 32 +hpmc + nop + b,n hpmc_handler + nop + .word 0 + .word 0 + .word 0 + .word hpmc_handler + .word 0 + + .align 32 +power_fail +; PrintString Str02,0x2 + ldi 1,%r26 + bl,n putnum,%r2 + nop + + .align 32 +recovery +;; PrintString Str03,0x3 + ldi 2,%r26 + bl,n putnum,%r2 + nop + ldi 3,%r1 + b,n handle_rcc + nop + + .align 32 +external +; PrintString Str04,0x4 + ldi 3,%r26 + bl,n putnum,%r2 + nop + + .align 32 +lpmc +; PrintString Str05,0x5 + ldi 4,%r26 + bl,n putnum,%r2 + nop + + .align 32 +itlb_miss +; PrintString Str06,0x6 + ldi 5,%r26 + bl,n putnum,%r2 + nop + + .align 32 +imem_protection +; PrintString Str07,0x7 + ldi 6,%r26 + bl,n putnum,%r2 + nop + + .align 32 +illegal_inst +; PrintString Str08,0x8 + ldi 7,%r26 + bl,n putnum,%r2 + nop + + .align 32 +break + b,n break_handler + nop + + .align 32 +privileged_op +; PrintString Str0a,0xa + ldi 8,%r26 + bl,n putnum,%r2 + nop + + .align 32 +privileged_reg +; PrintString Str0b,0xb + ldi 9,%r26 + bl,n putnum,%r2 + nop + + .align 32 +overflow +; PrintString Str0c,0xc + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +conditional +; PrintString Str0d,0xd + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +assist_excep +; PrintString Str0e,0xe + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +dtlb_miss +; PrintString Str0f,0xf + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +na_itlb +; PrintString Str10,0x10 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +na_dtlb +; PrintString Str11,0x11 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +dmem_protection +; PrintString Str12,0x12 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +dmem_break +; PrintString Str13,0x13 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +tlb_dirty +; PrintString Str14,0x14 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +page_ref +; PrintString Str15,0x15 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +assist_emul +; PrintString Str16,0x16 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +high_priv +; PrintString Str17,0x17 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +low_priv +; PrintString Str18,0x18 + ldi 32,%r26 + bl,n putnum,%r2 + nop + + .align 32 +branch_taken +; PrintString Str19,0x19 + ldi 32,%r26 + bl,n putnum,%r2 + nop + +/* + * foobar -- debug procedure calling between C and assembler + */ + .EXPORT foobar,ENTRY,ARGW0=GR,RTNVAL=GR +foobar + .PROC + .CALLINFO CALLER,FRAME=128,SAVE_RP + .ENTRY + + stw %r2,-20(0,%r30) ; stash the return pointer + ldo 128(%r30),%r30 ; push up the stack pointer + + ldi 8, %r26 + bl,n led_putnum,%r2 + nop + ldil L'900000,%r26 + ldo R'900000(%r26),%r26 + bl,n delay,%r2 + nop + ldi 8, %r26 + bl,n led_putnum,%r2 + nop + ldil L'900000,%r26 + ldo R'900000(%r26),%r26 + bl,n delay,%r2 + nop +;; copy %r26,%r26 +;; bl,n putnum,%r2 + nop + + ldw -148(0,%r30),%r2 ; retrieve the return pointer + ldo -128(%r30),%r30 ; reset the stack pointer + bv,n 0(%r2) + nop + + .EXIT + .PROCEND + +/* + * setup_vectors -- add vectors for GDB to the vector table. + * %r3 - current vector table + * %r4 - new vector table + */ + .EXPORT setup_vectors,ENTRY,ARGW0=GR,RTNVAL=GR +setup_vectors + .PROC + .CALLINFO CALLER,FRAME=128,SAVE_RP + .ENTRY + stw %r2,-20(0,%r30) ; stash the return pointer + ldo 128(%r30),%r30 ; push up the stack pointer + + mfctl %iva,%r3 + + ldil L%iva_table,%r4 ; Get the new vector table + ldo R%iva_table(%r4),%r4 ; address + + ldil L%break_handler,%r5 ; Get the breakpoint + ldo R%break_handler(%r5),%r5 ; handler vector + + ldil L%break_default,%r6 ; Get the default handler + ldo R%break_default(%r6),%r6 ; vector + + stw %r6,4(%r4) ; ad the default vector + stw %r5,36(%r4) ; add the break vector + + mtctl %r4,%iva + + ldw -148(0,%r30),%r2 ; retrieve the return pointer + ldo -128(%r30),%r30 ; reset the stack pointer + bv,n 0(%r2) + nop + + .EXIT + .PROCEND + +;------------------------------------------------------------------------------- +hpmc_handler + bl,n save_state,%r25 + nop + bl print_intr,%rp + ldi Str01-Str01,%arg0 + bl print_state,%rp + nop + ldil L%0xf0000000,%r1 + ldw (%r1),%r1 ; read from ROM to reset HPMC + + mfcpu_c 0,%r1 + mfcpu_c 0,%r1 + depi 0,CPU_DIAG_0_PREV_HPMC_PREP_BIT,1,%r1 ; clear Prev HPMC bit + +#ifdef PCXL + depi 0,CPU_DIAG_0_L2DHPMC_BIT,1,%r1 + depi 0,CPU_DIAG_0_L2IHPMC_BIT,1,%r1 + depi 0,CPU_DIAG_0_L1IHPMC_BIT,1,%r1 + depi 0,CPU_DIAG_0_L2PARERR_BIT,4,%r1 +#else /* PCXT */ + depi 0,CPU_DIAG_0_DHPMC_BIT,1,%r1 ; don't clear DHPMC + depi 0,CPU_DIAG_0_ILPMC_BIT,1,%r1 ; don't clear ILPMC + depi 0,CPU_DIAG_0_HTOC_BIT,1,%r1 ; don't clear HTOC +#endif + + mtcpu %r1,0 + mtcpu %r1,0 + + b,n restore_to_STUB + ldi 0x1,%r1 + +/* + * break_handler -- this is the main entry point for an exception + */ + .ALIGN 2048 +break_handler + + mfctl %iir,%r1 ; r1 = break instruction + extru %r1,18,13,%r8 + ldo -i13BREAK(%r8),%r8 ; if im13 field doesn't match + comb,<>,n %r8,%r0,break_default ; go to default operation + extru %r1,31,5,%r8 + ldi 0x9,%r1 ; set exception index + comib,=,n i5BP,%r8,break_breakpoint + comib,=,n i5PSW,%r8,break_psw + comib,=,n i5REG,%r8,break_reg_init + comib,=,n i5INLINE,%r8,break_breakpoint + ; fall through to break_default + +break_default +; PrintString Str09,0x9 + ldi 32,%r26 + bl,n putnum,%r2 + nop + +break_reg_init + bl setup_vectors,%r25 + nop + bl save_regs,%r25 + nop + ; fall through to advance past break instruction + +break_psw + b,n recover + +break_breakpoint + b,n STUB_RESTORE + +;------------------------------------------------------------------------------- + +handle_rcc + mfctl %ipsw,%r1 + bb,>=,n %r1,10,do_restore ; check nullify bit + dep %r0,10,1,%r1 + mtctl %r1,%ipsw ; clear nullify bit + + ;; was the AdvancePCOQ .macro + mtctl %r0,%pcoq ; throw away iiaoq head pointer, tail->head + mfctl %pcoq,%r1 ; get tail pointer + mtctl %r1,%pcoq ; insert tail pointer + ldo 4(%r1),%r1 ; advance tail pointer + mtctl %r1,%pcoq ; insert new tail pointer, former tail->head + +do_restore + b,n STUB_RESTORE + nop +;------------------------------------------------------------------------------- + +print_intr +; %dp may be messed up, so do self-relocating to reach Save_area + blr %r0,%r1 + addil L%Str01-pr_intr_0,%r1 + +pr_intr_0 + ldo R%Str01-pr_intr_0(%r1),%r1 ; r1 points to Save_area + b puts ; print string--return through rp + add %r1,%arg0,%arg0 + +;------------------------------------------------------------------------------- + +halt +; %dp may be messed up, so do self-relocating to reach Save_area + blr %r0,%r1 + addil L%HaltStr-halt_0,%r1 + +halt_0 + bl puts,%rp ; print halt message + ldo R%HaltStr-halt_0(%r1),%arg0 + + nop + b,n . ; loop forever + nop + +;------------------------------------------------------------------------------- + +recover + ;; was the AdvancePCOQ .macro + mtctl %r0,%pcoq ; throw away iiaoq head pointer, tail->head + mfctl %pcoq,%r1 ; get tail pointer + mtctl %r1,%pcoq ; insert tail pointer + ldo 4(%r1),%r1 ; advance tail pointer + mtctl %r1,%pcoq ; insert new tail pointer, former tail->head + + rfir + +;------------------------------------------------------------------------------- + +save_state ; %r25 is return pointer +; %dp may be messed up, so do self-relocating to reach Save_area + blr %r0,%r1 + addil L%Save_area-sa_st_0,%r1 + +sa_st_0 + ldo R%Save_area-sa_st_0(%r1),%r1 ; r1 points to Save_area + +; save general registers + stw %r0,R_gr0(%r1) + ; don't save %r1 until restored + stw %r2,R_gr2(%r1) + stw %r3,R_gr3(%r1) + stw %r4,R_gr4(%r1) + stw %r5,R_gr5(%r1) + stw %r6,R_gr6(%r1) + stw %r7,R_gr7(%r1) + ; don't save %r8, %r9 until restored + stw %r10,R_gr10(%r1) + stw %r11,R_gr11(%r1) + stw %r12,R_gr12(%r1) + stw %r13,R_gr13(%r1) + stw %r14,R_gr14(%r1) + stw %r15,R_gr15(%r1) + ; don't save %r16, %r17 until restored + stw %r18,R_gr18(%r1) + stw %r19,R_gr19(%r1) + stw %r20,R_gr20(%r1) + stw %r21,R_gr21(%r1) + stw %r22,R_gr22(%r1) + stw %r23,R_gr23(%r1) + ; don't save %r24, %r25 until restored + stw %r26,R_gr26(%r1) + stw %r27,R_gr27(%r1) + stw %r28,R_gr28(%r1) + stw %r29,R_gr29(%r1) + copy %r25,%rp ; copy return pointer to %rp + stw %r30,R_gr30(%r1) + copy %r1,%r19 ; save Save_area pointer in %r19 + stw %r31,R_gr31(%r1) + shdw_gr ; restore %r1 and %r25 (et al.) from shadow regs + shdw_gr + stw %r1,R_gr1(%r19) ; save %r1 + stw %r8,R_gr8(%r19) + stw %r9,R_gr9(%r19) + stw %r16,R_gr16(%r19) + stw %r17,R_gr17(%r19) + stw %r24,R_gr24(%r19) + +; save control registers + mfctl %rctr,%r1 + stw %r1,R_rctr(%r19) + mfctl %pidr1,%r1 + stw %r1,R_pidr1(%r19) + mfctl %pidr2,%r1 + stw %r1,R_pidr2(%r19) + mfctl %ccr,%r1 + stw %r1,R_ccr(%r19) + mfctl %sar,%r1 + stw %r1,R_sar(%r19) + mfctl %pidr3,%r1 + stw %r1,R_pidr3(%r19) + mfctl %pidr4,%r1 + stw %r1,R_pidr4(%r19) + mfctl %iva,%r1 + stw %r1,R_iva(%r19) + mfctl %eiem,%r1 + stw %r1,R_eiem(%r19) + mfctl %itmr,%r1 + stw %r1,R_itmr(%r19) + mfctl %pcsq,%r1 + mtctl %r1,%pcsq + stw %r1,R_pcsqH(%r19) + mfctl %pcsq,%r1 + mtctl %r1,%pcsq + stw %r1,R_pcsqT(%r19) + mfctl %pcoq,%r1 + mtctl %r1,%pcoq + stw %r1,R_pcoqH(%r19) + mfctl %pcoq,%r1 + mtctl %r1,%pcoq + stw %r1,R_pcoqT(%r19) + mfctl %iir,%r1 + stw %r1,R_iir(%r19) + mfctl %isr,%r1 + stw %r1,R_isr(%r19) + mfctl %ior,%r1 + stw %r1,R_ior(%r19) + mfctl %ipsw,%r1 + stw %r1,R_ipsw(%r19) + mfctl %eirr,%r1 + stw %r1,R_eirr(%r19) + mfctl %tr0,%r1 + stw %r1,R_tr0(%r19) + mfctl %tr1,%r1 + stw %r1,R_tr1(%r19) + mfctl %tr2,%r1 + stw %r1,R_tr2(%r19) + mfctl %tr3,%r1 + stw %r1,R_tr3(%r19) + mfctl %tr4,%r1 + stw %r1,R_tr4(%r19) + mfctl %tr5,%r1 + stw %r1,R_tr5(%r19) + mfctl %tr6,%r1 + stw %r1,R_tr6(%r19) + mfctl %tr7,%r1 + stw %r1,R_tr7(%r19) + +; save diagnose registers + mfcpu_c 0,%r1 + mfcpu_c 0,%r1 + stw %r1,R_cpu0(%r19) + +#ifdef PRINT_SPACE + stw %r25,R_gr25(%r19) + +; save space registers + mfsp %sr0,%r1 + stw %r1,R_sr0(%r19) + mfsp %sr1,%r1 + stw %r1,R_sr1(%r19) + mfsp %sr2,%r1 + stw %r1,R_sr2(%r19) + mfsp %sr3,%r1 + stw %r1,R_sr3(%r19) + mfsp %sr4,%r1 + stw %r1,R_sr4(%r19) + mfsp %sr5,%r1 + stw %r1,R_sr5(%r19) + mfsp %sr6,%r1 + stw %r1,R_sr6(%r19) + mfsp %sr7,%r1 + bv (%rp) + stw %r1,R_sr7(%r19) +#else + bv (%rp) + stw %r25,R_gr25(%r19) +#endif + + +;------------------------------------------------------------------------------- + +restore_to_STUB ; doesn't return--goes to STUB_RESTORE + ; Note--STUB_RESTORE executes rfir, + ; so we don't need to + copy %r1,%r8 ; save exception index +; %dp may be messed up, so do self-relocating to reach Save_area + bl re_st_0,%r1 + addil L%Save_area-re_st_0,%r1 + +re_st_0 + ldo R%Save_area-re_st_0(%r1),%r1 ; r1 points to Save_area + +; restore general registers + ldw R_gr2(%r1),%r2 + ldw R_gr3(%r1),%r3 + ldw R_gr4(%r1),%r4 + ldw R_gr5(%r1),%r5 + ldw R_gr6(%r1),%r6 + ldw R_gr7(%r1),%r7 +; ldw R_gr8(%r1),%r8 don't smash the exception index + ldw R_gr9(%r1),%r9 + ldw R_gr10(%r1),%r10 + ldw R_gr11(%r1),%r11 + ldw R_gr12(%r1),%r12 + ldw R_gr13(%r1),%r13 + ldw R_gr14(%r1),%r14 + ldw R_gr15(%r1),%r15 + ldw R_gr16(%r1),%r16 + ldw R_gr17(%r1),%r17 + ldw R_gr18(%r1),%r18 + ldw R_gr19(%r1),%r19 + ldw R_gr20(%r1),%r20 + ldw R_gr21(%r1),%r21 + ldw R_gr22(%r1),%r22 + ldw R_gr23(%r1),%r23 + ldw R_gr24(%r1),%r24 + ldw R_gr25(%r1),%r25 + ldw R_gr26(%r1),%r26 + ldw R_gr27(%r1),%r27 + ldw R_gr28(%r1),%r28 + ldw R_gr29(%r1),%r29 + ldw R_gr30(%r1),%r30 + ldw R_gr31(%r1),%r31 + ldw R_gr1(%r1),%r1 + b STUB_RESTORE + copy %r8,%r1 ; restore the exception index + +;------------------------------------------------------------------------------- + +#define HoldPtr %r10 +#define SavePtr %r11 +#define StrPtr %r12 +#define Count %r13 + +#define Hold_Hold 0*4 /* First word of hold area */ +#define Hold_Save 1*4 /* Second word of hold area */ +#define Hold_Str 2*4 /* Third word of hold area */ +#define Hold_Count 3*4 /* Fourth word of hold area */ +#define Hold_rp 4*4 /* Fifth word of hold area */ + +print_state +; %dp may be messed up, so do self-relocating to reach Save_area + blr %r0,%mrp + addil L%Hold_area-pr_st_0,%mrp + +pr_st_0 + ldo R%Hold_area-pr_st_0(%r1),%r1 ; r1 points to Hold_area + +; save working registers + + stw HoldPtr,Hold_Hold(%r1) + copy %r1,HoldPtr ; HoldPtr = &Hold_area + stw SavePtr,Hold_Save(HoldPtr) + ldo Save_area-Hold_area(HoldPtr),SavePtr ; SavePtr = &Save_area + stw StrPtr,Hold_Str(HoldPtr) + addil L%PrintLabels-pr_st_0,%mrp + stw Count,Hold_Count(HoldPtr) + ldo R%PrintLabels-pr_st_0(%r1),StrPtr + stw %rp,Hold_rp(HoldPtr) + + +#ifdef PRINT_SPACE + ldi 68,Count +#else + ldo R_gr0(SavePtr),SavePtr + ldi 60,Count +#endif + +; print register values + +print_loop + bl puts,%rp ; print label + ldo 1(StrPtr),%arg0 ; advance past length byte + bl putnum,%rp ; print register value + ldwm 4(SavePtr),%arg0 + ldbs,ma 1(StrPtr),%r1 + addib,> -1,Count,print_loop + add %r1,StrPtr,StrPtr + +; skip to next line + bl puts,%rp ; print label + ldo 1(StrPtr),%arg0 ; advance past length byte + +; restore working registers + + ldw Hold_rp(HoldPtr),%rp + ldw Hold_Count(HoldPtr),Count + ldw Hold_Str(HoldPtr),StrPtr + ldw Hold_Save(HoldPtr),SavePtr + bv (%rp) + ldw Hold_Hold(HoldPtr),HoldPtr + +#undef SavePtr +#undef HoldPtr +#undef StrPtr +#undef Count + +#undef Hold_Save +#undef Hold_Scr +#undef Hold_Str +#undef Hold_Count +#undef Hold_rp + +;------------------------------------------------------------------------------- + + .space $PRIVATE$ + .subspa $DATA$,align=4,access=0x1f + +/* Used to save machine registers before printing */ +Save_area + .block R_SIZE ; Used to store registers + +/* Used to hold callee-save registers */ +Hold_area + .block 8*4 ; 8 words to store temp. registers + +HaltStr + .stringz "\r\nHalted\r\n" + +RebootStr + .stringz "\r\nRebooting . . .\r\n" + +Str01 + .stringz "\r\nHPMC\r\n" + +Str02 + .stringz "\r\nPower Fail\r\n" + +Str03 + .stringz "\r\nRecovery Counter Trap\r\n" + +Str04 + .stringz "\r\nExternal Interrupt\r\n" + +Str05 + .stringz "\r\nLPMC\r\n" + +Str06 + .stringz "\r\nITLB Miss\r\n" + +Str07 + .stringz "\r\nInstruction Memory Protection Trap\r\n" + +Str08 + .stringz "\r\nIllegal Instruction\r\n" + +Str09 + .stringz "\r\nBreak Trap\r\n" + +Str0a + .stringz "\r\nPrivileged Operation\r\n" + +Str0b + .stringz "\r\nPrivileged Register\r\n" + +Str0c + .stringz "\r\nOverflow Trap\r\n" + +Str0d + .stringz "\r\nConditional Trap\r\n" + +Str0e + .stringz "\r\nAssist Exception\r\n" + +Str0f + .stringz "\r\nData TLB Miss\r\n" + +Str10 + .stringz "\r\nNon-access ITLB Miss\r\n" + +Str11 + .stringz "\r\nNon-access DTLB Miss\r\n" + +Str12 + .stringz "\r\nData Memory Protection Trap\r\n" + +Str13 + .stringz "\r\nData Memory Break\r\n" + +Str14 + .stringz "\r\nTLB Dirty Bit Trap\r\n" + +Str15 + .stringz "\r\nPage Reference Trap\r\n" + +Str16 + .stringz "\r\nAssist Emulation Trap\r\n" + +Str17 + .stringz "\r\nHigher-privilege Trap\r\n" + +Str18 + .stringz "\r\nLower-privilege Trap\r\n" + +Str19 + .stringz "\r\nTaken Branch Trap\r\n" + +Str20 + .stringz "\r\nHere I am!\r\n" + +PrintLabels +#ifdef PRINT_SPACE + .byte 10 + .stringz "sr 0 = 0x" + .byte 13 + .stringz "sr 1 = 0x" + .byte 13 + .stringz "sr 2 = 0x" + .byte 13 + .stringz " sr 3 = 0x" + .byte 12 + .stringz "\r\nsr 4 = 0x" + .byte 13 + .stringz " sr 5 = 0x" + .byte 13 + .stringz " sr 6 = 0x" + .byte 13 + .stringz " sr 7 = 0x" + .byte 13 + .stringz "\r\n\ngr 0 = 0x" +#else + .byte 10 + .stringz "gr 0 = 0x" +#endif + + .byte 13 + .stringz " gr 1 = 0x" + .byte 13 + .stringz " gr 2 = 0x" + .byte 13 + .stringz " gr 3 = 0x" + .byte 12 + .stringz "\r\ngr 4 = 0x" + .byte 13 + .stringz " gr 5 = 0x" + .byte 13 + .stringz " gr 6 = 0x" + .byte 13 + .stringz " gr 7 = 0x" + .byte 12 + .stringz "\r\ngr 8 = 0x" + .byte 13 + .stringz " gr 9 = 0x" + .byte 13 + .stringz " gr10 = 0x" + .byte 13 + .stringz " gr11 = 0x" + .byte 12 + .stringz "\r\ngr12 = 0x" + .byte 13 + .stringz " gr13 = 0x" + .byte 13 + .stringz " gr14 = 0x" + .byte 13 + .stringz " gr15 = 0x" + .byte 12 + .stringz "\r\ngr16 = 0x" + .byte 13 + .stringz " gr17 = 0x" + .byte 13 + .stringz " gr18 = 0x" + .byte 13 + .stringz " gr19 = 0x" + .byte 12 + .stringz "\r\ngr20 = 0x" + .byte 13 + .stringz " gr21 = 0x" + .byte 13 + .stringz " gr22 = 0x" + .byte 13 + .stringz " gr23 = 0x" + .byte 12 + .stringz "\r\ngr24 = 0x" + .byte 13 + .stringz " gr25 = 0x" + .byte 13 + .stringz " gr26 = 0x" + .byte 13 + .stringz " gr27 = 0x" + .byte 12 + .stringz "\r\ngr28 = 0x" + .byte 13 + .stringz " gr29 = 0x" + .byte 13 + .stringz " gr30 = 0x" + .byte 13 + .stringz " gr31 = 0x" + .byte 13 + .stringz "\r\n\nrctr = 0x" + .byte 53 + .stringz " cpu0 = 0x" + .byte 12 + .stringz "\r\npid1 = 0x" + .byte 13 + .stringz " pid2 = 0x" + .byte 13 + .stringz " ccr = 0x" + .byte 13 + .stringz " sar = 0x" + .byte 12 + .stringz "\r\npid3 = 0x" + .byte 13 + .stringz " pid4 = 0x" + .byte 13 + .stringz " iva = 0x" + .byte 13 + .stringz " eiem = 0x" + .byte 12 + .stringz "\r\nitmr = 0x" + .byte 13 + .stringz " iasq = 0x" + .byte 13 + .stringz " iaoq = 0x" + .byte 13 + .stringz " iir = 0x" + .byte 32 + .stringz "\r\n iasq = 0x" + .byte 13 + .stringz " iaoq = 0x" + .byte 12 + .stringz "\r\n isr = 0x" + .byte 13 + .stringz " ior = 0x" + .byte 13 + .stringz " ipsw = 0x" + .byte 13 + .stringz " eirr = 0x" + .byte 12 + .stringz "\r\ncr24 = 0x" + .byte 13 + .stringz " cr25 = 0x" + .byte 13 + .stringz " cr26 = 0x" + .byte 13 + .stringz " cr27 = 0x" + .byte 12 + .stringz "\r\ncr28 = 0x" + .byte 13 + .stringz " cr29 = 0x" + .byte 13 + .stringz " cr30 = 0x" + .byte 13 + .stringz " cr31 = 0x" + .byte 4 + .stringz "\r\n\n" + + .end |