mirror of
https://github.com/AppleCommander/bastools.git
synced 2026-01-23 03:16:04 +00:00
211 lines
7.7 KiB
Plaintext
211 lines
7.7 KiB
Plaintext
; 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"
|