Apple II 用户手册
0666 E35F 20 BD ED JSR ADDBK1 ;JUST OUTPUT BLK CNT
0667 E362 A2 01 LDX #1 ;RESTORE X
0668 E364 ;CHECK IF FILE IS CORRECT
0668 E364 ;CHECK IF FILE IS CORRECT
0669 E364 BD 16 01 LOADT2 LDA TABUFF,X ;NOW CHCK FILE NAME
0670 E367 DD 2D A4 CMP NAME-1,X
0670 E367 DD 2D A4 CMP NAME-1,X
0671 E36A D0 C3 BNE LOADTA ;IF NO FILENAME GET
0672 E36C E8 INX ;ANOTHER BLOCK
0672 E36C E8 INX ;ANOTHER BLOCK
0673 E36D E0 06 CPX #6 ;FILENAME=5 CHRS
0674 E36F D0 F3 BNE LOADT2
0674 E36F D0 F3 BNE LOADT2
0675 E371 8E 36 A4 STX TAPTR ;SAVE TAPE BUFF PTR
0676 E374 EE 11 A4 INC PRIFLG ;OUTPUT MSG ONLY TO DISPLAY
0676 E374 EE 11 A4 INC PRIFLG ;OUTPUT MSG ONLY TO DISPLAY
0677 E377 A9 00 LDA #0 ;CLEAR DISPLAY POINTER
0678 E379 8D 15 A4 STA CURPO2
0678 E379 8D 15 A4 STA CURPO2
0679 E37C A0 66 LDY #TMSG7-M1 ;PRINT "LOAD " WITHOUT CLR DISPL
0680 E37E 20 96 E3 JSR CKER1
0680 E37E 20 96 E3 JSR CKER1
0681 E381 CE 11 A4 DEC PRIFLG
0682 E384 60 RTS
0682 E384 60 RTS
0683 E385
0684 E385 ;LINE CKSUM ERROR
0684 E385 ;LINE CKSUM ERROR
0685 E385 20 8E E3 CKERR JSR CKER0 ;SUBR SO MNEM ENTRY CAN USE IT
0686 E388 20 DB E2 JSR WRITAZ ;WRITE ADDR
0686 E388 20 DB E2 JSR WRITAZ ;WRITE ADDR
0687 E38B 4C A1 E1 JMP COMIN
0688 E38E 20 FE E8 CKER0 JSR LL ;SET DEFAULT DEVICES
0688 E38E 20 FE E8 CKER0 JSR LL ;SET DEFAULT DEVICES
0689 E391 20 24 EA JSR CRCK ;<CR>
0690 E394 A0 52 CKER00 LDY #TMSG3-M1 ;PRINT "ERROR"
0690 E394 A0 52 CKER00 LDY #TMSG3-M1 ;PRINT "ERROR"
0691 E396 B9 00 E0 CKER1 LDA M1,Y ;DONT CLR DISPLAY TO THE RIGHT
0692 E399 C9 3B CMP #SEMICOLON
0692 E399 C9 3B CMP #SEMICOLON
0693 E39B F0 06 BEQ CKER2
0694 E39D 20 7A E9 JSR OUTPUT ;ONLY TO TERMINAL
0694 E39D 20 7A E9 JSR OUTPUT ;ONLY TO TERMINAL
0695 E3A0 C8 INY
0696 E3A1 D0 F3 BNE CKER1
0696 E3A1 D0 F3 BNE CKER1
0697 E3A3 60 CKER2 RTS
0698 E3A4
0698 E3A4
0699 E3A4 ;LOAD ROUTINE FROM TAPE WITH KIM-1 FORMAT
0700 E3A4 20 4D EB LOADKI JSR CLRCK ;CLEAR CKSUM
0700 E3A4 20 4D EB LOADKI JSR CLRCK ;CLEAR CKSUM
0701 E3A7 20 EA ED LOADK1 JSR TAISET ;SET TAPE FOR INPUT
0702 E3AA 20 29 EE LOADK2 JSR GETTAP ;READ CHARACTER FROM TAPE
0702 E3AA 20 29 EE LOADK2 JSR GETTAP ;READ CHARACTER FROM TAPE
0703 E3AD C9 2A CMP #'*' ;BEGINNING OF FILE?
0704 E3AF F0 06 BEQ LOADK3 ;YES,BRNCH
0704 E3AF F0 06 BEQ LOADK3 ;YES,BRNCH
0705 E3B1 C9 16 CMP #$16 ;IF NOT * SHOULD BE SYN
0706 E3B3 D0 F2 BNE LOADK1
0706 E3B3 D0 F2 BNE LOADK1
0707 E3B5 F0 F3 BEQ LOADK2
0708 E3B7 20 FD E3 LOADK3 JSR RBYTE ;READ ID FROM TAPE
0708 E3B7 20 FD E3 LOADK3 JSR RBYTE ;READ ID FROM TAPE
0709 E3BA 8D 21 A4 STA SAVA ;SAVE ID
0710 E3BD ;NOW GET ADDR TO DISPLAY
0710 E3BD ;NOW GET ADDR TO DISPLAY
0711 E3BD ;& COMPARE ID AFTERWARDS
0712 E3BD 20 4B E5 JSR CHEKAR ;GET START ADDR LOW
0712 E3BD 20 4B E5 JSR CHEKAR ;GET START ADDR LOW
0713 E3C0 8D 1C A4 STA ADDR
0714 E3C3 20 4B E5 JSR CHEKAR ;GET START ADDR HIGH
0714 E3C3 20 4B E5 JSR CHEKAR ;GET START ADDR HIGH
0715 E3C6 8D 1D A4 STA ADDR+1
0716 E3C9 20 25 E4 JSR GETID ;ID FROM HIM
0716 E3C9 20 25 E4 JSR GETID ;ID FROM HIM
0717 E3CC CD 21 A4 CMP SAVA ;DO IDS MATCH?
0718 E3CF D0 D3 BNE LOADKI ;NO ,GET ANOTHER FILE
0718 E3CF D0 D3 BNE LOADKI ;NO ,GET ANOTHER FILE
0719 E3D1 A2 02 LOADK5 LDX #$02 ;GET 2 CHARS
0720 E3D3 20 29 EE LOADK6 JSR GETTAP ;1 CHAR FROM TAPE
0720 E3D3 20 29 EE LOADK6 JSR GETTAP ;1 CHAR FROM TAPE
0721 E3D6 C9 2F CMP #'/' ;LAST CHAR ?
0722 E3D8 F0 0E BEQ LOADK7 ;YES,BRNCH
0722 E3D8 F0 0E BEQ LOADK7 ;YES,BRNCH
0723 E3DA 20 84 EA JSR PACK ;CONVERT TO HEX
0724 E3DD B0 A6 BCS CKERR ;NOT HEX CHAR SO ERROR
0724 E3DD B0 A6 BCS CKERR ;NOT HEX CHAR SO ERROR
0725 E3DF CA DEX
0726 E3E0 D0 F1 BNE LOADK6
0726 E3E0 D0 F1 BNE LOADK6
0727 E3E2 20 13 E4 JSR STBYTE ;STORE & CHCK MEM FAIL