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