LOAD from tape

0179   1871             ;       LOAD MEMORY FROM TAPE   
0180   1871             ;
0181   1871 0F 19       TAB    .WORD LOAD12                            
0182   1873             ;
0183   1873 A9 8D       LOADT   LDA   #$8D         ; INIT VOLATILE EXECUTION 
0184   1875 8D EC 17            STA   VEB          ; BLOCK WITH STA ABS.
0185   1878 20 32 19            JSR   INTVEB       
0186   187B             ;                          
0187   187B A9 4C               LDA   #$4C         ; JUMP TYPE RTRN
0188   187D 8D EF 17            STA   VEB+3        
0189   1880 AD 71 18            LDA   TAB          
0190   1883 8D F0 17            STA   VEB+4        
0191   1886 AD 72 18            LDA   TAB+1        
0192   1889 8D F1 17            STA   VEB+5        
0193   188C             ;                          
0194   188C A9 07               LDA   #$07         ; RESET PB5=0 (DATA IN)
0195   188E 8D 42 17            STA   SBD          
0196   1891             ;                          
0197   1891 A9 FF       SYNC    LDA   #$FF         ; CLEAR SAVX FOR SYNC CHAR 1891
0198   1893 8D E9 17            STA   SAVX         
0199   1896             ;                          
0200   1896 20 41 1A    SYNC1   JSR   RDBIT        ; GET A BIT
0201   1899 4E E9 17            LSR   SAVX         ; SHIFT BIT INTO CHAR
0202   189C 0D E9 17            ORA   SAVX         
0203   189F 8D E9 17            STA   SAVX         
0204   18A2 AD E9 17            LDA   SAVX         ; GET NEW CHAR
0205   18A5 C9 16               CMP   #$16         ; SYNC CHAR
0206   18A7 D0 ED               BNE   SYNC1        
0207   18A9             ;                          
0208   18A9 A2 0A               LDX   #$0A         ; TEST FOR 10 SYNC CHARS
0209   18AB 20 24 1A    SYNC2   JSR   RDCHT        
0210   18AE C9 16               CMP   #$16         
0211   18B0 D0 DF               BNE   SYNC         ; IF NOT 10 CHAR  RE-SYNC
0212   18B2 CA                  DEX                
0213   18B3 D0 F6               BNE   SYNC2        
0214   18B5             ;                          
0215   18B5             ;                          
0216   18B5 20 24 1A    LOADT4  JSR   RDCHT        ; LOOK FOR START OF
0217   18B8 C9 2A               CMP   #$2A         ; DATA CHAR
0218   18BA F0 06               BEQ   LOAD11      
0219   18BC C9 16               CMP   #$16         ; IF NOT  SHOULD BE SYN
0220   18BE D0 D1               BNE SYNC 
0221   18C0 F0 F3               BEQ LOADT4        
0222   18C2             		;                 
0223   18C2 20 F3 19    LOAD11  JSR   RDBYT        ; READ ID FROM TAPE
0224   18C5 CD F9 17            CMP   ID           ; COMPARE WITH REQUESTED ID
0225   18C8 F0 0D               BEQ   LOADT5       
0226   18CA AD F9 17            LDA   ID           ; DEFAULT 00 READ RECORD
0227   18CD C9 00               CMP   #$00         ; ANYWAY
0228   18CF F0 06               BEQ   LOADT5       
0229   18D1 C9 FF               CMP   #$FF         ; DEFAULT FFN  IGNOR SA ON
0230   18D3 F0 17               BEQ   LOADT6       ; TAPE
0231   18D5 D0 9C               BNE   LOADT        
0232   18D7             		;                 
0233   18D7 20 F3 19    LOADT5  JSR   RDBYT        ; GET SA FROM TAPE
0234   18DA 20 4C 19            JSR   CHKT          
0235   18DD 8D ED 17            STA   VEB+1        ; SAVX IN VEB+1,2
0236   18E0 20 F3 19            JSR   RDBYT         
0237   18E3 20 4C 19            JSR   CHKT
0238   18E6 8D EE 17            STA   VEB+2
0239   18E9 4C F8 18            JMP   LOADT7
0240   18EC             ;
0241   18EC 20 F3 19    LOADT6  JSR   RDBYT        ; GET SA BUT IGNORE 
0242   18EF 20 4C 19            JSR   CHKT
0243   18F2 20 F3 19            JSR   RDBYT
0244   18F5 20 4C 19            JSR   CHKT
0245   18F8             ;
0246   18F8             ;
0247   18F8 A2 02       LOADT7  LDX   #$02        ; GET 2 CHARS
0248   18FA 20 24 1A    LOAD13  JSR   RDCHT       ; GET CHAR(X)
0249   18FD C9 2F               CMP   #$2F        ; LOOK FOR LAST CHAR
0250   18FF F0 14               BEQ   LOADT8     
0251   1901 20 00 1A            JSR   PACKT       ; CONVERT TO HEX
0252   1904 D0 23               BNE   LOADT9      ; Y=1 NON-HEX CHAR
0253   1906 CA                  DEX              
0254   1907 D0 F1               BNE   LOAD13     
0255   1909             ;                        
0256   1909 20 4C 19            JSR   CHKT        ; COMPUTE CHECKSUM
0257   190C 4C EC 17            JMP   VEB         ; SAVX DATA IN MEMORY
0258   190F 20 EA 19    LOAD12  JSR   INCVEB      ; INCR DATA POINTER
0259   1912 4C F8 18            JMP   LOADT7     
0260   1915             ;                        
0261   1915 20 F3 19    LOADT8  JSR   RDBYT       ; END OF DATA COMPARE CHKSUM 
0262   1918 CD E7 17            CMP   CHKL       
0263   191B D0 0C               BNE   LOADT9     
0264   191D 20 F3 19            JSR   RDBYT      
0265   1920 CD E8 17            CMP   CHKH       
0266   1923 D0 04               BNE   LOADT9     
0267   1925 A9 00               LDA   #$00        ; NORMAL EXIT
0268   1927 F0 02               BEQ   LOAD10     
0269   1929             ;                        
0270   1929 A9 FF       LOADT9  LDA   #$FF        ; ERROR EXIT
0271   192B 85 FA       LOAD10  STA   POINTL
0272   192D 85 FB               STA POINTH
0273   192F 4C 4F 1C            JMP START