Classic Computer Magazine Archive PROGRAM LISTING: 83-12/BOOTBILD.ASM


            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