Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2020
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. 5DIM proc% 200
  2. 10FOR O%=0 TO 3 STEP 3
  3. 20P%=proc%
  4. 30[OPT O%
  5. 35.readnum
  6. 36LDA #0
  7. 38STA &70
  8. 39.loop
  9. 40JSR &FFD7
  10. 50CMP #ASC("0")
  11. 60BCC notdigit
  12. 70CMP #ASC("9")+1
  13. 80BCS notdigit
  14. 83SBC #ASC("0")-1
  15. 85STA&71
  16. 87LDA&70
  17. 90ASL A
  18. 100ASL A
  19. 110ASL A
  20. 120ASL A
  21. 130ORA &71
  22. 135STA &70
  23. 140JMP loop
  24. 150.notdigit
  25. 160RTS
  26. 170.handleline
  27. 180JSR readnum
  28. 190LDA &70
  29. 200STA &72
  30. 210JSR readnum
  31. 220LDA &70
  32. 230STA &73
  33. 240JSR &FFD7
  34. 250STA &74
  35. 260\ &72 = min range
  36. 270\ &73 = max range
  37. 280\ &74 = byte to search
  38. 290JSR &FFD7
  39. 291JSR &FFD7
  40. 300\ &75 = count
  41. 305\ &76,7 part1 valid line count
  42. 306\ &78,9 part2 valid line count
  43. 307\ &7A line pos in BCD
  44. 310LDA #0
  45. 320STA &75
  46. 324STA &7A
  47. 325SED
  48. 326LDX #0 \ x is part2 match count
  49. 330.lineloop
  50. 332LDA &7A \ increment line pos (BCD, 1-based)
  51. 333CLC
  52. 334ADC #1
  53. 335STA &7A
  54. 340JSR &FFD7
  55. 350CMP #10
  56. 360BEQ done
  57. 370CMP #&FE
  58. 380BEQ done
  59. 390CMP &74
  60. 400BNE lineloop
  61. 410LDA &75
  62. 420CLC
  63. 430ADC #1
  64. 440STA &75
  65. 441LDA &7A
  66. 442CMP &72
  67. 443BNE notmin
  68. 444INX
  69. 445.notmin
  70. 446CMP &73
  71. 447BNE lineloop
  72. 449INX
  73. 450JMP lineloop
  74. 460.done
  75. 470LDA &75
  76. 480SEC
  77. 490SBC &72
  78. 500BCC notvalid
  79. 510 LDA &73
  80. 520 SBC &75
  81. 530BCC notvalid
  82. 540LDA &76
  83. 550CLD
  84. 560ADC #0
  85. 570STA &76
  86. 580LDA &77
  87. 590ADC #0
  88. 600STA &77
  89. 610.notvalid
  90. 620CLD
  91. 630CPX #1 \ check if exactly 1 match or part2
  92. 640BNE nopart2
  93. 650LDA &78
  94. 660ADC #0
  95. 670STA &78
  96. 680LDA &79
  97. 690ADC #0
  98. 700STA &79
  99. 710.nopart2
  100. 720RTS
  101. 997]
  102. 998IF P%-proc%>200 THEN ERROR 255, "proc too long"
  103. 999NEXT
  104. 1000file%=OPENIN("data")
  105. 1002!&76=0
  106. 1005REPEAT
  107. 1010Y%=file%
  108. 1020CALL handleline
  109. 1030 PRINT STR$~(?&72);" ";STR$~(?&73);" ";CHR$(?&74);" ";STR$~(?&75);" ";!&76 AND &FFFF;" ";!&78 AND &FFFF
  110. 1035UNTIL EOF#(file%)
  111. 1040CLOSE#file%
  112. 1050PRINT"Part 1",!&76 AND &FFFF
  113. 1060PRINT"Part 2",!&78 AND &FFFF
  114.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement