Files
bastools/reference/checkit.asm.txt

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"