Apple II User Manual

Page of 257
2027   ED3B             ;GET A CHAR FROM TAPE SUBROUTINE
2028   ED3B             ;A BUFFER IS USED TO GET BLOCKS OF DATA
2029   ED3B             ;FROM TAPE ,EXCEPT WHEN FORMAT EQUAL TO
2030   ED3B             ;KIM-1 (THE WHOLE FILE IS LOADED AT ONE TIME)
2031   ED3B 20 9E EB    TIBYTE JSR PHXY        ;PUSH X
2032   ED3E AE 36 A4           LDX TAPTR       ;POINTER FOR BUFFER
2033   ED41 E0 50              CPX #80         ;IS BUFFER EMPTY ?
2034   ED43 D0 03              BNE TIB1
2035   ED45 20 53 ED           JSR TIBY1       ;LOAD ANOTHER BLOCK
2036   ED48 BD 16 01    TIB1   LDA TABUFF,X
2037   ED4B E8                 INX
2038   ED4C 8E 36 A4           STX TAPTR
2039   ED4F 20 AC EB           JSR PLXY        ;PULL X
2040   ED52 60                 RTS
2041   ED53             ;LOAD A BLOCK FROM TAPE INTO BUFFER
2042   ED53 20 EA ED    TIBY1  JSR TAISET      ;SET TAPE FOR INPUT
2043   ED56 20 29 EE    TIBY3  JSR GETTAP      ;GET A CHAR FROM TAPE
2044   ED59 C9 23              CMP #'#'        ;CHECK FIRST CHR FOR
2045   ED5B F0 06              BEQ TIBY4       ;START OF BLOCK
2046   ED5D C9 16              CMP #$16        ;IF NOT # SHOULD BE SYN
2047   ED5F D0 F2              BNE TIBY1
2048   ED61 F0 F3              BEQ TIBY3
2049   ED63 A2 00       TIBY4  LDX #0
2050   ED65 20 29 EE    TIBY5  JSR GETTAP      ;NOW LOAD INTO BUFFER
2051   ED68 9D 16 01           STA TABUFF,X
2052   ED6B E8                 INX
2053   ED6C E0 52              CPX #82
2054   ED6E D0 F5              BNE TIBY5
2055   ED70 AD 00 A8           LDA DRB
2056   ED73 29 CF              AND #$CF
2057   ED75 8D 00 A8           STA DRB         ;TURN OFF TAPES
2058   ED78 58                 CLI             ;ENABL INTERR
2059   ED79 20 BD ED           JSR ADDBK1      ;DISPLAY BLK COUNT
2060   ED7C A2 00              LDX #0          ;TO CLEAR PTR IN TIBYTE
2061   ED7E AD 15 01           LDA BLK         ;CHECK THE BLOCK COUNT
2062   ED81 F0 05              BEQ TIBY5A      ;IF FIRST BLK ,DO NOT CMP
2063   ED83 DD 16 01           CMP TABUFF,X
2064   ED86 D0 28              BNE TIBY7       ;BRANCH IF WE MISSED ONE BLOCK
2065   ED88 E8          TIBY5A INX
2066   ED89 8E 36 A4           STX TAPTR
2067   ED8C EE 15 01           INC BLK         ;INCR BLK CONT
2068   ED8F AD 67 01           LDA TABUFF+81   ;STORE THIS BLK CKSUM
2069   ED92 48                 PHA
2070   ED93 AD 66 01           LDA TABUFF+80
2071   ED96 48                 PHA
2072   ED97 CE 12 A4           DEC INFLG       ;SET INFLG DIFF FROM OUTFLG
2073   ED9A 20 E7 F1           JSR BKCKSM      ;COMPUT BLK CKSUM FOR THIS BLK
2074   ED9D 68                 PLA
2075   ED9E CD 66 01           CMP TABUFF+80   ;DO THEY AGREE ?
2076   EDA1 D0 0C              BNE TIBY6
2077   EDA3 68                 PLA
2078   EDA4 CD 67 01           CMP TABUFF+81
2079   EDA7 D0 07              BNE TIBY7
2080   EDA9 EE 12 A4           INC INFLG       ;RESTORE INPUT DEVICE
2081   EDAC A2 01              LDX #1          ;TO GET FIRST CHR IN TIBYTE
2082   EDAE 60                 RTS
2083   EDAF 68          TIBY6  PLA             ;RESTORE STACK PTR
2084   EDB0 68          TIBY7  PLA
2085   EDB1 68                 PLA
2086   EDB2 68                 PLA
2087   EDB3 68                 PLA
2088   EDB4 20 8E E3           JSR CKER0