; SOURCE AND NOTES FOR NIBBLE CHECKIT

; XO = line length?

8500- D8                   CLD
8501- 20 1B FD             JSR   KEYIN
8504- C9 9A                CMP   #$9A		; Ctrl+Z
8506- F0 1F                BEQ   L8527		; yes - do full total
8508- C9 8D                CMP   #$8D		; CR
850A- D0 1A                BNE   L8526		; no - return

# CR - per line
850C- 86 E0                STX   XO		; preserve line length
850E- 20 B2 85             JSR   L85B2		; compute checksum
8511- 20 FB DA             JSR   $DAFB		; CR output
8514- 20 80 FE             JSR   SETINV
8517- 38                   SEC
8518- A5 08                LDA   $08
851A- E5 09                SBC   $09
851C- 20 DA FD             JSR   PRBYTE
851F- 20 84 FE             JSR   SETNORM
8522- A6 E0                LDX   XO
8524- A9 8D                LDA   #$8D
8526- 60        L8526      RTS

# Ctrl+Z - TOTAL lines
8527- 20 6A 86  L8527      JSR   L866A		; zero out $08/$09 $FB/$FC; A=0
852A- 2C AA 85             BIT   L85AA		; is this applesoft or hexadecimal?
852D- 10 2B                BPL   L855A		; hexadecimal
852F- A9 01                LDA   #$01		; setup start of applesoft program $801
8531- 85 06                STA   $06
8533- A9 08                LDA   #$08
8535- 85 07                STA   $07
8537- A0 00     L8537      LDY   #$00
8539- B1 06                LDA   ($06),Y	; save next line pointer
853B- 85 FB                STA   $FB
853D- C8                   INY
853E- B1 06                LDA   ($06),Y
8540- 85 FC                STA   $FC
8542- F0 3F                BEQ   L8583		; high byte is 0, all done
8544- C8                   INY
8545- B1 06                LDA   ($06),Y	; line# low
8547- 20 4F 86             JSR   L864F		; CHECKSUM
854A- C8                   INY
854B- B1 06                LDA   ($06),Y	; line# high
854D- 20 4F 86             JSR   L864F		; CHECKSUM
8550- A5 FB                LDA   $FB
8552- 85 06                STA   $06
8554- A5 FC                LDA   $FC
8556- 85 07                STA   $07
8558- D0 DD                BNE   L8537		; scan next line - always
855A- AD A7 85  L855A      LDA   L85A7		; hexadecimal AND applesoft!
855D- 85 07                STA   $07
855F- AD A6 85             LDA   L85A6
8562- 85 06                STA   $06
8564- A0 00                LDY   #$00
8566- B1 06     L8566      LDA   ($06),Y
8568- 20 4F 86             JSR   L864F		; CHECKSUM
856B- E6 06                INC   $06
856D- D0 02                BNE   L8571
856F- E6 07                INC   $07
8571- E6 FB     L8571      INC   $FB
8573- D0 02                BNE   L8577
8575- E6 FC                INC   $FC
8577- A5 FB     L8577      LDA   $FB
8579- CD A8 85             CMP   L85A8
857C- A5 FC                LDA   $FC
857E- ED A9 85             SBC   L85A9
8581- 90 E3                BCC   L8566
8583- A2 00     L8583      LDX   #$00
8585- BD AB 85  L8585      LDA   L85AB,X
8588- 20 ED FD             JSR   COUT
858B- E8                   INX
858C- E0 07                CPX   #$07
858E- 90 F5                BCC   L8585
8590- 2C 10 C0             BIT   KBDSTRB
8593- 20 80 FE             JSR   SETINV
8596- A4 08                LDY   $08
8598- A6 09                LDX   $09
859A- 20 40 F9             JSR   $F940
859D- 20 FB DA             JSR   $DAFB
85A0- 20 84 FE             JSR   SETNORM
85A3- A9 98                LDA   #$98
85A5- 60                   RTS

85A6- 00        L85A6	; ADDR LOW
85A7- 00        L85A7	; ADDR HIGH
85A8- 00        L85A8	; LEN LOW
85A9- 00        L85A9	; LEN HIGH
85AA- 80        L85AA
85AB- 14 0F 14 01 0C 3A 20 	L85AB "TOTAL: "

ZP FB: ???? ???S	; S=string

85B2- 20 6A 86  L85B2      JSR   L866A		; zero out $08/$09 $FB/$FC; A=0
85B5- 85 06                STA   $06            ; $06/07=$200 (input buffer)
85B7- A9 02                LDA   #$02
85B9- 85 07                STA   $07
85BB- A0 00                LDY   #$00
85BD- B1 06                LDA   ($06),Y
85BF- C9 B0                CMP   #$B0		; "0"
85C1- 90 49                BCC   L860C		; not a line number
85C3- C9 BA                CMP   #$BA		; "9"+1
85C5- B0 45                BCS   L860C		; not a line number

LOOP THROUGH LINE:
85C7- B1 06     L85C7      LDA   ($06),Y
85C9- 2C AA 85             BIT   L85AA		; Applesoft?
85CC- 10 35                BPL   L8603		; no - assembly
85CE- C9 D2                CMP   #$D2		; "R" (REM?)
85D0- D0 04                BNE   L85D6
85D2- A6 FB                LDX   $FB
85D4- F0 3D                BEQ   L8613		; no flags set (not in string)
85D6- C9 A2     L85D6      CMP   #$A2		; '"' (string?)
85D8- D0 08                BNE   L85E2
85DA- 48                   PHA
85DB- A9 01                LDA   #$01
85DD- 45 FB                EOR   $FB
85DF- 85 FB                STA   $FB
85E1- 68                   PLA
85E2- C9 A0     L85E2      CMP   #$A0		; " " (space?)
85E4- D0 06                BNE   L85EC
85E6- A6 FB                LDX   $FB
85E8- D0 19                BNE   L8603		; flags set (string?)
85EA- F0 1A                BEQ   L8606		; no flags

85EC- C9 BF     L85EC      CMP   #$BF		; "?" (print?)
85EE- D0 13                BNE   L8603
85F0- 84 E2                STY   YO
85F2- A0 00                LDY   #$00
85F4- B9 75 86  L85F4      LDA   L8675,Y	; "PRINT"
85F7- 20 4F 86             JSR   L864F		; CHECKSUM
85FA- C8                   INY
85FB- C0 05                CPY   #$05
85FD- 90 F5                BCC   L85F4
85FF- A4 E2                LDY   YO
8601- B0 03                BCS   L8606

8603- 20 4F 86  L8603      JSR   L864F		; CHECKSUM
8606- C8        L8606      INY
8607- C4 E0                CPY   XO
8609- 90 BC                BCC   L85C7
860B- 60                   RTS

860C- A6 E0     L860C      LDX   XO
860E- 68                   PLA
860F- 68                   PLA
8610- A9 8D                LDA   #$8D
8612- 60                   RTS

; REM????
8613- 84 E2     L8613      STY   YO
8615- 88        L8615      DEY
8616- B1 06                LDA   ($06),Y
8618- C9 A0                CMP   #$A0		; " "
861A- F0 F9                BEQ   L8615
861C- C9 BA                CMP   #$BA		; ":"
861E- F0 08                BEQ   L8628
8620- C9 B0                CMP   #$B0		; "0"
8622- 90 24                BCC   L8648
8624- C9 BA                CMP   #$BA		; "9"+1
8626- B0 20                BCS   L8648
8628- A4 E2     L8628      LDY   YO
862A- C8                   INY
862B- B1 06                LDA   ($06),Y
862D- C9 C5                CMP   #$C5		; "E"
862F- D0 17                BNE   L8648
8631- C8                   INY
8632- B1 06                LDA   ($06),Y
8634- C9 CD                CMP   #$CD		; "M"
8636- D0 10                BNE   L8648
8638- A9 D2                LDA   #$D2		; "R"
863A- 20 4F 86             JSR   L864F		; CHECKSUM
863D- A9 C5                LDA   #$C5		; "E"
863F- 20 4F 86             JSR   L864F		; CHECKSUM
8642- A9 CD                LDA   #$CD		; "M"
8644- 20 4F 86             JSR   L864F		; CHECKSUM
8647- 60                   RTS

8648- A4 E2     L8648      LDY   YO
864A- B1 06                LDA   ($06),Y
864C- 18                   CLC
864D- 90 87                BCC   L85D6

; CHECKSUM ROUTINE!
864F- A2 08     L864F      LDX   #$08
8651- 0A        L8651      ASL
8652- 26 08                ROL   $08
8654- 26 09                ROL   $09
8656- 90 0E                BCC   L8666
8658- 48                   PHA
8659- A5 08                LDA   $08
865B- 49 21                EOR   #$21
865D- 85 08                STA   $08
865F- A5 09                LDA   $09
8661- 49 10                EOR   #$10
8663- 85 09                STA   $09
8665- 68                   PLA
8666- CA        L8666      DEX
8667- D0 E8                BNE   L8651
8669- 60                   RTS

866A- A9 00     L866A      LDA   #$00
866C- 85 08                STA   $08
866E- 85 09                STA   $09
8670- 85 FB                STA   $FB
8672- 85 FC                STA   $FC
8674- 60                   RTS

8675- D0 D2 C9 CE D4		L8675	"PRINT"
