0100 ; LIST#D:AUTBUILD
0110 ;
0120 ; ROUTINE TO BOOT IN THE RS232 INTERFACE
0130 ; THEN EXECUTE A BASIC STATEMENT
0140 ; E.G. RUN"D:MENU
0150 ;
0000 0160 DUMMY = $0000
E459 0170 SIO = $E459
F3E4 0180 SCRNRD = $F3E4
000C 0190 DOSINI = $0C
0000 0200 *= $3800
3800 A950 0210 LDA #$50
3802 8D0003 0220 STA $0300 SET UP DCB TO
3805 A901 0230 LDA #1 INPUT "R" HANDLER
3807 8D0103 0240 STA $0301 FROM 850 INTERFACE
380A A93F 0250 LDA #$3F
380C 8D0203 0260 STA $0302
380F A940 0270 LDA #$40
3811 8D0303 0280 STA $0303
3814 A905 0290 LDA #5
3816 8D0503 0300 STA $0305
3819 8D0603 0310 STA $0306
381C A900 0320 LDA #0
381E 8D0403 0330 STA $0304
3821 8D0903 0340 STA $0309
3824 8D0A03 0350 STA $030A
3827 8D0B03 0360 STA $030B
382A A90C 0370 LDA #$0C
382C 8D0803 0380 STA $0308
382F 2059E4 0390 JSR SIO TO INPUT "R" HANDLER
0400 ;
3832 1003 0410 BPL IO.OK
3834 4C5738 0420 JMP LDBSC IF CAN'T INPUT
0430 ;
3837 A20B 0440 IO.OK LDX #$0B SET UP INPUT BUFFER
3839 BD0005 0450 LOOP LDA $0500,X
383C 9D0003 0460 STA $0300,X
383F CA 0470 DEX
3840 10F7 0480 BPL LOOP
3842 2059E4 0490 JSR SIO TO BOOT IN "R"
0500 ;
3845 3010 0510 BMI LDBSC IF BOOT FAILED
0520 ;
3847 200605 0530 JSR $0506 TO INIT. RS232
0535 ;
384A A50C 0540 LDA DOSINI CREATE IND. JSR
384C 8D5538 0550 STA INDJSR+1
384F A50D 0560 LDA DOSINI+1
3851 8D5638 0570 STA INDJSR+2
3854 200000 0580 INDJSR JSR DUMMY
0590 ;
3857 A967 0600 LDBSC LDA #SCRVEC SET UP ADDRESS
3859 8D2103 0610 STA $0321 TO "STEAL" SCREEN EDITOR
385C A938 0620 LDA #$38 VECTOR TABLE
385E 8D2203 0630 STA $0322
0640 ;
3861 A900 0650 LDA #$0 DUMMY VARIABLE FOR
3863 8DD638 0660 STA CMDLEN LENGTH OF BASIC COMMAND
0665 ;
3866 60 0670 RTS RETURN TO DOS
0680 ;
0067 0690 SCRVEC = *-$3800
3867 FBF3 0700 .DBYTE $FBF3 COPY OF SCREEN EDITOR
3869 33F6 0710 .DBYTE $33F6 VECTOR TABLE, EXCEPT
386B 7638 0720 .WORD SCRNWT WITH NEW SCREEN WRITE
386D A3F6 0730 .DBYTE $A3F6
386F 33F6 0740 .DBYTE $33F6
3871 3CF6 0750 .DBYTE $3CF6
3873 4CE4F3 0760 JMP SCRNRD
0770 ;
3876 0780 SCRNWT = *
3876 00 0790 .BYTE $0
3877 ACD638 0800 LDY CMDLEN NEW SCREEN WRITE ROUTINE
387A F009 0810 BEQ ENDBAS
387C B99138 0820 LDA BASCMD-1,Y WRITES THE STORED BASIC
387F CED638 0830 DEC CMDLEN COMMAND TO THE SCREEN
3882 A001 0840 LDY #1
3884 60 0850 RTS
0860 ;
3885 8C2103 0870 ENDBAS STY $0321 SETS UP VALUES FOR
3888 A9E4 0880 LDA #$E4 NORMAL RETURN
388A 8D2203 0890 STA $0322
388D A99B 0900 LDA #$9B
388F A001 0910 LDY #1
3891 60 0920 RTS
0930 ;
3892 0940 BASCMD = * STORAGE RESERVED FOR
3892 0950 *= *+$44 BASIC COMMAND
38D6 0960 CMDLEN = * LENGTH OF BASIC COMMAND
38D6 0970 .END
Back to previous page