ÓDTSRC °°±°° ;****************************************************** °°±±° ;THIS IS A DUMB TERMINAL IN MACHINE LANGUAGE. °°±²° ;IT RUNS VERY FAST AND UTILIZES MODEL III ROM-CALLS °°±³° ;IT IS FREE TO COPY,BUT REMEMBER ME AS YOU USE IT °°±´° ;I DID SPEND A FEW HOURS MODIFYING RADIO-SHACKS °°±µ° ;SAMPLE CODE IN THE BASIC MANUAL. HAVE FUN!! °°±¶° ;E.B. "DOC" WALKER --- ARVADA COLORADO °°±·° ;******************************************************* °°±¸° ORG 0F000H ;IF RELOCATED WATCH SCRA °°±¹° INITRS XOR A ;INIT PROGRAM °°²°° LD (REG3),A ;START RS232 INIT °°²±° LD A,85 ;NO WAIT,300BAUD,EP=2 °°²²° LD (REG1),A ;ST=1,WD=7 °°²³° LD A,164 °°²´° LD (REG2),A °°²µ° CALL RSINIT ;DO IT INIT RS232 °°²¶° FRZTOP CALL VDCLS ;CLEAR SCREEN °°²·° LD HL,SCPROT ;SCROLL PROTECT ADDRESS °°²¸° LD (HL),01H ;PROTECT 1 LINE °°²¹° MSGPRT LD HL,MESSG ;PRINT CREDITS TOP PAGE °°³°° LD DE,VIDEO+5 °°³±° LD BC,MESSL °°³²° LDIR °°³³° CALL VDCLS ;CLEAR IT AGAIN °°³´° CLSCRA LD D,00H ;CLEAR 15 BYTES OF SCRATCH °°³µ° LD HL,SCRA °°³¶° LD A,10H °°³·° LOOP LD (HL),D °°³¸° DEC A °°³¹° CP 00H °°´°° JR Z,KEYIN ;LEAVE IF DONE °°´±° INC HL ;ELSE INCREMENT ADDRESS °°´²° JR LOOP ;CLEAR THE REST °°´³° ;******************************************************** °°´´° ;DUMB TERMINAL STARTS HERE. KEYIN CHECKS KEY-BRD FOR °°´µ° ;CHARACTERS AND THEN PASSES OFF TO CHECK THE RS232 INPUT. °°´¶° ;ANY TIME A NON-NULL CHARACTER SHOWS UP THE PROGRAM MAKES °°´·° ;SURE IT'S NOT A 'BREAK' OR 'CLEAR' KEY. IF SO PROGRAM °°´¸° ;RETURNS TO CALLER OR CLEARS SCREEN AS REQUIRED. °°´¹° ;******************************************************** °°µ°° KEYIN CALL KBCHAR ;CHK KEY-BRD FOR CHAR °°µ±° LD D,A ;STORE IT FOR LATER RECALL °°µ²° LD B,01H ;ID THIS ROUTINE FOR RET1 °°µ³° CP 00H ;COMP A TO ZERO °°µ´° JR NZ,CHCK ;IF NON-ZERO CHCK SPECIAL °°µµ° RET1 LD A,D ;RESTORE A °°µ¶° CP 00H ;COMP A TO ZERO °°µ·° JR Z,RSIN ;IF ZERO GO GET RS-INPUT °°µ¸° CALL RSTX ;TRM CHAR TO RS232 °°µ¹° RSIN LD HL,RCVB ;LOAD RCV-BUFF ADDRESS °°¶°° CALL RSRCV ;GET CHARACTER FROM RS232 °°¶±° LD A,(HL) ;A HAS CHARACTER °°¶²° LD D,A ;STORE IT FOR FUTURE USE °°¶³° LD B,02H ;ID THIS ROUTINE °°¶´° CP 00H ;COMPARE TO ZERO °°¶µ° JR NZ,CHCK ;IF NON-ZERO GO CHECK SPECIAL °°¶¶° RET2 LD A,D ;RESTORE A °°¶·° CP 00H ;COMPARE A TO ZERO °°¶¸° JR Z,KEYIN ;IF ZERO GET KEY-BRD INPUT °°¶¹° CALL VDCHAR ;PRINT THE CHAR ON SCREEN °°·°° JR KEYIN ;RETURN TO KEY-BRD CHECK °°·±° STOP RET ;GO HOME TO CALLER(BASIC/DOS) °°·²° ;******************************************************** °°·³° ;THE CHCK ROUTINE CHECKS THE NON-ZERO KEY IN THE 'A' °°·´° ;REGISTER FOR SPECIAL FUNCTIONS. USER CAN ADD TO THIS °°·µ° ;CODE FOR HIS/HER OWN SPECIAL FUNCTIONS. NOW ONLY °°·¶° ;'BREAK' AND 'CLEAR' KEYS ARE CHECKED. °°··° ;ANY ROUTINE COULD BE CALLED AS 'A' IS PROTECTED IN 'D' °°·¸° ;OR PRE-ZEROED SRCATCH 'SCRA' CAN BE USED PRIOR TO CALL °°·¹° ;******************************************************** °°¸°° CHCK CP 1FH ;COMPARE A TO CLEAR KEY °°¸±° CALL Z,VDCLS ;DO IT IF IT IS CLEAR °°¸²° LD A,D ;RESTORE A INCASE DESTROYED °°¸³° CP 01H ;COMPARE A TO BREAK KEY °°¸´° JR Z,STOP ;IF SO, RETURN TO CALLER °°¸µ° LD A,B ;LOAD A WITH ID OF CALL °°¸¶° CP 01H ;IF 01H THEN KEYIN CALLED °°¸·° JR Z,RET1 ;GO BACK TO RET1 °°¸¸° CP 02H ;IF 02H THEN RSIN CALLED °°¸¹° JR Z,RET2 ;GO BACK TO RET2 °°¹°° KBCHAR EQU 002BH ;IN-ROM $KBCHAR °°¹±° VDCHAR EQU 0033H ;IN-ROM $VDCHAR °°¹²° RSRCV EQU 0050H ;IN-ROM $RSRCV °°¹³° VDCLS EQU 01C9H ;IN-ROM $VDCLS °°¹´° RCVB EQU 41E8H ;RCV BUFFER °°¹µ° REG1 EQU 41F8H ;RS232 ADDRESS-BAUD RATE °°¹¶° REG2 EQU 41F9H ;RS232 ADDRESS-WAIT N-WAIT °°¹·° REG3 EQU 41FAH ;RS232 ADDRESS-STATUS REG °°¹¸° SCRA EQU 0F0F0H ;MY SCRATCH FOR FUTURE USE °°¹¹° RSINIT EQU 005AH ;IN-ROM $RSINIT °±°°° RSTX EQU 0055H ;IN-ROM $RSTX °±°±° MESSG DEFM 'THE DUMB TERMINAL ** E.B. "DOC" WALKER **' °±°²° MESSL EQU $-MESSG °±°³° VIDEO EQU 3C00H ;START OF SCREEN ADDRESS °±°´° SCPROT EQU 4214H ;ADDRESS OF SRCOLL PROTECT °±°µ° END 0F000H ;THATS'S ALL FOLKS