*********************************************************** * * * Program: MC68HC11 Test Program * * * * Name : HC11TEST.SRC * * * * Date : 20 May 1990 * * * * By : Steven J. Dombrowski * * Computer Electronics Designer * * * * Rensselaer Polytechnic Institute * * Electrical, Computer & Systems Eng. Dept. * * Troy, N.Y. 12180-3590 * * (518) 276-8225 * * * * This program tests all the ports of the MC68HC11A8 * * and will also work on the M68HC11EVB board. The * * program can be RAM ($C000)or ROM ($6000) based. * * * * Notes on A/D port operation: * * * * 1. All 8 channels are scanned and contiuously updated.* * 2. Only 4 channels can be read at one time. * * 3. Note that ch5 is the first channel to be displayed * * due to the speed of the sampling (adr1 is valid * * 33 cycles after a write to adctl). * * 4. Since PE0 is also used to select the Buffalo * * monitor or EEPROM upon reset on the EVB, you should* * put 7E E0 0A at EEPROM location $B600 using the * * MM command. Then move jumper J4 from pins 1-2 to * * 2-3. Pressing the reset button will put you into * * the Buffalo monitor. * *********************************************************** * * * program origin and equates * * * ******************************* org $c000 inchar equ $ffcd outcrlf equ $ffc4 outstrg equ $ffc7 outstrg0 equ $ffca outa equ $ffb8 porta equ $1000 portb equ $1004 portc equ $1003 portd equ $1008 porte equ $100a pactl equ $1026 ddrc equ $1007 ddrd equ $1009 adctl equ $1030 adr1 equ $1031 adr2 equ $1032 adr3 equ $1033 adr4 equ $1034 ************************ * * * Introductory message * * * ************************ jsr clr29 * clear screen ldx #line1 * prints program title jsr outstrg0 * message jsr sk228 ldx #line2 * prints program jsr outstrg0 * message jsr sk224 ldx #line3 * prints location jsr outstrg0 * message jsr cont * print continuation msg ********************* * * * main menu program * * * ********************* main jsr clr29 * clear screen ldx #menu1 * prints main menu jsr outstrg0 * message jsr sk223 ldx #menu2 * prints select jsr outstrg0 * message jsr sk233 ldx #menu3 * prints test a jsr outstrg0 * message jsr sk233 ldx #menu4 * prints test b jsr outstrg0 * message jsr sk233 ldx #menu5 * prints test c jsr outstrg0 * message jsr sk233 ldx #menu6 * prints test d jsr outstrg0 * message jsr sk233 ldx #menu7 * prints test e jsr outstrg0 * message jsr sk233 ldx #menu8 * prints quit jsr outstrg0 * message ldab #2 * skips 2 lines on jsr lines * the screen menu jsr inchar * wait for selection cmpa #$61 * test a ? bne checkb * if not check next test jmp testa * yes, go to test a checkb cmpa #$62 * test b ? bne checkc * if not check next test jmp testb * yes, go to test b checkc cmpa #$63 * test c ? bne checkd * if not check next test jmp testc * yes, go to test c checkd cmpa #$64 * test d ? bne checke * if not check next test jmp testd * yes, go to test d checke cmpa #$65 * test e ? bne checkq * if not check next test jmp teste * yes, go to test e checkq cmpa #$71 * check for quit bne menu * if not keep waiting jsr sk231 ldx #quit * quit message jsr outstrg0 ldab #2 jsr lines swi * end program *********************** * * * Test A Main Program * * * *********************** testa jsr clr28 * clear screen ldx #testa1 * prints main menu jsr outstrg0 * message jsr sk223 ldx #testa2 * prints select jsr outstrg0 * message jsr sk223 ldx #testa3 * prints test a jsr outstrg0 jsr sk223 ldx #testa4 * prints test b jsr outstrg0 * message jsr sk223 ldx #testa5 * prints quit msg jsr outstrg0 * message ldab #2 * skips 2 lines on jsr lines * the screen menua jsr inchar * wait for selection cmpa #$61 * test a ? bne chkb * if not check next test jmp testaa * yes, go to test a chkb cmpa #$62 * test b ? bne chkc * if not check next test jmp testab chkc cmpa #$63 * test c ? bne menua * if not keep waiting jmp main * return to main menu **************************** * * * Test A Subtest A Program * * * **************************** testaa jsr axirq * Set Test A *XIRQ vector jsr clr29 * clear screen ldx #tstaa1 jsr outstrg0 * message ldab #2 * skips 2 lines on jsr lines * the screen ldaa #25 * skips 25 spaces on jsr spaces * the screen ldx #tstaa2 jsr outstrg0 * message ldab #2 * skips 2 lines on jsr lines * the screen ldaa #22 * skips 22 spaces on jsr spaces * the screen ldx #tstaa3 jsr outstrg0 * message jsr sk228 ldx #tstaa4 jsr outstrg0 * message jsr sk128 ldx #tstaa5 jsr outstrg0 * message jsr sk128 ldx #tstaa6 jsr outstrg0 * message jsr sk128 ldx #tstaa7 jsr outstrg0 * message jsr sk128 ldx #tstaa8 jsr outstrg0 * message jsr sk221 ldx #tstaa9 jsr outstrg0 * message jsr cont * print continuation msg ldaa #$00 * set bit 7 of staa pactl * porta as input jsr xirq * activates xirq strtaa ldaa porta anda #1 jsr rh staa tstams+22 ldaa porta anda #2 lsra jsr rh staa tstams+31 ldaa porta anda #4 lsra lsra jsr rh staa tstams+40 ldaa porta anda #$80 lsra lsra lsra lsra lsra lsra lsra jsr rh staa tstams+49 ldaa #15 * indent 15 spaces jsr spaces ldx #tstams jsr outstrg0 jsr bkspc * update channel readings jmp strtaa * continue program **************************** * * * Test A Subtest B Program * * * **************************** testab jsr axirq * Set Test A *XIRQ vector jsr clr29 * clear screen ldx #tstab1 jsr outstrg0 * message jsr sk223 ldx #tstab2 jsr outstrg0 * message jsr sk224 ldx #tstab3 jsr outstrg0 * message jsr sk228 ldx #tstab4 jsr outstrg0 * message jsr sk128 ldx #tstab5 jsr outstrg0 * message jsr sk128 ldx #tstab6 jsr outstrg0 * message jsr sk128 ldx #tstab7 jsr outstrg0 * message jsr sk128 ldx #tstab8 jsr outstrg0 * message jsr sk128 ldx #tstab9 jsr outstrg0 * message jsr sk221 ldx #tsab10 jsr outstrg0 * message jsr cont * print continuation msg ldaa #$80 * set bit 7 of staa pactl * porta as output jsr xirq * activates xirq strtab ldaa #$08 staa porta jsr delay ldaa #$10 staa porta jsr delay ldaa #$20 staa porta jsr delay ldaa #$40 staa porta jsr delay ldaa #$80 staa porta jsr delay bra strtab ****************** * * * Test B Program * * * ****************** testb jsr bxirq * Set Test B *XIRQ vector ldaa #$1a * clear screen jsr outa ldab #04 * skips 4 lines on jsr lines * the screen ldaa #26 * skips 26 spaces on jsr spaces * the screen ldx #tstb1 * prints testb jsr outstrg0 * message jsr sk224 ldx #tstb2 * prints testb jsr outstrg0 * message jsr sk228 ldx #tstb3 * prints testb jsr outstrg0 * message jsr sk128 ldx #tstb4 * prints testb jsr outstrg0 * message jsr sk128 ldx #tstb5 * prints testb jsr outstrg0 * message jsr sk128 ldx #tstb6 * prints testb jsr outstrg0 * message jsr sk128 ldx #tstb7 * prints testb jsr outstrg0 * message jsr sk128 ldx #tstb8 * prints testb jsr outstrg0 * message jsr sk128 ldx #tstb9 * prints testb jsr outstrg0 * message jsr sk128 ldx #tstb10 * prints testb jsr outstrg0 * message jsr sk128 ldx #tstb11 jsr outstrg0 jsr sk224 ldx #tstb12 * prints testb jsr outstrg0 * message jsr cont * print continuation msg jsr xirq * activates xirq strtb ldaa #1 staa portb jsr delay ldaa #2 staa portb jsr delay ldaa #4 staa portb jsr delay ldaa #8 staa portb jsr delay ldaa #$10 staa portb jsr delay ldaa #$20 staa portb jsr delay ldaa #$40 staa portb jsr delay ldaa #$80 staa portb jsr delay bra strtb *********************** * * * Test C Main Program * * * *********************** testc jsr clr28 * clear screen ldx #testc1 * prints main menu jsr outstrg0 * message jsr sk223 ldx #testc2 * prints select jsr outstrg0 * message jsr sk229 ldx #testc3 * prints test a jsr outstrg0 * message jsr sk229 ldx #testc4 * prints test b jsr outstrg0 * message jsr sk229 ldx #testc5 * prints quit msg jsr outstrg0 * message ldab #2 * skips 2 lines on jsr lines * the screen menuc jsr inchar * wait for selection cmpa #$61 * test a ? bne chckb * if not check next test jmp testca * yes, go to test a chckb cmpa #$62 * test b ? bne chckc * if not check next test jmp testcb chckc cmpa #$63 * test c ? bne menuc * if not keep waiting jmp main * return to main menu **************************** * * * Test C Subtest A Program * * * **************************** testca jsr cxirq * Set Test C *XIRQ vector jsr clr29 * clear screen ldx #tstca1 jsr outstrg0 * message jsr sk231 ldx #tstca2 jsr outstrg0 * message jsr sk224 ldx #tstca3 jsr outstrg0 * message jsr sk228 ldx #tstca4 jsr outstrg0 * message jsr sk128 ldx #tstca5 jsr outstrg0 * message jsr sk128 ldx #tstca6 jsr outstrg0 * message jsr sk128 ldx #tstca7 jsr outstrg0 * message jsr sk128 ldx #tstca8 jsr outstrg0 * message jsr sk128 ldx #tstca9 jsr outstrg0 * message jsr sk128 ldx #tsca10 jsr outstrg0 * message jsr sk128 ldx #tsca11 jsr outstrg0 * message jsr sk128 ldx #tsca12 jsr outstrg0 * message jsr sk221 ldx #tsca13 jsr outstrg0 * message jsr cont * print continuation msg ldaa #$00 * set bits 0-7 of staa ddrc * portc as input jsr xirq * activates xirq strtca ldaa portc anda #1 jsr rh staa tstcm1+22 ldaa portc anda #2 lsra jsr rh staa tstcm1+31 ldaa portc anda #4 lsra lsra jsr rh staa tstcm1+40 ldaa portc anda #8 lsra lsra lsra jsr rh staa tstcm1+49 ldaa portc anda #$10 lsra lsra lsra lsra jsr rh staa tstcm2+22 ldaa portc anda #$20 lsra lsra lsra lsra lsra jsr rh staa tstcm2+31 ldaa portc anda #$40 lsra lsra lsra lsra lsra lsra jsr rh staa tstcm2+40 ldaa portc anda #$80 lsra lsra lsra lsra lsra lsra lsra jsr rh staa tstcm2+49 ldaa #15 * indent 15 spaces jsr spaces ldx #tstcm1 jsr outstrg0 jsr bkspc * update channel readings jsr outcrlf jsr outcrlf ldaa #15 * indent 15 spaces jsr spaces ldx #tstcm2 jsr outstrg0 jsr bkspc * update channel readings ldaa #$0b jsr outa jsr outa jmp strtca * continue program **************************** * * * Test C Subtest B Program * * * **************************** testcb jsr cxirq * Set Test C *XIRQ vector jsr clr29 * clear screen ldx #tstcb1 jsr outstrg0 * message jsr sk230 ldx #tstcb2 jsr outstrg0 * message jsr sk224 ldx #tstcb3 jsr outstrg0 * message jsr sk228 ldx #tstcb4 jsr outstrg0 * message jsr sk128 ldx #tstcb5 jsr outstrg0 * message jsr sk128 ldx #tstcb6 jsr outstrg0 * message jsr sk128 ldx #tstcb7 jsr outstrg0 * message jsr sk128 ldx #tstcb8 jsr outstrg0 * message jsr sk128 ldx #tstcb9 jsr outstrg0 * message jsr sk128 ldx #tscb10 jsr outstrg0 * message jsr sk128 ldx #tscb11 jsr outstrg0 * message jsr sk128 ldx #tscb12 jsr outstrg0 * message jsr sk221 ldx #tscb13 jsr outstrg0 * message jsr cont * print continuation msg ldaa #$ff * set bits 0-7 of staa ddrc * portc as output jsr xirq * activates xirq strtcb ldaa #1 staa portc jsr delay ldaa #2 staa portc jsr delay ldaa #4 staa portc jsr delay ldaa #8 staa portc jsr delay ldaa #$10 staa portc jsr delay ldaa #$20 staa portc jsr delay ldaa #$40 staa portc jsr delay ldaa #$80 staa portc jsr delay bra strtcb *********************** * * * Test D Main Program * * * *********************** testd jsr clr28 * clear screen ldx #testd1 * prints main menu jsr outstrg0 * message jsr sk223 ldx #testd2 * prints select jsr outstrg0 * message jsr sk229 ldx #testd3 * prints test a jsr outstrg0 * message jsr sk229 ldx #testd4 * prints test b jsr outstrg0 * message jsr sk229 ldx #testd5 * prints quit msg jsr outstrg0 * message ldab #2 * skips 2 lines on jsr lines * the screen menud jsr inchar * wait for selection cmpa #$61 * test a ? bne chdkb * if not check next test jmp testda * yes, go to test a chdkb cmpa #$62 * test b ? bne chdkc * if not check next test jmp testdb chdkc cmpa #$63 * test c ? bne menud * if not keep waiting jmp main * return to main menu **************************** * * * Test D Subtest A Program * * * **************************** testda jsr dxirq * Set Test D *XIRQ vector jsr clr29 * clear screen ldx #tstda1 jsr outstrg0 * message jsr sk231 ldx #tstda2 jsr outstrg0 * message ldab #2 * skips 2 lines on jsr lines * the screen ldaa #22 * skips 22 spaces on jsr spaces * the screen ldx #tstda3 jsr outstrg0 * message jsr sk228 ldx #tstda4 jsr outstrg0 * message jsr sk128 ldx #tstda5 jsr outstrg0 * message jsr sk128 ldx #tstda6 jsr outstrg0 * message jsr sk128 ldx #tstda7 jsr outstrg0 * message jsr sk128 ldx #tstda8 jsr outstrg0 * message jsr sk128 ldx #tstda9 jsr outstrg0 * message jsr sk128 ldx #tsda10 jsr outstrg0 * message jsr sk221 ldx #tsda11 jsr outstrg0 * message jsr cont * print continuation msg ldaa #$00 * set bits 0-5 of staa ddrd * portd as input jsr xirq * activates xirq strtda ldaa portd anda #1 jsr rh staa tstdm1+22 ldaa portd anda #2 lsra jsr rh staa tstdm1+31 ldaa portd anda #4 lsra lsra jsr rh staa tstdm1+40 ldaa portd anda #8 lsra lsra lsra jsr rh staa tstdm1+49 ldaa portd anda #$10 lsra lsra lsra lsra jsr rh staa tstdm2+22 ldaa portd anda #$20 lsra lsra lsra lsra lsra jsr rh staa tstdm2+31 ldaa #15 * indent 15 spaces jsr spaces ldx #tstdm1 jsr outstrg0 jsr bkspc * update channel readings jsr outcrlf jsr outcrlf ldaa #15 * indent 15 spaces jsr spaces ldx #tstdm2 jsr outstrg0 jsr bkspc * update channel readings ldaa #$0b jsr outa jsr outa jmp strtda * continue program **************************** * * * Test D Subtest B Program * * * **************************** testdb jsr dxirq * Set Test D *XIRQ vector jsr clr29 * clear screen ldx #tstdb1 jsr outstrg0 * message jsr sk230 ldx #tstdb2 jsr outstrg0 * message jsr sk224 ldx #tstdb3 jsr outstrg0 * message jsr sk228 ldx #tstdb4 jsr outstrg0 * message jsr sk128 ldx #tstdb5 jsr outstrg0 * message jsr sk128 ldx #tstdb6 jsr outstrg0 * message jsr sk128 ldx #tstdb7 jsr outstrg0 * message jsr sk128 ldx #tstdb8 jsr outstrg0 * message jsr sk128 ldx #tstdb9 jsr outstrg0 * message jsr sk128 ldx #tsdb10 jsr outstrg0 * message jsr sk221 ldx #tsdb11 jsr outstrg0 * message jsr cont * print continuation msg ldaa #$ff * set bits 0-5 of staa ddrd * portd as output jsr xirq * activates xirq strtdb ldaa #1 staa portd jsr delay ldaa #2 staa portd jsr delay ldaa #4 staa portd jsr delay ldaa #8 staa portd jsr delay ldaa #$10 staa portd jsr delay ldaa #$20 staa portd jsr delay bra strtdb *********************** * * * Test E Main Program * * * *********************** teste jsr clr28 * clear screen ldx #teste1 * prints main menu jsr outstrg0 * message jsr sk223 ldx #teste2 * prints select jsr outstrg0 * message jsr sk229 ldx #teste3 * prints test a jsr outstrg0 * message jsr sk229 ldx #teste4 * prints test b jsr outstrg0 * message jsr sk229 ldx #teste5 * prints quit msg jsr outstrg0 * message ldab #2 * skips 2 lines on jsr lines * the screen menue jsr inchar * wait for selection cmpa #$61 * test a ? bne chekb * if not check next test jmp testea * yes, go to test a chekb cmpa #$62 * test b ? bne chekc * if not check next test jmp testeb chekc cmpa #$63 * test c ? bne menue * if not keep waiting jmp main * return to main menu **************************** * * * Test E Subtest A Program * * * **************************** testea jsr exirq * Set Test E *XIRQ vector jsr clr29 * clear screen ldx #tstea1 jsr outstrg0 * message jsr sk231 ldx #tstea2 jsr outstrg0 * message jsr sk224 ldx #tstea3 jsr outstrg0 * message jsr sk228 ldx #tstea4 jsr outstrg0 * message jsr sk128 ldx #tstea5 jsr outstrg0 * message jsr sk128 ldx #tstea6 jsr outstrg0 * message jsr sk128 ldx #tstea7 jsr outstrg0 * message jsr sk128 ldx #tstea8 jsr outstrg0 * message jsr sk128 ldx #tstea9 jsr outstrg0 * message jsr sk128 ldx #tsea10 jsr outstrg0 * message jsr sk128 ldx #tsea11 jsr outstrg0 * message jsr sk128 ldx #tsea12 jsr outstrg0 * message jsr sk221 ldx #tsea13 jsr outstrg0 * message jsr cont * print continuation msg jsr xirq * activates xirq strtea ldaa porte anda #1 jsr rh staa tstem1+22 ldaa porte anda #2 lsra jsr rh staa tstem1+31 ldaa porte anda #4 lsra lsra jsr rh staa tstem1+40 ldaa porte anda #8 lsra lsra lsra jsr rh staa tstem1+49 ldaa porte anda #$10 lsra lsra lsra lsra jsr rh staa tstem2+22 ldaa porte anda #$20 lsra lsra lsra lsra lsra jsr rh staa tstem2+31 ldaa porte anda #$40 lsra lsra lsra lsra lsra lsra jsr rh staa tstem2+40 ldaa porte anda #$80 lsra lsra lsra lsra lsra lsra lsra jsr rh staa tstem2+49 ldaa #15 * indent 15 spaces jsr spaces ldx #tstem1 jsr outstrg0 jsr bkspc * update channel readings jsr outcrlf jsr outcrlf ldaa #15 * indent 15 spaces jsr spaces ldx #tstem2 jsr outstrg0 jsr bkspc * update channel readings ldaa #$0b jsr outa jsr outa jmp strtea * continue program **************************** * * * Test E Subtest B Program * * * **************************** testeb jsr exirq * Set Test E *XIRQ vector jsr clr29 * clear screen ldx #tsteb1 jsr outstrg0 * message jsr sk230 ldx #tsteb2 jsr outstrg0 * message jsr sk223 ldx #tsteb3 jsr outstrg0 * message jsr sk228 ldx #tsteb4 jsr outstrg0 * message jsr sk221 ldx #tsteb5 jsr outstrg0 * message jsr cont * print continuation msg jsr xirq * activates xirq strteb ldaa #$b0 * scan=1,mult=1,ch1-4 staa adctl ldaa adr1 * read ch5 ldab adr1 jsr lh * convert left nibble to ascii staa admsg2+13 * output to screen tba jsr rh * convert right nibble to ascii staa admsg2+14 * output to screen ldaa adr2 * read ch2 ldab adr2 jsr lh * convert left nibble to ascii staa admsg1+21 * output to screen tba jsr rh * convert right nibble to ascii staa admsg1+22 * output to screen ldaa adr3 * read ch3 ldab adr3 jsr lh * convert left nibble to ascii staa admsg1+29 * output to screen tba jsr rh * convert right nibble to ascii staa admsg1+30 * output to screen ldaa adr4 * read ch4 ldab adr4 jsr lh * convert left nibble to ascii staa admsg1+37 * output to screen tba jsr rh * convert right nibble to ascii staa admsg1+38 * output to screen ldaa #$b4 staa adctl ldaa adr1 * read ch1 ldab adr1 jsr lh * convert left nibble to ascii staa admsg1+13 * output to screen tba jsr rh * convert right nibble to ascii staa admsg1+14 * output to screen ldaa adr2 * read ch6 ldab adr2 jsr lh * convert left nibble to ascii staa admsg2+21 * output to screen tba jsr rh * convert right nibble to ascii staa admsg2+22 * output to screen ldaa adr3 * read ch7 ldab adr3 jsr lh * convert left nibble to ascii staa admsg2+29 * output to screen tba jsr rh * convert right nibble to ascii staa admsg2+30 * output to screen ldaa adr4 * read ch8 ldab adr4 jsr lh * convert left nibble to ascii staa admsg2+37 * output to screen tba jsr rh * convert right nibble to ascii staa admsg2+38 * output to screen ldaa #20 * indent 20 spaces jsr spaces ldx #admsg1 * display ch1-4 jsr outstrg0 jsr bkspc2 * update channel readings jsr outcrlf jsr outcrlf ldaa #20 * indent 20 spaces jsr spaces ldx #admsg2 * display ch5-8 jsr outstrg0 jsr bkspc2 * update channel readings ldaa #$0b * go up 2 lines to ch1-4 jsr outa jsr outa jmp strteb * continue program ************************** * * * Subroutine to activate * * the *XIRQ line * * * ************************** xirq tpa anda #$bf tap rts ************************** * * * Subroutine for setting * * Test A *XIRQ vector * * * ************************** axirq ldaa #$7e staa $00f1 * This is the manual way of ldaa #$c0 * setting the xirq vector staa $00f2 * for each menu. ldaa #$a4 * Must set for each menu. staa $00f3 rts ************************** * * * Subroutine for setting * * Test B *XIRQ vector * * * ************************** bxirq ldaa #$7e staa $00f1 * This is the manual way of ldaa #$c0 * setting the xirq vector staa $00f2 * for each menu. ldaa #$1e * Must set for each menu. staa $00f3 rts ************************** * * * Subroutine for setting * * Test C *XIRQ vector * * * ************************** cxirq ldaa #$7e staa $00f1 * This is the manual way of ldaa #$c2 * setting the xirq vector staa $00f2 * for each menu. ldaa #$f7 * Must set for each menu. staa $00f3 rts ************************** * * * Subroutine for setting * * Test D *XIRQ vector * * * ************************** dxirq ldaa #$7e staa $00f1 * This is the manual way of ldaa #$c5 * setting the xirq vector staa $00f2 * for each menu. ldaa #$2a * Must set for each menu. staa $00f3 rts ************************** * * * Subroutine for setting * * Test E *XIRQ vector * * * ************************** exirq ldaa #$7e staa $00f1 * This is the manual way of ldaa #$c7 * setting the xirq vector staa $00f2 * for each menu. ldaa #$0d * Must set for each menu. staa $00f3 rts ***************************************** * * * Subroutine to clear screen, move down * * 4 lines and over 28 spaces * * * ***************************************** clr28 ldaa #$1a * clear screen jsr outa ldab #04 * skips 4 lines on jsr lines * the screen ldaa #28 * skips 28 spaces on jsr spaces * the screen rts ***************************************** * * * Subroutine to clear screen, move down * * 4 lines and over 29 spaces * * * ***************************************** clr29 ldaa #$1a * clear screen jsr outa ldab #04 * skips 4 lines on jsr lines * the screen ldaa #29 * skips 29 spaces on jsr spaces * the screen rts ****************************************** * * * Subroutine to skip 1 line & 28 spaces * * * ****************************************** sk128 ldab #1 * skips 1 line on jsr lines * the screen ldaa #28 * skips 28 spaces on jsr spaces * the screen rts ****************************************** * * * Subroutine to skip 2 lines & 21 spaces * * * ****************************************** sk221 ldab #2 * skips 2 lines on jsr lines * the screen ldaa #21 * skips 21 spaces on jsr spaces * the screen rts ****************************************** * * * Subroutine to skip 2 line & 23 spaces * * * ****************************************** sk223 ldab #2 * skips 2 lines on jsr lines * the screen ldaa #23 * skips 23 spaces on jsr spaces * the screen rts ****************************************** * * * Subroutine to skip 2 lines & 24 spaces * * * ****************************************** sk224 ldab #2 * skips 2 lines on jsr lines * the screen ldaa #24 * skips 24 spaces on jsr spaces * the screen rts ****************************************** * * * Subroutine to skip 2 lines & 28 spaces * * * ****************************************** sk228 ldab #2 * skips 2 lines on jsr lines * the screen ldaa #28 * skips 28 spaces on jsr spaces * the screen rts ****************************************** * * * Subroutine to skip 2 lines & 29 spaces * * * ****************************************** sk229 ldab #2 * skips 2 lines on jsr lines * the screen ldaa #29 * skips 29 spaces on jsr spaces * the screen rts ****************************************** * * * Subroutine to skip 2 lines & 30 spaces * * * ****************************************** sk230 ldab #2 * skips 2 lines on jsr lines * the screen ldaa #30 * skips 30 spaces on jsr spaces * the screen rts ****************************************** * * * Subroutine to skip 2 lines & 31 spaces * * * ****************************************** sk231 ldab #2 * skips 2 lines on jsr lines * the screen ldaa #31 * skips 31 spaces on jsr spaces * the screen rts ****************************************** * * * Subroutine to skip 2 lines & 33 spaces * * * ****************************************** sk233 ldab #2 * skips 2 lines on jsr lines * the screen ldaa #33 * skips 33 spaces on jsr spaces * the screen rts ****************************************** * * * Subroutine to skip lines on the screen * * * ****************************************** lines jsr outcrlf decb cmpb #0 bne lines rts ******************************************* * * * Subroutine to skip spaces on the screen * * * ******************************************* spaces tab ldaa #$20 spaces2 jsr outa decb cmpb #0 bne spaces2 rts *************************************** * * * Subroutine for continuation message * * * *************************************** cont jsr sk229 ldx #line4 * print continuation jsr outstrg0 * message ldab #3 jsr lines jsr inchar * hit any key to continue rts ******************************* * * * Subroutine to delay 1/2 sec * * * ******************************* delay ldy #2 dly ldx #$e000 dly1 dex cpx #0 bne dly1 dey cpy #0 bne dly rts *********************************** * * * Subroutine to backspace cursor * * for Port A Test A, * * Port C Test A, * * Port D Test A, * * Port E Test A. * * * *********************************** bkspc ldy #$45 bkspc1 ldaa #$08 jsr outa dey cpy #0 bne bkspc1 rts *********************************** * * * Subroutine to backspace cursor * * for Port E Test B * * * *********************************** bkspc2 ldy #$40 bkspc3 ldaa #$08 jsr outa dey cpy #0 bne bkspc3 rts ******************************** * * * Subroutine to convert left * * half of binary byte in acca * * to an ascii character * * * ******************************** lh lsra lsra lsra lsra anda #$0f adda #$30 cmpa #$39 ble out adda #$07 out rts ******************************* * * * Subroutine to convert right * * half of binary byte in acca * * to an ascii character * * * ******************************* rh asla asla asla asla lsra lsra lsra lsra anda #$0f adda #$30 cmpa #$39 ble out1 adda #$07 out1 rts ****************************************************** * * * Screen messages * * * ****************************************************** line1 fcc 'MC68HC11 Test Program' fcb 4 line2 fcc 'by Steven J. Dombrowski' fcb 4 line3 fcc 'Rensselaer Polytechnic Institute' fcb 4 line4 fcc 'Hit any key to continue' fcb 4 menu1 fcc 'MC68HC11 Main Test Menu' fcb 4 menu2 fcc 'Select one of the following tests:' fcb 4 menu3 fcc '(a) Test Port A' fcb 4 menu4 fcc '(b) Test Port B' fcb 4 menu5 fcc '(c) Test Port C' fcb 4 menu6 fcc '(d) Test Port D' fcb 4 menu7 fcc '(e) Test Port E' fcb 4 menu8 fcc '(q) Quit Program' fcb 4 quit fcc 'Main program ended' fcb 4 testa1 fcc 'MC68HC11 Port A Test Menu' fcb 4 testa2 fcc 'Select one of the following tests:' fcb 4 testa3 fcc '(a) Test input bits 0, 1, 2, and 7' fcb 4 testa4 fcc '(b) Test output bits 3, 4, 5, 6, and 7' fcb 4 testa5 fcc '(c) Return to Main Menu' fcb 4 tstaa1 fcc 'MC68HC11 Port A Test A' fcb 4 tstaa2 fcc 'Test Input Bits 0, 1, 2, and 7' fcb 4 tstaa3 fcc 'Connect test box switches as follows:' fcb 4 tstaa4 fcc 'PB0 Pin 2 to P1 Pin 34' fcb 4 tstaa5 fcc 'PB1 Pin 3 to P1 Pin 33' fcb 4 tstaa6 fcc 'PB2 Pin 4 to P1 Pin 32' fcb 4 tstaa7 fcc 'PB7 Pin 9 to P1 Pin 27' fcb 4 tstaa8 fcc 'CB1 Pin 10 to P1 Pin 18' fcb 4 tstaa9 fcc 'Press CB1 to return to Port A Test Menu' fcb 4 tstams fcc 'Reading Port A Bit 0: Bit 1: Bit 2: Bit 7: ' fcb 4 tstab1 fcc 'MC68HC11 Port A Test B' fcb 4 tstab2 fcc 'Test Output Bits 3, 4, 5, 6, and 7' fcb 4 tstab3 fcc 'Connect test box LEDs as follows:' fcb 4 tstab4 fcc 'PA3 Pin E to P1 Pin 31' fcb 4 tstab5 fcc 'PA4 Pin F to P1 Pin 30' fcb 4 tstab6 fcc 'PA5 Pin H to P1 Pin 29' fcb 4 tstab7 fcc 'PA6 Pin J to P1 Pin 28' fcb 4 tstab8 fcc 'PA7 Pin K to P1 Pin 27' fcb 4 tstab9 fcc 'CB1 Pin 10 to P1 Pin 18' fcb 4 tsab10 fcc 'Press CB1 to return to Port A Test Menu' fcb 4 tstb1 fcc 'MC68HC11 Port B Output Test' fcb 4 tstb2 fcc 'Connect test box LEDs as follows:' fcb 4 tstb3 fcc 'PA0 Pin B to P1 Pin 42' fcb 4 tstb4 fcc 'PA1 Pin C to P1 Pin 41' fcb 4 tstb5 fcc 'PA2 Pin D to P1 Pin 40' fcb 4 tstb6 fcc 'PA3 Pin E to P1 Pin 39' fcb 4 tstb7 fcc 'PA4 Pin F to P1 Pin 38' fcb 4 tstb8 fcc 'PA5 Pin H to P1 Pin 37' fcb 4 tstb9 fcc 'PA6 Pin J to P1 Pin 36' fcb 4 tstb10 fcc 'PA7 Pin K to P1 Pin 35' fcb 4 tstb11 fcc 'CB1 Pin 10 to P1 Pin 18' fcb 4 tstb12 fcc 'Press CB1 to return to Main Menu' fcb 4 testc1 fcc 'MC68HC11 Port C Test Menu' fcb 4 testc2 fcc 'Select one of the following tests:' fcb 4 testc3 fcc '(a) Test input bits 0-7' fcb 4 testc4 fcc '(b) Test output bits 0-7' fcb 4 testc5 fcc '(c) Return to Main Menu' fcb 4 tstca1 fcc 'MC68HC11 Port C Test A' fcb 4 tstca2 fcc 'Test Input Bits 0-7' fcb 4 tstca3 fcc 'Connect test box switches as follows:' fcb 4 tstca4 fcc 'PB0 Pin 2 to P1 Pin 9' fcb 4 tstca5 fcc 'PB1 Pin 3 to P1 Pin 10' fcb 4 tstca6 fcc 'PB2 Pin 4 to P1 Pin 11' fcb 4 tstca7 fcc 'PB3 Pin 5 to P1 Pin 12' fcb 4 tstca8 fcc 'PB4 Pin 6 to P1 Pin 13' fcb 4 tstca9 fcc 'PB5 Pin 7 to P1 Pin 14' fcb 4 tsca10 fcc 'PB6 Pin 8 to P1 Pin 15' fcb 4 tsca11 fcc 'PB7 Pin 9 to P1 Pin 16' fcb 4 tsca12 fcc 'CB1 Pin 10 to P1 Pin 18' fcb 4 tsca13 fcc 'Press CB1 to return to Port C Test Menu' fcb 4 tstcm1 fcc 'Reading Port C Bit 0: Bit 1: Bit 2: Bit 3: ' fcb 4 tstcm2 fcc 'Reading Port C Bit 4: Bit 5: Bit 6: Bit 7: ' fcb 4 tstcb1 fcc 'MC68HC11 Port C Test B' fcb 4 tstcb2 fcc 'Test Output Bits 0-7' fcb 4 tstcb3 fcc 'Connect test box LEDs as follows:' fcb 4 tstcb4 fcc 'PA0 Pin B to P1 Pin 9' fcb 4 tstcb5 fcc 'PA1 Pin C to P1 Pin 10' fcb 4 tstcb6 fcc 'PA2 Pin D to P1 Pin 11' fcb 4 tstcb7 fcc 'PA3 Pin E to P1 Pin 12' fcb 4 tstcb8 fcc 'PA4 Pin F to P1 Pin 13' fcb 4 tstcb9 fcc 'PA5 Pin H to P1 Pin 14' fcb 4 tscb10 fcc 'PA6 Pin J to P1 Pin 15' fcb 4 tscb11 fcc 'PA7 Pin K to P1 Pin 16' fcb 4 tscb12 fcc 'CB1 Pin 10 to P1 Pin 18' fcb 4 tscb13 fcc 'Press CB1 to return to Port C Test Menu' fcb 4 testd1 fcc 'MC68HC11 Port D Test Menu' fcb 4 testd2 fcc 'Select one of the following tests:' fcb 4 testd3 fcc '(a) Test input bits 0-5' fcb 4 testd4 fcc '(b) Test output bits 0-5' fcb 4 testd5 fcc '(c) Return to Main Menu' fcb 4 tstda1 fcc 'MC68HC11 Port D Test A' fcb 4 tstda2 fcc 'Test Input Bits 0-5' fcb 4 tstda3 fcc 'Connect test box switches as follows:' fcb 4 tstda4 fcc 'PB0 Pin 2 to P1 Pin 20' fcb 4 tstda5 fcc 'PB1 Pin 3 to P1 Pin 21' fcb 4 tstda6 fcc 'PB2 Pin 4 to P1 Pin 22' fcb 4 tstda7 fcc 'PB3 Pin 5 to P1 Pin 23' fcb 4 tstda8 fcc 'PB4 Pin 6 to P1 Pin 24' fcb 4 tstda9 fcc 'PB5 Pin 7 to P1 Pin 25' fcb 4 tsda10 fcc 'CB1 Pin 10 to P1 Pin 18' fcb 4 tsda11 fcc 'Press CB1 to return to Port D Test Menu' fcb 4 tstdm1 fcc 'Reading Port D Bit 0: Bit 1: Bit 2: Bit 3: ' fcb 4 tstdm2 fcc 'Reading Port D Bit 4: Bit 5: Bit 6:nc Bit 7:nc ' fcb 4 tstdb1 fcc 'MC68HC11 Port D Test B' fcb 4 tstdb2 fcc 'Test Output Bits 0-5' fcb 4 tstdb3 fcc 'Connect test box LEDs as follows:' fcb 4 tstdb4 fcc 'PA0 Pin B to P1 Pin 20' fcb 4 tstdb5 fcc 'PA1 Pin C to P1 Pin 21' fcb 4 tstdb6 fcc 'PA2 Pin D to P1 Pin 22' fcb 4 tstdb7 fcc 'PA3 Pin E to P1 Pin 23' fcb 4 tstdb8 fcc 'PA4 Pin F to P1 Pin 24' fcb 4 tstdb9 fcc 'PA5 Pin H to P1 Pin 25' fcb 4 tsdb10 fcc 'CB1 Pin 10 to P1 Pin 18' fcb 4 tsdb11 fcc 'Press CB1 to return to Port D Test Menu' fcb 4 teste1 fcc 'MC68HC11 Port E Test Menu' fcb 4 teste2 fcc 'Select one of the following tests:' fcb 4 teste3 fcc '(a) Test input bits 0-7' fcb 4 teste4 fcc '(b) Test A/D channels 1-8' fcb 4 teste5 fcc '(c) Return to Main Menu' fcb 4 tstea1 fcc 'MC68HC11 Port E Test A' fcb 4 tstea2 fcc 'Test Input Bits 0-7' fcb 4 tstea3 fcc 'Connect test box switches as follows:' fcb 4 tstea4 fcc 'PB0 Pin 2 to P1 Pin 43' fcb 4 tstea5 fcc 'PB1 Pin 3 to P1 Pin 45' fcb 4 tstea6 fcc 'PB2 Pin 4 to P1 Pin 47' fcb 4 tstea7 fcc 'PB3 Pin 5 to P1 Pin 49' fcb 4 tstea8 fcc 'PB4 Pin 6 to P1 Pin 44' fcb 4 tstea9 fcc 'PB5 Pin 7 to P1 Pin 46' fcb 4 tsea10 fcc 'PB6 Pin 8 to P1 Pin 48' fcb 4 tsea11 fcc 'PB7 Pin 9 to P1 Pin 50' fcb 4 tsea12 fcc 'CB1 Pin 10 to P1 Pin 18' fcb 4 tsea13 fcc 'Press CB1 to return to Port E Test Menu' fcb 4 tstem1 fcc 'Reading Port E Bit 0: Bit 1: Bit 2: Bit 3: ' fcb 4 tstem2 fcc 'Reading Port E Bit 4: Bit 5: Bit 6: Bit 7: ' fcb 4 tsteb1 fcc 'MC68HC11 Port E Test B' fcb 4 tsteb2 fcc 'Test A/D channels 1-8' fcb 4 tsteb3 fcc 'Connect A/D test fixture as marked' fcb 4 tsteb4 fcc '( P1 pins 1, 26, 43-51 )' fcb 4 tsteb5 fcc 'Press CB1 to return to Port E Test Menu' fcb 4 admsg1 fcc 'reading ch1: ch2: ch3: ch4: ' fcb 4 admsg2 fcc 'reading ch5: ch6: ch7: ch8: ' fcb 4