10OSWRCH=&FFEE 20OSCRLF=&FFE7 30OSBYTE=&FFF4 40OSASCI=&FFE3 50OSRDCH=&FFE0 60OSCLI=&FFF7 70BRKVEC=&0202 80USERVEC=&0200 90USERSWI=&FF00 100TEMP=&0070:REM Workspace for VSTRING 110TEMP1=&0071 120COMLEN=8 130B%=&8000:REM Assemble at &8000,load after prog 135DIM C% 500 140FOR Z=4 TO 7 STEP 3 150P%=B%:O%=C% 160[ OPT Z 170 JMP LANGJP 180 JMP SERVJP 190 EQUB &C2 200 EQUB &1F 210 EQUB &00 220 EQUS "Terminal Emulator" 230 EQUB &00 240 EQUS "1.00" 250.COPYR EQUB &00 260 EQUS "(C) 1982 Acorn" 270 EQUB &00 280.LANGJP CLI \Language entry point 290 LDA #&E5 300 LDX #&1 310 LDY #&0 320 JSR OSBYTE \*FX 229,1 Disable escape action 330 LDA #&02 340 TAX 350 LDY #&00 360 JSR OSBYTE \*FX2,2 Enable 423 370 LDA #22:JSR OSWRCH:LDA #3:JSR OSWRCH \Mode 3 380 JSR VSTRING 390 EQUB &0C 400 EQUS "Acorn Terminal Emulator 1.00" 410 EQUB &0D 420 EQUB &00 430 LDX #7:LDA #7:JSR OSBYTE \*FX 7,7 9600 Rx 440 LDX #7:LDA #8:JSR OSBYTE \*FX 8,7 9600 Tx 450.LOOP LDA #&91 460 LDX #&01 470 LDY #&00 480 JSR OSBYTE \*FX145,1 Get char from 423 i/p buffer 490 BCS KEYBOARD \C=1 => Buffer empty 500 TYA 510 AND #&7F 520 CMP #&0E \Start protect char? 530 BNE NTEST 540 LDA #17 550 JSR OSWRCH 560 LDA #&00 570 JSR OSWRCH \Black foreground 580 LDA #17 590 JSR OSWRCH 600 LDA #129 610 JSR OSWRCH \White background 620 JMP LOOP 630.NTEST CMP #&17 \End protect char? 640 BNE WRCH 650 LDA #17 660 JSR OSWRCH 670 LDA #1 680 JSR OSWRCH \White foreground 690 LDA #17 700 JSR OSWRCH 710 LDA #128 720 JSR OSWRCH \Black background 730 JMP LOOP 740.WRCH JSR OSWRCH \Write char to VDU 750.KEYBOARD LDA #&91 760 LDX #&00 770 LDY #&00 780 JSR OSBYTE \*FX 145,0 Get char from keyboard buffer 790 BCS LOOP \C=1 => Buffer empty 800 TYA 810 PHA 820 LDA #3 830 LDX #3 840 LDY #0 850 JSR OSBYTE \*FX3,3 O/P to printer & 423 860 PLA 870 JSR OSWRCH 880 LDA #&03 890 LDX #&00 900 LDY #&00 910 JSR OSBYTE \*FX3,0 Disable 423 output 920 CLC 930 BCC LOOP 940.SERVJP CMP #&04 \Offer command line 950 BNE RET 960 TYA \Save regs 970 PHA 980 TXA 990 PHA 1000 LDX #COMLEN \Load counter 1010.CHKCOM LDA (&F2),Y \Pointer to command line 1020 CMP COMMAND-1,X 1030 BNE BADCOMM \Command not recognised 1040 INY 1050 DEX 1060 BNE CHKCOM 1070.DUMBGO PLA 1080 TAX \Get rom no. in X 1090 LDA #&8E 1100 JSR OSBYTE \Jump to language 1110.BADCOMM CMP #ASC"." \Check for abbreviation 1120 BEQ DUMBGO 1130 PLA 1140 TAX 1150 PLA 1160 TAY 1170 LDA #&04 \Pass command on 1180.RET RTS 1190.VSTRING PLA 1200 STA TEMP 1210 PLA 1220 STA TEMP+1 1230 LDY #&00 1240 BEQ VLOOP 1250.VGO JSR OSASCI 1260.VLOOP INC TEMP 1270 BNE VGON 1280 INC TEMP+1 1290.VGON LDA (TEMP),Y 1300 BPL VGO 1310 JMP (TEMP) 1320.COMMAND EQUS "LANIMRET":] REM \Not *TREMINAL!!! 1330NEXT