home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 159 / 159.d81 / logic.s < prev    next >
Text File  |  2022-08-26  |  10KB  |  816 lines

  1. .org 16384
  2. .mem
  3. ;.obj "logic 04"
  4.  
  5. zp     = 97
  6. zpc    = 99
  7. zpe    = 101
  8. zp1    = 247
  9.  
  10. chrout = $ffd2
  11. getin  = $ffe4
  12. plot   = $fff0
  13. curpos = 211
  14.  
  15. lda #0    
  16. sta 53281
  17. sta 53280
  18. lda #1
  19. sta mflag
  20. jsr startm
  21.  
  22. start =*
  23.  
  24. jsr titlescreen
  25. - jsr getin
  26. sta temp
  27. jsr checkm
  28. lda temp
  29. beq -
  30. cmp #49
  31. bne +
  32. jmp begin
  33. + cmp #50
  34. bne +
  35. jmp instructions
  36. + cmp #51
  37. bne +
  38. jsr toggle
  39. jmp -
  40. + cmp #52
  41. bne -
  42. lda #23
  43. sta 53272
  44. jsr stopm
  45. rts ; rem loadstar
  46.  
  47. begin =*
  48.  
  49. lda <1632
  50. sta zpc   
  51. lda >1632
  52. sta zpc+1
  53. jsr screen
  54. lda #0
  55. sta colm
  56. sta row
  57. sta clue
  58.  
  59. input =*
  60.  
  61. ldy #0
  62. lda (zpc),y
  63. eor #128
  64. sta (zpc),y
  65. jsr delay
  66. lda (zpc),y
  67. eor #128
  68. sta (zpc),y
  69. jsr delay
  70. jsr checkm
  71. jsr getin
  72. beq input
  73. cmp #137
  74. bne +
  75. jmp soln
  76. + cmp #135
  77. bne +
  78. jmp toggleclues
  79. + cmp #133
  80. bne +
  81. jmp start
  82. + cmp #136
  83. bne +
  84. jmp hint
  85. + cmp #29  
  86. bne +
  87. jsr right
  88. jmp input
  89. + cmp #157
  90. bne +
  91. jsr left
  92. jmp input
  93. + cmp #140
  94. bne +
  95. jsr hardcopy
  96. jmp input
  97. + cmp #17
  98. bne +
  99. jsr down
  100. jmp input
  101. + cmp #145
  102. bne +
  103. jsr up
  104. jmp input
  105. + cmp #13
  106. bne +
  107. - jsr left
  108. lda colm
  109. bne -
  110. jsr down
  111. jmp input
  112. + cmp #32
  113. bne +
  114. ldy #0
  115. lda #32 
  116. - sta (zpc),y
  117. iny
  118. cpy #5
  119. bne -
  120. jmp input
  121. + ldx #0
  122. - cmp keys,x
  123. beq s1
  124. inx
  125. cpx nkeys
  126. bne -
  127. jmp input 
  128.  
  129. s1 ldy #0
  130. txa
  131. asl
  132. asl
  133. asl
  134. tax
  135. - lda codes,x
  136. sta (zpc),y
  137. inx
  138. iny
  139. cpy #5
  140. bne -
  141. jsr right
  142. jmp check
  143. jmp input
  144.  
  145. add80 =*
  146.  
  147. clc
  148. lda zpc
  149. adc #80
  150. sta zpc
  151. lda zpc+1
  152. adc #0
  153. sta zpc+1
  154. inc row
  155. rts
  156.  
  157. sub80 =*
  158.  
  159. sec
  160. lda zpc
  161. sbc #80
  162. sta zpc
  163. lda zpc+1
  164. sbc #0
  165. sta zpc+1
  166. dec row
  167. rts
  168.  
  169. add6 =*
  170.  
  171. clc
  172. lda zpc
  173. adc #6
  174. sta zpc
  175. lda zpc+1
  176. adc #0
  177. sta zpc+1
  178. inc colm
  179. rts
  180.  
  181. sub6 =*
  182.  
  183. sec
  184. lda zpc
  185. sbc #6
  186. sta zpc
  187. lda zpc+1
  188. sbc #0
  189. sta zpc+1
  190. dec colm
  191. rts
  192.  
  193. right =*
  194.  
  195. jsr add6
  196. lda colm
  197. cmp #5
  198. bne +
  199. jsr sub6
  200. + rts
  201.  
  202. left =*
  203.  
  204. jsr sub6
  205. lda colm
  206. cmp #255
  207. bne +
  208. jsr add6
  209. + rts
  210.  
  211. down =*
  212.  
  213. jsr add80
  214. lda row
  215. cmp #2
  216. bne +
  217. jsr sub80
  218. + rts
  219.  
  220. up =*
  221.  
  222. jsr sub80
  223. lda row
  224. cmp #255
  225. bne +
  226. jsr add80
  227. + rts
  228.  
  229. write =*
  230.  
  231. ldy #0
  232. pla
  233. sta zp
  234. pla
  235. sta zp+1
  236. - inc zp
  237. bne +
  238. inc zp+1
  239. + lda (zp),y
  240. beq +
  241. jsr chrout
  242. bne -
  243. + lda zp+1
  244. pha
  245. lda zp
  246. pha
  247. rts
  248.  
  249. delay =*
  250.  
  251. ldx #20
  252. - ldy #0
  253. - dey
  254. bne -
  255. dex
  256. bne --
  257. rts
  258.  
  259. header =*
  260.  
  261. jsr write
  262. .byte 147,18,156
  263. .asc "               programmers              "
  264. .byte 0
  265. rts
  266.  
  267. footer =*
  268.  
  269. ldx #24
  270. ldy #0
  271. clc
  272. jsr plot
  273. jsr write
  274. .byte 18,154
  275. .asc "f1=menu f5=clues f7=hint f2=sol f8=prnt"
  276. .byte 0
  277. lda #160
  278. sta 2023
  279. lda #14
  280. sta 56295
  281. rts
  282.  
  283. solve =*
  284.  
  285. lda #1
  286. sta counter
  287. - sta 646
  288. ldx #24
  289. ldy #0
  290. clc
  291. jsr plot
  292. jsr write
  293. .byte 18   
  294. .asc "               solved!!!               "
  295. .byte 0
  296. lda counter
  297. sta 56295
  298. jsr ringbell
  299. jsr delay
  300. jsr delay
  301. jsr delay
  302. jsr delay
  303. jsr delay
  304. inc counter
  305. lda counter
  306. cmp #15
  307. bne - 
  308. rts
  309.  
  310. ringbell =*
  311.  
  312. lda mflag
  313. beq +
  314. rts
  315. + lda #21
  316. sta 54296
  317. lda #9
  318. sta 54277
  319. lda #0
  320. sta 54278
  321. lda #48
  322. sta 54273
  323. lda #32
  324. sta 54276
  325. lda #33
  326. sta 54276
  327. rts
  328.  
  329. drawbox =*
  330.  
  331. ldx #13
  332. ldy #0
  333. clc
  334. jsr plot
  335. jsr write
  336. .byte 5
  337. .asc "        frank barb  ed    mary  peg"
  338. .byte 13
  339. .byte 29,29,29,29,29,29,29
  340. .byte 150,176,96,96,96,96,96,178,96,96,96,96,96,178,96,96,96,96,96,178,96,96,96,96,96,178,96,96,96,96,96,174,13
  341. .byte 5
  342. .asc "name:  "
  343. .byte 150,125,32,32,32,32,32,125,32,32,32,32,32,125,32,32,32,32,32,125,32,32,32,32,32,125,32,32,32,32,32,125,13
  344. .byte 29,29,29,29,29,29,29
  345. .byte 171,96,96,96,96,96,123,96,96,96,96,96,123,96,96,96,96,96,123,96,96,96,96,96,123,96,96,96,96,96,179,13
  346. .byte 5
  347. .asc "lang:  "
  348. .byte 150,125,32,32,32,32,32,125,32,32,32,32,32,125,32,32,32,32,32,125,32,32,32,32,32,125,32,32,32,32,32,125,13
  349. .byte 29,29,29,29,29,29,29
  350. .byte 173,96,96,96,96,96,177,96,96,96,96,96,177,96,96,96,96,96,177,96,96,96,96,96,177,96,96,96,96,96,189,13  
  351. .byte 153,13
  352. .asc "          keys: a d j r s/b c f p m"
  353. .byte 0
  354. rts
  355.  
  356. screen =*
  357.  
  358. jsr header
  359. jsr clues
  360. jsr drawbox
  361. jsr footer
  362. rts
  363.  
  364. getf1 =*
  365.  
  366. ldx #24
  367. ldy #0
  368. clc
  369. jsr plot
  370. jsr write
  371. .byte 18,154
  372. .asc "               press f1                "
  373. .byte 0
  374. - jsr getin
  375. sta temp
  376. jsr checkm
  377. lda temp
  378. cmp #133
  379. bne -
  380. rts
  381.  
  382. toggleclues =*
  383.  
  384. lda clue
  385. eor #1
  386. sta clue
  387. bne +
  388. jsr clues
  389. jmp input
  390. + jsr clue2
  391. jmp input
  392.  
  393. counter .byte 0
  394. puzzle .byte 0
  395. temp   .byte 0
  396. temp2  .byte 0
  397. temp3  .byte 0
  398. row    .byte 0
  399. keys .asc "jsrdafbpcm
  400. nkeys .byte 10
  401. key   .byte 0
  402. colm  .byte 0
  403. clue  .byte 0
  404.  
  405. answer  .scr "jsrdafbpcm"
  406.  
  407. codes .scr "jones   "
  408.       .scr "smith   "
  409.       .scr "robin   "
  410.       .scr "davis   "
  411.       .scr "allen   "
  412.       .scr "frtrn   "
  413.       .scr "basic   "
  414.       .scr "pascl   "
  415.       .scr "c       "
  416.       .scr "ml      "
  417.  
  418. titlescreen =*
  419.  
  420. jsr write
  421. .byte 147,31,146,5,176
  422. .asc "{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}"
  423. .byte 174
  424. .byte 125,18,156
  425. .asc "             logic problem            "
  426. .byte 146,5,125
  427. .byte 171
  428. .asc "{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}"
  429. .byte 179
  430. .byte 125,155,18
  431. .asc "                                      "
  432. .byte 5,146,125
  433. .byte 125,155,18
  434. .asc "                                      "
  435. .byte 5,146,125
  436. .byte 125,155,18
  437. .asc "                                      "
  438. .byte 5,146,125
  439. .byte 125,155,18
  440. .asc "                                      "
  441. .byte 5,146,125
  442. .byte 125,155,18
  443. .asc "                                      "
  444. .byte 5,146,125
  445. .byte 125,155,18
  446. .asc "            1] programmers            "
  447. .byte 5,146,125
  448. .byte 125,155,18
  449. .asc "            2] instructions           "
  450. .byte 5,146,125
  451. .byte 125,155,18
  452. .asc "            3] toggle music           "
  453. .byte 5,146,125
  454. .byte 125,155,18
  455. .asc "            4] exit                   "
  456. .byte 5,146,125
  457. .byte 125,155,18
  458. .asc "                                      "
  459. .byte 5,146,125
  460. .byte 125,155,18
  461. .asc "                                      "
  462. .byte 5,146,125
  463. .byte 125,155,18
  464. .asc "                                      "
  465. .byte 5,146,125
  466. .byte 125,155,18
  467. .asc "                                      "
  468. .byte 5,146,125
  469. .byte 125,155,18
  470. .asc "                                      "
  471. .byte 5,146,125
  472. .byte 125,155,18
  473. .asc "                                      "
  474. .byte 5,146,125
  475. .byte 125,155,18
  476. .asc "                                      "
  477. .byte 5,146,125
  478.  
  479. .byte 5,171
  480. .asc "{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}"
  481. .byte 179
  482. .byte 125,154,18
  483. .asc "                                      "
  484. .byte 5,146,125
  485. .byte 5,125,18,154
  486. .asc "     program by barbara h. schulak    "
  487. .byte 5,146,125
  488. .byte 5,125,18,154
  489. .asc "     puzzle  by barbara h. schulak    "
  490. .byte 5,146,125
  491. .byte 125,154,18
  492. .asc "                                      "
  493. .byte 5,146,125
  494. .byte 5,146,173
  495. .asc "{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}"
  496. .byte 0
  497. lda #125
  498. sta 2023
  499. lda #1
  500. sta 2023+54272
  501. rts
  502.  
  503. clues =*
  504.  
  505. jsr write
  506. .byte 159,19,17,17,146
  507. .asc "1] the fortran programmer is not mary, "     
  508. .byte 13
  509. .asc "   barb, ed or ms. allen.              "
  510. .byte 13
  511. .asc "2] peg does not program in pascal or c."  
  512. .byte 13
  513. .asc "3] the basic programmer is not mary,   " 
  514. .byte 13
  515. .asc "   mr. robin or mr. jones.             "
  516. .byte 13
  517. .asc "4] pascal is not the choice of either  "
  518. .byte 13
  519. .asc "   mary or ms. smith.                  " 
  520. .byte 13
  521. .asc "                                       "
  522. .byte 13
  523. .asc "                                       " 
  524. .byte 13
  525. .asc "                                       " 
  526. .byte 13
  527. .asc "                                       "
  528. .byte 13,0
  529. rts
  530.  
  531. clue2 =*
  532.  
  533. jsr write
  534. .byte 159,19,17,17,146
  535. .asc "5] neither barb nor ed program in ml.  "
  536. .byte 13
  537. .asc "6] the c programmer is not frank, barb "     
  538. .byte 13
  539. .asc "   or mr. robin.                       "
  540. .byte 13
  541. .asc "7] davis does not program in ml.     "
  542. .byte 13
  543. .asc "                                       "  
  544. .byte 13
  545. .asc "                                       "
  546. .byte 13
  547. .asc "                                       "
  548. .byte 13
  549. .asc "                                       "
  550. .byte 13
  551. .asc "                                       "
  552. .byte 13
  553. .asc "                                       "
  554. .byte 13
  555. .asc "                                       "
  556. .byte 13,0
  557. rts
  558.  
  559. mflag .byte 0
  560.  
  561. startm =*
  562.  
  563. jsr 49435
  564. ldx #96
  565. ldy #109
  566. jsr 49458
  567. lda #7
  568. sta 49152
  569. rts
  570.  
  571. stopm =*
  572.  
  573. lda #0
  574. sta 49152
  575. sta 54276
  576. sta 54283
  577. sta 54290
  578. jsr 49629
  579. rts
  580.  
  581. toggle =*
  582.  
  583. lda mflag
  584. beq +
  585. lda #0
  586. sta mflag
  587. jsr stopm
  588. rts
  589. + lda #1
  590. sta mflag
  591. jsr startm
  592. rts
  593.  
  594. checkm =*
  595.  
  596. lda 49152
  597. beq +
  598. rts
  599. + lda mflag
  600. bne +
  601. rts
  602. + jsr stopm
  603. jsr startm
  604. rts
  605.  
  606.  
  607. check =*
  608.  
  609. lda <1632
  610. sta zp
  611. lda >1632
  612. sta zp+1
  613. lda #0
  614. sta counter
  615.  
  616. ldx #0
  617. - ldy #0
  618. lda #0
  619. sta temp
  620. - lda (zp),y
  621. cmp answer,x
  622. bne +
  623. iny:iny
  624. iny:iny
  625. iny:iny
  626. inx
  627. inc temp
  628. lda temp
  629. cmp #5
  630. bne -
  631. jsr add80a
  632. inc counter
  633. lda counter
  634. cmp