1 REM DIAGNOSTICS FOR BYTESHIFT TRS-80 MODEL I RS232 2 REM ROGER MURLEY/BYTESHIFT, MAY 2025 3 REM BYTESHIFTMUSIC.COM 10 CLS 20 GOSUB 5000 80 PRINTCHR$(136);"BYTESHIFT";CHR$(132);" SERIAL DIAGNOSTICS TOP ROW KEYS SET PARAMETERS"; 90 PRINT@65,"KEY: PARAM:"; 100 FORI%=1TO7:PRINT@1+((I%+1)*64),"<";I%;"> ";BR%(I%,1);"BAUD";:NEXTI% 110 PRINT@577,"< 8 > PARITY:"; 120 PRINT@641,"< 9 > WORD LEN:"; 130 PRINT@705,"< 0 > STOP BITS:"; 140 PRINT@769,"< : > RTS:"; 150 PRINT@833,"< - > DTR:"; 160 PRINT@897,"< @ > BRK/TX DIS:"; 170 PRINT@160,"RX BUFFER:"; 180 PRINT@224,"TX BUFFER:"; 190 PRINT@294,"CTS:"; 200 PRINT@358,"DSR:"; 210 PRINT@423,"CD:"; 220 PRINT@487,"RI:"; 230 PRINT@544,"DATA RCVD:"; 240 PRINT@610,"OVERRUN:"; 250 PRINT@673,"FR ERROR:"; 260 PRINT@736,"PAR ERROR:"; 270 PRINT@864,CHR$(143);" ANY OTHER KEY SENDS CHARACTER"; 280 PRINT@928,CHR$(143);" VISIT BYTESHIFTMUSIC.COM" 290 K$="2":GOTO 3000:REM PARAMETER DISPLAY AND UART TO INITIAL VALUES 1000 REM MAIN LOOP 1010 K$=INKEY$:DS%=INP(PS%):DC%=INP(PC%) 1020 IFK$<>""THEN3000ELSEIFDS%<>SS%ORDC%<>SC%THEN2000ELSE1010 2000 SS%=DS%:SC%=DC% 2010 IF DC%AND128THENDD%=INP(PD%):POKE15531,DD%:REM PULL RX CHAR FROM UART BUFFER 2020 IFDS%AND128THENPOKE15659,143ELSEPOKE15659,32 2030 IFDS%AND64THENPOKE15723,143ELSEPOKE15723,32 2040 IFDS%AND32THENPOKE15787,143ELSEPOKE15787,32 2050 IFDS%AND16THENPOKE15851,143ELSEPOKE15851,32 2060 IFDC%AND128THENPOKE15915,143:DD%=INP(PD%):POKE15531,DD%:ELSEPOKE15915,32 2070 IFDC%AND32THENPOKE15979,143ELSEPOKE15979,32 2080 IFDC%AND16THENPOKE16043,143ELSEPOKE16043,32 2090 IFDC%AND8THENPOKE16107,143ELSEPOKE16107,32 2990 GOTO1010 3000 REM KEY INPUT 3010 IFASC(K$)>48ANDASC(K$)<56THEN3050 3020 IFK$="-"ORK$="@"ORK$=":"ORK$="8"ORK$="9"ORK$="0"THEN3070 3030 OUTPD%,ASC(K$):POKE15595,ASC(K$) 3040 GOTO1010 3050 K%=VAL(K$) 3060 FORI%=1TO7:IFI%=K%THENOUTPB%,BR%(I%,2):POKE15507+((I%-1)*64),143:NEXTI%:ELSE POKE15507+((I%-1)*64),32:NEXTI% 3070 IFK$="8"THENP%=P%+1:IFP%>3THENP%=1 3080 IFK$="9"THENW%=W%+1:IFW%>4THENW%=1 3090 IFK$="0"THENS%=S%+1:IFS%>2THENS%=1 3100 IFK$=":"THENRT%=ABS(RT%-1) 3110 IFK$="-"THENDT%=ABS(DT%-1) 3120 IFK$="@"THENBK%=ABS(BK%-1) 3190 REM UPDATE DISPLAY AND COMPOSE CONTROL BYTE UC% 3200 ONP%GOTO3210,3220,3230:REM SET PARITY BITS 3210 UC%=UC%AND119:PRINT@595,"ODD ";:GOTO3240 3220 UC%=UC%OR128:UC%=UC%AND247:PRINT@595,"EVEN ";:GOTO3240 3230 UC%=UC%OR8:PRINT@595,"NONE "; 3240 ONS%GOTO3250,3260:REM SET STOP BIT BITS 3250 UC%=UC%AND239:PRINT@723,"1 ";:GOTO 3270 3260 UC%=UC%OR16:IFW%=1THENPRINT@723,"1.5"; ELSE PRINT@723,"2 ";:GOTO3270:REM 1.5 STOP BITS FOR 5 BIT WORD 3270 ONW%GOTO3280,3290,3300,3310 3280 UC%=UC%AND159:PRINT@659,"5 BITS";:GOTO3320 3290 UC%=UC%OR64:UC%=UC%AND223:PRINT@659,"6 BITS";:GOTO3320 3300 UC%=UC%AND191:UC%=UC%OR32:PRINT@659,"7 BITS";:GOTO3320 3310 UC%=UC%OR96:PRINT@659,"8 BITS";:GOTO3320 3320 IFRT%=1THENUC%=UC%OR1:POKE16147,143:ELSEUC%=UC%AND254:POKE16147,32:REM TABLE 6 IN RS232 DOCS SHOW RTS/DTR REVERSED 3330 IFDT%=1THENUC%=UC%OR2:POKE16211,143:ELSEUC%=UC%AND253:POKE16211,32 3340 IFBK%=1THENUC%=UC%AND251:POKE16275,143:ELSEUC%=UC%OR4:POKE16275,32 3400 OUT PC%,UC% 3410 GOTO1010 4999 END 5000 REM INIT AND CONFIG VARIABLES 5010 DATA 110,34,300,85,1200,119,2400,170,4800,204,9600,238,19200,255 5020 DIM BR%(7,2) 5030 FORI%=1TO7:READBR%(I%,1):READBR%(I%,2):NEXTI% 5040 PS%=232:PB%=233:PC%=234:PD%=235 5050 OUT PS%,255 5060 UC%=0:P%=2:W%=3:BK%=0:RT%=0:DT%=0 5070 RETURN