Files
bastools/reference/proofreader.asm.txt

68 lines
2.5 KiB
Plaintext

; SOURCE AND NOTES FOR COMPUTE! PROOFREADER
10 C = 0: FOR I = 768 TO 768 + 68: READ A:C = C + A: POKE I,A: NEXT
20 IF C < > 7258 THEN PRINT "ERROR IN PROOFREADER DATA STATEMENTS": END
30 IF PEEK(190 * 256) < > 76 THEN POKE 56,0: POKE 57,3: CALL 1002: GOTO 50
40 PRINT CHR$(4);"IN#A$300"
50 POKE 34,0: HOME : POKE 34,1: VTAB 2: PRINT "PROOFREADER INTSALLED"
60 NEW
100 DATA 216,32,27,253,201,141
110 DATA 208,60,138,72,169,0
120 DATA 72,189,255,1,201,160
130 DATA 240,8,104,10,125,255
140 DATA 1,105,0,72,202,208
150 DATA 238,104,170,41,15,9
160 DATA 48,201,58,144,2,233
170 DATA 57,141,1,4,138,74
180 DATA 74,74,74,41,15,9
190 DATA 48,201,58,144,2,233
200 DATA 57,141,0,4,104,170
210 DATA 169,141,96
; Trigger on CR.
; Compute for each character in buffer in reverse order.
; All spaces are ignored.
; cksum = (cksum << 1) + (char|$80) + carry
0300- D8 CLD
0301- 20 1B FD JSR KEYIN
0304- C9 8D CMP #$8D ; CR
0306- D0 3C BNE L0344 ; exit if not CR
0308- 8A TXA
0309- 48 PHA
030A- A9 00 LDA #$00
030C- 48 PHA ; cksum
030D- BD FF 01 L030D LDA $01FF,X ; read (backwards) through input buffer
0310- C9 A0 CMP #$A0 ; skip spaces
0312- F0 08 BEQ L031C
0314- 68 PLA ; add to cksum
0315- 0A ASL
0316- 7D FF 01 ADC $01FF,X
0319- 69 00 ADC #$00
031B- 48 PHA
031C- CA L031C DEX
031D- D0 EE BNE L030D
031F- 68 PLA
0320- AA TAX
0321- 29 0F AND #$0F ; Place result in upper-left corner
0323- 09 30 ORA #$30 ; ... digit by digit
0325- C9 3A CMP #$3A
0327- 90 02 BCC L032B
0329- E9 39 SBC #$39
032B- 8D 01 04 L032B STA $0401
032E- 8A L032E TXA
032F- 4A LSR
0330- 4A LSR
0331- 4A LSR
0332- 4A LSR
0333- 29 0F AND #$0F
0335- 09 30 ORA #$30
0337- C9 3A CMP #$3A
0339- 90 02 BCC L033D
033B- E9 39 SBC #$39
033D- 8D 00 04 L033D STA $0400
0340- 68 PLA
0341- AA TAX
0342- A9 8D LDA #$8D
0344- 60 L0344 RTS