************************************** * Speech Data Dump * * 22.3.1987 * * 24.4.1997 * * * * by Michael Zapf, Germany * * http://www.uni-frankfurt.de/~zapf/ * * Code may be reused without * * notification * ************************************** DEF MAIN REF VMBW,KSCAN,VWTR H10 DATA >1000 HEAD TEXT 'Addr Contents ASCII' BOT TEXT 'Examine at: >' MAIN LI R0,>01F0 BLWP @VWTR SWPB R0 MOVB R0,@>83D4 LI R0,>07F4 BLWP @VWTR LI R0,>8300 LI R1,CODE LI R2,30 COPY MOV *R1+,*R0+ DECT R2 JNE COPY LI R0,4 LI R1,HEAD LI R2,31 BLWP @VMBW LI R0,923 LI R1,BOT LI R2,13 BLWP @VMBW ***** Main program loop LOOP CLR R4 BLWP @INPUT ANDI R2,>FFFE LI R3,4 LOADLP SRC R2,4 MOV R2,R1 SRC R1,4 ANDI R1,>0F00 ORI R1,>4000 MOVB R1,@>9400 DEC R3 JNE LOADLP MOV R4,R1 SLA R1,8 ORI R1,>4000 MOVB R1,@>9400 BL @LIST JMP LOOP ***** Main program loop end ***** Subprograms DELAY LI R9,10 D1 DEC R9 JNE D1 RT ** Convert to hex digits DSPLAY DATA DISWS,DISST DISWS BSS 32 HEX TEXT '0123456789ABCDEF' DISST MOV *R13+,R0 MOV *R13,R1 DECT R13 BL @SETADR LI R4,4 DSLOOP SRC R1,12 MOV R1,R3 ANDI R3,>000F MOVB @HEX(R3),@>8C00 DEC R4 JNE DSLOOP RTWP ** Print ASCII representation if possible ASCII DATA DISWS,ASCGO ASCGO MOV *R13,R0 BL @SETADR LI R2,8 LI R1,PUFFER CLR R3 ALOOP MOVB *R1+,R3 CI R3,>2000 JL UNPRNT CI R3,>7F00 JH UNPRNT PRINT MOVB R3,@>8C00 DEC R2 JNE ALOOP RTWP UNPRNT LI R3,>2E00 JMP PRINT PUFFER BSS 8 LIST LI R0,123 MOV R11,R10 LIST1 BL @SETADR MOVB @HEX(R4),@>8C00 INC R0 MOV R2,R1 BLWP @DSPLAY AI R0,5 LI R1,'= ' MOVB R1,@>8C00 LI R5,4 LI R6,PUFFER LLOOP BL @READIT BL @DELAY MOVB @>8320,R1 BL @READIT BL @DELAY SWPB R1 MOVB @>8320,R1 SWPB R1 INCT R2 JNE LIST2 INC R4 ANDI R4,>000F LIST2 BLWP @DSPLAY MOV R1,*R6+ AI R0,5 DEC R5 JNE LLOOP BLWP @ASCII AI R0,14 CI R0,840 JL LIST1 B *R10 *** Address input INPUT DATA INPWS,INPST INPWS BSS 32 INPST LI R0,936 BL @SETADR LI R1,>2000 LI R2,6 INL1 MOVB R1,@>8C00 DEC R2 JNE INL1 INL2 BL @SETADR LI R1,>1E00 MOVB R1,@>8C00 CLR R1 KEY BLWP @KSCAN LIMI 2 * Exit with QUIT LIMI 0 MOVB @>837C,R1 CI R1,>2000 * new key? JNE KEY MOVB @>8375,R1 CI R1,>0D00 * Enter JEQ ENTER CI R1,>0700 * Erase JEQ INPST CI R1,>3000 * "0" JL KEY CI R1,>3900 * "9" JLE OK CI R1,>4100 * "A" JL KEY CI R1,>4600 * "F" JH KEY OK CI R0,941 JEQ KEY BL @SETADR MOVB R1,@>8C00 INC R0 JMP INL2 ENTER CI R0,936 JEQ KEY DEC R0 LI R3,936 CLR R2 BL @STADR2 E1 CLR R1 MOVB @>8800,R1 CI R1,>3900 * no number? JH ABCDEF CI R1,>1E00 * cursor character? JNE E11 MOV R2,@4(R13) RTWP E11 AI R1,>D000 JMP E2 ABCDEF AI R1,>C900 E2 SRL R1,8 CI R3,936 JNE E3 CI R0,940 JEQ E4 E3 SLA R2,4 A R1,R2 E31 INC R3 JMP E1 E4 MOV R1,@8(R13) JMP E31 SETADR MOV R0,R3 ORI R3,>4000 STADR2 SWPB R3 MOVB R3,@>8C02 SWPB R3 MOVB R3,@>8C02 RT * to be put in the PAD RAM READIT EQU >8300 CODE MOVB @H10,@>9400 NOP * Delaying NOP NOP MOVB @>9000,@>8320 NOP NOP NOP RT END