Jan-Langevad

BIGTST00

May 26th, 2026
136
0
Never
4
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 105.57 KB | Source Code | 0 0
  1.  
  2. * NAM BIGTST00
  3. * TTL **** 6800 TOTAL INSTRUCTION TEST ****
  4. * OPT LLEN=80
  5. *
  6. ******************************************************
  7. ******************************************************
  8. *
  9. * THIS IS A TOTAL DIAGNOSTIC COMPOSED OF 6 SMALLER
  10. * DIAGNOSTICS FOR THE 6800 MICRO-PROCESSOR
  11. *
  12. * AUSTIN,TEXAS - MICROPROCESSOR CAPITAL OF THE WORLD
  13. *
  14. * THIS DIAGNOSTIC ATTEMPTS TO VERIFY ALL INSTRUCTIONS
  15. * FOR THE 6800 PROCESSOR. THE VARIOUS INSTRUCTION
  16. * GROUPS ARE TESTED SEPARATELY AND IN A SPECIFIED
  17. * ORDER (I.E. A GROUP FOLLOWING A PREVIOUS GROUP
  18. * ASSUMES THE PREVIOUS GROUPS FUNCTION). THE GROUPS
  19. * AND THEIR ORDER IS:
  20. * GROUP 3 BRANCHES
  21. * GROUP 1 LOADS,STORES,ETC
  22. * GROUP 6 NOP,TAP,SEV,ETC
  23. * GROUP 2 NEG,COM,INC,SHIFTS,ETC
  24. * GROUP 4 TAB,TBA,SBA,ETC
  25. * GROUP 5 TSX,INS,PULA,ETC
  26. *
  27. * THE DIAGNOSTIC ASSUMES THE FOLLOWING INSTRUCTIONS
  28. * HAVE BEEN HAND TESTED BEFORE EXECUTION:
  29. * LDAA IMMEDIATE
  30. * TAP
  31. * JMP EXTENDED
  32. * EOR DIRECT
  33. * PSHA
  34. * PULA
  35. *
  36. * ONCE THESE INSTRUCTIONS ARE TESTED THE
  37. * DIAGNOSTIC WILL NOT USE ANY INSTRUCTION
  38. * UNTIL IT HAS BEEN THROUGHLY TESTED.
  39. *
  40. *
  41. * WRITTEN TO RUN UNDER EXBUG 1.2
  42. * TO LOAD FROM MDOS TYPE: LOAD BIGTST;V
  43. *
  44. * THE PROGRAM TYPES 'OK' AT THE END OF EACH COMPLETE
  45. * TEST OF THE INSTRUCTION TEST.
  46. *
  47. *
  48. * REQUIRES RAM AT LOCATIONS 'DATA' .. 'DATA'+$200 *
  49. * REQUIRES ROM OR RAM AT LOCATIONS 'CODE' .. 'CODE'+$2FFF *
  50. *
  51. * STARTAT LOCATION 'CODE'
  52. *
  53. * WRITTEN BY C.D.HUNTSMAN
  54. * A.Riiber: Corrections marked '*' to the right
  55. *
  56. *
  57. *****************************************************
  58. *****************************************************
  59. *
  60. *
  61. * Memory start addresses
  62. *
  63. _DATA EQU 0
  64. *_CODE EQU $8000 old/org. stuff
  65. _CODE EQU $2000
  66. PDATA EQU $E07E PDATA IS SERIAL OUTPUT ROUTINE, CAN PUT BREAKPOINT AFTER HERE
  67.  
  68. ORG _DATA+$20
  69. *
  70. *
  71. * DATA IN BASE PAGE FOR DIRECT ADDRESSING
  72. *
  73. BOTTOM RMB $30 STACK AREA
  74. STACK RMB 8
  75. DATA FCB $AA,$55,$AA,$00,$00,$FF,$40,$54 * WAS @252,@125,@252,@0,@0,@377,@100,@124
  76. FCB $80,$81,$BF,$FE
  77. DATA1 FCB $7D,$7E,$7F,$01 * WAS @175,@176,@177,@001
  78. TMP RMB 2
  79. *
  80. * DOUBLE PRECISION CONSTANTS
  81. *
  82. HAAAA FDB $AAAA
  83. H5555 FDB $5555
  84. H5554 FDB $5554
  85. H8001 FDB $8001
  86. HBFFF FDB $BFFF
  87. HFFFF FDB $FFFF
  88. H8000 FDB $8000
  89. HFFFE FDB $FFFE
  90. H0000 FDB $0000
  91. H4000 FDB $4000
  92. *
  93. * BASE PAGE VARIABLES
  94. *
  95. TEMP RMB 2
  96. OSP RMB 2 OLD SP SAVE
  97. NSP RMB 2 NEW SP SAVE
  98. *
  99. *
  100. * EXTENDED VARIABLES
  101. *
  102. ORG _DATA+$100
  103. TMP2 RMB 2
  104. PAGE
  105. * TTL **** 6800 TOTAL INSTRUCTION TEST - GROUP 3 ****
  106. *
  107. *****************************************************
  108. *
  109. * G R P 3
  110. *
  111. *****************************************************
  112. *REV 1.0
  113. *REV 1.1 GMCM REVISION - SEPT 77
  114. *
  115. * GROUP 3 INSTRUCTIONS INCLUDE ALL BRANCHES
  116. * EXCEPT BSR.
  117. *
  118. *PROGRAMTO TEST GP3 INST
  119. *
  120. *
  121. * THIS TEST ASSUMES THAT THE FOLLOWING INSTRUCTIONS
  122. * ARE ALREADY OPERATIONAL:
  123. * LDAA IMMEDIATE
  124. * TAP
  125. * JMP EXTENDED
  126. *
  127. ORG _CODE
  128. ST BRA B1
  129. BRA *
  130. B1 JMP B2
  131. ORG _CODE+$008E
  132. C1 JMP C2
  133. *
  134. * TEST ALL PATHS OF BRANCH
  135. *
  136. * I.E., CHECK FORWARD AND REVERSE OFFSETS
  137. *
  138. ORG _CODE+$00C0
  139. B2 BRA B3
  140. BRA *
  141. B4 BRA B5
  142. BRA *
  143. BRA *
  144. B3 BRA B4
  145. *
  146. * FINAL PATH
  147. *
  148. ORG _CODE+$0106
  149. B5 CLC
  150. BCS *
  151. BRA C1
  152. *
  153. * FROM HERE ON IT IS ASSUMED THAT IF BRA CAN BE
  154. * EXECUTED WITH PLUS AND MINUS OFFSETS SO CAN
  155. * THE OTHER BRANCHES.
  156. *
  157. *
  158. * TEST COMBINATIONS OF BRANCH
  159. *
  160. C2 LDAA #$01
  161. TAP C=1,Z=0
  162. BCS T1
  163. BRA *
  164. T1 BLS T2
  165. BRA *
  166. T2 BCC *
  167. BHI *
  168. LDAA #$00
  169. TAP C=0,Z=0
  170. BCC T3
  171. BRA *
  172. T3 BHI T4
  173. BRA *
  174. T4 BCS *
  175. BLS *
  176. LDAA #$04
  177. TAP C=0,Z=1
  178. BLS T5
  179. BRA *
  180. T5 BEQ T6
  181. BRA *
  182. T6 BNE *
  183. BHI *
  184. LDAA #$05
  185. TAP C=1,Z=1
  186. BLS T7
  187. BRA *
  188. T7 BHI *
  189. LDAA #$08
  190. TAP N=1,V=0,Z=0
  191. BMI T8
  192. BRA *
  193. T8 BPL *
  194. BGE *
  195. BLT T9
  196. BRA *
  197. T9 BGT *
  198. BLE T10
  199. BRA *
  200. T10 BVS *
  201. BEQ *
  202. BCC TA
  203. BRA *
  204. TA LDAA #$02
  205. TAP N=0,V=1,Z=0
  206. BVS T11
  207. BRA *
  208. T11 BVC *
  209. BLT T12
  210. BRA *
  211. T12 BGE *
  212. BGT *
  213. BLE T13
  214. BRA *
  215. T13 BPL T14
  216. BRA *
  217. T14 BMI *
  218. LDAA #$00
  219. TAP N=0,V=0,Z=0
  220. BGE T15
  221. BRA *
  222. T15 BLT *
  223. BLE *
  224. BGT T16
  225. BRA *
  226. T16 LDAA #$0A
  227. TAP N=1,V=1,Z=0
  228. BGE T17
  229. BRA *
  230. T17 BLT *
  231. BLE *
  232. BGT T18
  233. BRA *
  234. T18 LDAA #$04
  235. TAP N=0,V=0,Z=1
  236. BLE T19
  237. BRA *
  238. T19 BGT *
  239. BRA GRP1 GO DO GROUP 1
  240. PAGE
  241. * TTL **** 6800 TOTAL INSTRUCTION TEST - GROUP 1 ****
  242. *
  243. ******************************************************
  244. *
  245. * G R P 1
  246. *
  247. *****************************************************
  248. *
  249. * GMCM REVISION 1.1 - SEPT 77
  250. *
  251. * GROUP I INSTRUCTIONS INCLUDE:
  252. * SUB
  253. * CMP
  254. * SBC
  255. * AND
  256. * BIT
  257. * LDA
  258. * STA
  259. * EOR
  260. * ADC
  261. * ORA
  262. * ADD
  263. * CPX
  264. * BSR
  265. * JSR
  266. * LDS
  267. * LDX
  268. * STS
  269. * STX
  270. *
  271. *
  272. DATA2 FCB $55,$AA
  273. *
  274. *
  275. * LOAD ACCUMULATOR A (LDA)
  276. *
  277. * ASSUMES BRANCHES AND EOR DIRECT WORK!!!!!!!!!!!!!!
  278. *
  279. *
  280. GRP1 LDAA DATA DATA=@252,N=1,Z=0,V=0
  281. A1 BPL A1
  282. A2 BEQ A2
  283. A3 BVS A3
  284. EORA DATA
  285. A4 BNE A4
  286. LDAA DATA+1 DATA+1=@125,N=0,Z=0,V=0
  287. A5 BMI A5
  288. EORA DATA+1
  289. A6 BNE A6
  290. LDAA DATA+3 DATA+3=@0,N=0,Z=1,V=0
  291. A7 BNE A7
  292. ********************************************
  293. *
  294. * LOAD ACCUMULATOR B (LDA)
  295. LDAB DATA DATA=0252,N=1,Z=0,V=0
  296. A10 BPL A10
  297. A11 BEQ A11
  298. A12 BVS A12
  299. EORB DATA
  300. A13 BNE A13
  301. LDAB DATA+1 DATA+1=0125,N=0,Z=0,V=0
  302. A14 BMI A14
  303. EORB DATA+1
  304. A15 BNE A15
  305. LDAB DATA+3 DATA+3=00,J=0,Z=1,V=0
  306. A16 BNE A16
  307. ********************************************
  308. *
  309. * STORE ACCUMULATOR A (STA)
  310. *
  311. LDAA DATA DATA=0252,N=1,Z=0,V=0
  312. STAA TMP
  313. A20 BPL A20
  314. A21 BEQ A21
  315. BVS *
  316. EORA TMP
  317. A23 BNE A23
  318. LDAA DATA+1 DATA+1=0125,N=0,Z=0,V=0
  319. STAA TMP
  320. A24 BMI A24
  321. EORA TMP
  322. A25 BNE A25
  323. ********************************************
  324. *
  325. * STORE ACCUMULATOR B (STA)
  326. *
  327. LDAB DATA DATA=0252,N=1,Z=0,V=0
  328. STAB TMP
  329. A30 BPL A30
  330. A31 BEQ A31
  331. BVS *
  332. EORB TMP
  333. A33 BNE A33
  334. LDAB DATA+1 DATA+1=0125,N=0,Z=0,V=0
  335. STAB TMP
  336. BMI *
  337. EORB TMP
  338. BNE *
  339. *******************************************
  340. * LOAD AND STORE STACK POINTER (LDS)
  341. *
  342. STS STACK SAVE STACK POINTER
  343. LDS DATA DATA=0252,DATA+1=0125,N=1,Z
  344. A40 BPL A40
  345. A41 BEQ A41
  346. BVS *
  347. STS TMP
  348. LDAA DATA
  349. EORA TMP
  350. A43 BNE A43
  351. LDAA DATA+1 DATA+1=0125
  352. EORA TMP+1
  353. A44 BNE A44
  354. LDS DATA+1 DATA+1=0125,DATA+2=0252,N=0
  355. A45 BMI A45
  356. STS TMP
  357. LDAA DATA+1
  358. EORA TMP
  359. A46 BNE A46
  360. LDAA DATA+2
  361. EORA TMP+1
  362. A47 BNE A47
  363. LDS DATA+3
  364. A48 BNE A48
  365. LDS STACK
  366. **************************************
  367. *
  368. * LOAD AND STORE INDEX REGISTORS (LDX&STX)
  369. *
  370. LDX DATA DATA=0252,DATA+1=0125,N=1,Z
  371. A50 BPL A50
  372. A51 BEQ A51
  373. A52 BVS A52
  374. STX TMP
  375. LDAA DATA
  376. EORA TMP
  377. A53 BNE A53
  378. BMI * N=1?
  379. LDAA DATA+1
  380. EORA TMP+1
  381. A54 BNE A54
  382. LDX DATA+1 DATA+1=0125,DATA+2=0252
  383. A55 BMI A55
  384. STX TMP
  385. LDAA DATA+1
  386. EORA TMP
  387. A56 BNE A56
  388. LDAA DATA
  389. EORA TMP+1
  390. A57 BNE A57
  391. LDX DATA+3 DATA+3,Z=1
  392. A58 BNE A58
  393. *
  394. ***************************************************:
  395. *
  396. * COMPARE INDEX REGISTER
  397. *
  398. *
  399. *
  400. * CASE 1:
  401. * X = $AA55
  402. * DATA = $AA55
  403. * RESULT = $0
  404. * Z = 1, N = 0, V = 0, C = 0
  405. *
  406. LDX DATA
  407. CPX DATA DO IT
  408. BNE *
  409. BMI *
  410. BVS *
  411. BCS *
  412. BEQ CP20
  413. BRA *
  414. CP20 BPL CP22
  415. BRA *
  416. CP22 BVC CP23
  417. BRA *
  418. CP23 BCC CP1
  419. BRA *
  420. *
  421. * CASE 2:
  422. * X = AA55
  423. * DATA+1 = 55AA
  424. * RESULT = 54AB
  425. * N=0, Z=0, V=1, C=0
  426. CP1 CPX DATA+1
  427. BLS *
  428. BVC *
  429. BCS *
  430. BEQ *
  431. BMI *
  432. BNE CP2
  433. BRA *
  434. CP2 BGE *
  435. BGT *
  436. BHI CP3
  437. BRA *
  438. CP3 BLE CP4
  439. BRA *
  440. CP4 BLS *
  441. BLT CP5
  442. BRA *
  443. CP5 BVS CP6
  444. BRA *
  445. CP6 BPL CP7
  446. BRA *
  447. *
  448. * CASE 3:
  449. * X = 55AA
  450. * DATA = AA55
  451. * RESULT = AB55
  452. * Z=0, N=1, V=1, C=1
  453. *
  454. CP7 LDX DATA+1
  455. CPX DATA
  456. BPL *
  457. BVC *
  458. BEQ *
  459. BMI CP9
  460. BRA *
  461. CP9 BVS CP10
  462. BRA *
  463. CP10 BNE CP11
  464. BRA *
  465. *
  466. * CASE 4:
  467. * X = 55AA
  468. * DATA + 3 = 0000
  469. * RESULT = 55AA
  470. * Z=0, N=0, V=0, C=0
  471. *
  472. CP11 LDX DATA+1
  473. CPX DATA+3
  474. BEQ *
  475. BMI *
  476. BVS *
  477. BCS *
  478. BNE CP12
  479. BRA *
  480. CP12 BPL CP13
  481. BRA *
  482. CP13 BVC CP14
  483. BRA *
  484. CP14 BCC CP15
  485. BRA *
  486. *
  487. * CASE 5:
  488. * X = AA00
  489. * DATA = AA55
  490. * RESULT = FFAB
  491. * Z=0, N=1, V=0, C=1 *
  492. CP15 LDX DATA+2 X=AA00
  493. CPX DATA
  494. BEQ *
  495. bpl *
  496. BVS *
  497. BNE CP16
  498. BRA *
  499. CP16 bmi CP17 *
  500. BRA *
  501. CP17 BVC CP19
  502. BRA *
  503. CP19 NOP
  504. **************************************
  505. *
  506. * LOGICAL ANDA CCUMULATOR A (AND)
  507. *
  508. LDAA DATA DATA+1=0252,DATA+1=0125,N=0
  509. ANDA DATA+1
  510. BMI *
  511. BNE *
  512. A62 BVS A62
  513. LDAA DATA+1
  514. ANDA DATA N=0,Z=1,V=0
  515. A63 BMI A63
  516. BNE *
  517. A65 BVS A65
  518. LDAA DATA+5 DATA+5=0377,N=1,Z=0,V=0
  519. ANDA DATA+5
  520. A66 BPL A66
  521. A67 BEQ A67
  522. EORA DATA+5 Z=1
  523. BNE *
  524. LDAA DATA+4 DATA+4=0
  525. ANDA DATA+4
  526. BNE *
  527. *********************************************
  528. *
  529. * LOGICAL ANDA CCUMULATOR B (AND)
  530. *
  531. LDAB DATA DATA=0252,DATA+1=0125
  532. ANDB DATA+1 N=0,Z=1,V=0
  533. A70 BMI A70
  534. BNE *
  535. A72 BVS A72
  536. LDAB DATA+1
  537. ANDB DATA N=0,Z=1,V=0
  538. A73 BMI A73
  539. BNE *
  540. A75 BVS A75
  541. LDAB DATA+5 DATA+5=0377
  542. ANDB DATA+5 N=1,Z=0,V=0
  543. A76 BPL A76
  544. A77 BEQ A77
  545. EORB DATA+5
  546. A78 BNE A78
  547. LDAB DATA+4 DATA+4=0
  548. ANDB DATA+4 Z=1
  549. A79 BNE A79
  550. *********************************************
  551. *
  552. * LOGICAL OR ACCUMULATOR A (ORA)
  553. *
  554. LDAA DATA DATA=0252
  555. ORAA DATA+1 DATA+1=0125,N=1,Z=0,V=0
  556. A801 BPL A801
  557. A802 BEQ A802
  558. A803 BVS A803
  559. EORA DATA+5 DATA+5=0377
  560. A804 BNE A804
  561. LDAA DATA+1
  562. ORAA DATA
  563. A805 BPL A805
  564. A806 BEQ A806
  565. A807 BVS A807
  566. EORA DATA+5
  567. A808 BNE A808
  568. LDAA DATA+5
  569. ORAA DATA+5
  570. EORA DATA+5
  571. A809 BNE A809
  572. LDAA DATA+3 DATA+3=0
  573. ORAA DATA+3 N=0,Z=1,V=0
  574. A810 BMI A810
  575. A811 BNE A811
  576. A812 BVS A812
  577. EORA DATA+3
  578. BNE *
  579. *********************************************
  580. *
  581. * LOGICAL OR ACCUMULATOR B (ORA)
  582. *
  583. LDAB DATA DATA=0252,DATA+1=0125
  584. ORAB DATA+1 N=1,Z=0,V=0
  585. A901 BPL A901
  586. A902 BEQ A902
  587. A903 BVS A903
  588. EORB DATA+5 DATA+5=0377
  589. A904 BNE A904
  590. LDAB DATA+1
  591. ORAB DATA
  592. A905 BPL A905
  593. A906 BEQ A906
  594. A907 BVS A907
  595. EORB DATA+5
  596. A908 BNE A908
  597. LDAB DATA+5
  598. ORAB DATA+5
  599. EORB DATA+5
  600. A909 BNE A909
  601. LDAB DATA+3 DATA+3=0
  602. ORAB DATA+3 N=0,Z=1,V=0
  603. A910 BMI A910
  604. A911 BNE A911
  605. BVS *
  606. EORB DATA+3
  607. A913 BNE A913
  608. *********************************************
  609. *
  610. * ADDA CCUMULATOR A TO MEMORY (ADD)
  611. *
  612. LDAA DATA+1 DATA+1=0125
  613. ADDA DATA+1 N=1,Z=0,V=1,C=0
  614. A100 BPL A100
  615. A101 BEQ A101
  616. A102 BVC A102
  617. A103 BCS A103
  618. EORA DATA DATA=0252
  619. A104 BNE A104
  620. LDAA DATA
  621. ADDA DATA N=0,Z=0,V=1,C=1
  622. A105 BMI A105
  623. A106 BEQ A106
  624. BVC *
  625. A108 BCC A108
  626. EORA DATA+7 DATA+7=0124
  627. A109 BNE A109
  628. LDAA DATA+9 DATA+9=0201(-127)
  629. ADDA DATA+10 DATA+10=0277(-65),N=0,Z=0
  630. A110 BMI A110
  631. A111 BEQ A111
  632. A112 BVC A112
  633. A113 BCC A113
  634. EORA DATA+6 DATA+6=0100
  635. A114 BNE A114
  636. LDAA DATA+9 DATA+9=0201
  637. ADDA DATA+5 DATA+5=0377,N=1,Z=0,V=0,C=1
  638. A115 BPL A115
  639. A116 BEQ A116
  640. A117 BVS A117
  641. A118 BCC A118
  642. EORA DATA+8 DATA+8=0200
  643. A119 BNE A119
  644. LDAA DATA+5 DATA+5=0377
  645. ADDA DATA+3 DATA+3=0,N=1,Z=0,V=0,C=0
  646. A120 BPL A120
  647. A121 BEQ A121
  648. A122 BVS A122
  649. A123 BCS A123
  650. EORA DATA+5 DATA+5=0377
  651. A124 BNE A124
  652. LDAA DATA+5 DATA+5=0377
  653. ADDA DATA+5 N=1,Z=0,V=0,C=1
  654. A125 BPL A125
  655. A126 BEQ A126
  656. A127 BVS A127
  657. A128 BCC A128
  658. EORA DATA+11 DATA+11=0376
  659. A129 BNE A129
  660. LDAA DATA+3 DATA+3=0
  661. ADDA DATA+3 N=0,Z=1,V=0,C=0
  662. A130 BMI A130
  663. A131 BNE A131
  664. A132 BVS A132
  665. A133 BCS A133
  666. EORA DATA+3
  667. A134 BNE A134
  668. *********************************************
  669. *
  670. * ADDA CCUMULATOR B TO MEMORY
  671. *
  672. LDAB DATA+1 DATA+1=0125
  673. ADDB DATA+1 N=1,Z=0V=1,C=0
  674. A200 BPL A200
  675. A201 BEQ A201
  676. A202 BVC A202
  677. A203 BCS A203
  678. EORB DATA DATA=0252
  679. A204 BNE A204
  680. LDAB DATA DATA=0252
  681. ADDB DATA N=0,Z=0,V=1,C=1
  682. A205 BMI A205
  683. A206 BEQ A206
  684. A207 BVC A207
  685. A208 BCC A208
  686. EORB DATA+7 DATA+7=0124
  687. A209 BNE A209
  688. LDAB DATA+9 DATA+9=0201(-127)
  689. ADDB DATA+10 DATA+10=0277(-65),N=0,Z=0
  690. A210 BMI A210
  691. A211 BEQ A211
  692. A212 BVC A212
  693. A213 BCC A213
  694. EORB DATA+6 DATA+6=0100
  695. A214 BNE A214
  696. LDAB DATA+9 DATA+9"=""0201
  697. ADDB DATA+5 DATA+5=0377,N=1,Z=0,V=0,C=1
  698. A215 BPL A215
  699. A216 BEQ A216
  700. A217 BVS A217
  701. A218 BCC A218
  702. EORB DATA+8 DATA+8=0200
  703. A219 BNE A219
  704. LDAB DATA+5 DATA+5=0377
  705. ADDB DATA+3 DATA+3=0,N=1,Z=0,V=0,C=0
  706. A220 BPL A220
  707. A221 BEQ A221
  708. A222 BVS A222
  709. A223 BCS A223
  710. EORB DATA+5 DATA+5=0377
  711. A224 BNE A224
  712. LDAB DATA+5 DATA+5=0377
  713. ADDB DATA+5 N=1,Z=0,V=0,C=1
  714. A225 BPL A225
  715. A226 BEQ A226
  716. A227 BVS A227
  717. A228 BCC A228
  718. EORB DATA+11 DATA+11=0376
  719. A229 BNE A229
  720. LDAB DATA+3 DATA+3=00
  721. ADDB DATA+3 N=0,Z=1,V=0,C=0
  722. A230 BMI A230
  723. A231 BNE A231
  724. A232 BVS A232
  725. A233 BCS A233
  726. EORB DATA+3
  727. A234 BNE A234
  728. *********************************************
  729. *
  730. * SUBTRACT MEMORY FROM ACCUMULATOR A (SUB)
  731. *
  732. LDAA DATA+5 DATA+5=0377
  733. SUBA DATA+5 N=0,Z=1,V=0,C=0
  734. A140 BMI A140
  735. A141 BNE A141
  736. BVS *
  737. A143 BCS A143
  738. LDAA DATA+10 DATS"+10""=0277
  739. SUBA DATA+3 DATA+3=0,N=1,Z=0,V=0,C=0
  740. A144 BPL A144
  741. A145 BEQ A145
  742. A146 BVS A146
  743. A147 BCS A147
  744. EORA DATA+10
  745. A148 BNE A148
  746. *********************************************
  747. *
  748. * SUBTRACT MEMORY FROM ACCUMULATOR B (SUB)
  749. *
  750. LDAB DATA+5 DATA+5=0377
  751. SUBB DATA+5 N=0,Z=1,V=0,C=0
  752. A240 BMI A240
  753. A241 BNE A241
  754. A242 BVS A242
  755. A243 BCS A243
  756. LDAB DATA+10 DATA+10=0277
  757. SUBB DATA+3 DATA+3=0.N=1,Z=0,V=0,C=0
  758. A244 BPL A244
  759. A245 BEQ A245
  760. A246 BVS A246
  761. A247 BCS A247
  762. EORB DATA+10
  763. A248 BNE A248
  764. *********************************************
  765. *
  766. * ADD WITH CARRY,ACCUMULATOR A (ADC)
  767. *
  768. LDAA DATA+1 DATA+1=0125
  769. ADDA DATA+3 DATA+3=0,RESULT=0125,
  770. * CARRY SET TO ZERO
  771. ADCA DATA+5 DATA+5=0377,RESULT=0124,
  772. * N=0,Z=0,V=0,C=1
  773. BMI * N=1?
  774. BEQ * NO,Z=1?
  775. BVS * NO,V=1?
  776. BCC * NO,C=0?
  777. STAA TMP NO,SAVE RESULT
  778. EORA DATA+7 DATA+7=0124.SET UP
  779. * EXEC TEST
  780. BNE * RESULT=0124?
  781. LDAA TMP YES RESTORE ACCUM A
  782. BCC * VERIFY C=1
  783. ADCA DATA+3 DATA+3=0,RESULT=0125
  784. * Z=0,C=0
  785. BEQ * Z=1?
  786. BCS * NO,C=1?
  787. EORA DATA+1 DATA+1=0125,SET
  788. * UP EXEC TEST
  789. BNE * RESULT=0125?
  790. LDAA DATA+15 YES,SET UP NEXT TEST,
  791. * DATA+15=0001,C=0,Z=0
  792. ADCA DATA+5 DATA+5=0377,C=0,SO RESULT
  793. * =0,N=0,Z=1
  794. BMI * N=1?
  795. BNE * NO,Z=0?
  796. EORA DATA+3 NO,SET UP EXEC TEST
  797. BNE * RESULT=0?
  798. CLC YES,CLEAR CARRY
  799. BCS * VERIFY CARRY CLEARED
  800. ADCA DATA+5 ADD 0377& C=0 TO
  801. * ZERO,RESULT=0377,N=1,Z=0,V
  802. BPL * N=0?
  803. BEQ * NO,Z=1?
  804. BVS * NO,V=1?
  805. EORA DATA+5 NO,SET UP EXEC TEST
  806. BNE * RESULT=0377?
  807. LDAA DATA+5 YES,RESTORE ACCUM A
  808. ADCA DATA+8 DATA+8=0200. ADDIN
  809. * 0200,C=0.RESULT=0177,N=0,V=1,
  810. BMI * N=1?
  811. BVC * NO,V=0?
  812. BCC * NO,C=0?
  813. ADCA DATA+8 NO,DATA+8=0200.ADD IN
  814. * 0200 & C=1.RESULT
  815. * =0,V=0
  816. BVS * V=1?
  817. EORA DATA+3 NO.DATA+3=0,SET UP EXEC TES
  818. BNE * RESULT=ZERO?
  819. NOP YES
  820. *********************************************
  821. *
  822. * ADD WITH CARRY,ACCUMULATOR B (ADC)
  823. *
  824. LDAB DATA+1 DATA+1=0125
  825. ADDB DATA+3 DATA+3=0,RESULT=0125,
  826. * CARRY SET TO ZERO
  827. ADCB DATA+5 DATA+5=0377,RESULT=0124,
  828. * N=0,V=0,C=1
  829. BMI * N=1?
  830. BVS * NO,V=1?
  831. BCC * NO,C=0?
  832. STAB TMP NO, SAVE RESULT
  833. EORB DATA+7 DATA+7=0124.SET UP
  834. * EXEC TEST
  835. BNE * RESULT=0124?
  836. LDAB TMP YES,RESTORE ACCUM B
  837. BCC * VERIFY C=0
  838. ADCB DATA+3 DATA+3=0,RESULT=
  839. * Z=0,C=0
  840. BEQ * Z=1?
  841. BCS * NO,C=1?
  842. EORB DATA+1 NO,DATA+1=0125,
  843. * SET UP EXEC TEST
  844. BNE * RESULT=0125?
  845. LDAB DATA+15 YES,SET UP NEXT TEST,
  846. * DATA+15=0001,C=0,Z=0
  847. ADCB DATA+5 DATA+5=0377,RESULT=0,
  848. * N=0,Z=1
  849. BMI * N=1?
  850. BNE * NO,Z=0?
  851. EORB DATA+3 NO,SET UP EXEC TEST
  852. BNE * RESULT=0?
  853. CLC CLEAR CARRY
  854. BCS * VERIFY CARRY CLEARED
  855. ADCB DATA+5 YES,ADD 0377&C=0,RESULT=
  856. * 0377,N=1,Z=0,V=0
  857. BPL * N=0?
  858. BEQ * NO,Z=1?
  859. BVS * NO,V=1?
  860. EORB DATA+5 NO,SET UP EXEC TEST
  861. BNE * RESULT=0377?
  862. LDAB DATA+5 YES,RESTORE ACCUM B
  863. ADCB DATA+8 DATA+8 =0200. ADD IN
  864. * WITH C=0.RESULT=0177,N=0,V
  865. BMI * N=1?
  866. BVC * NO,V=0?
  867. BCC * NO,C=0?
  868. ADCB DATA+8 NO,DATA+8=0200. ADD IN
  869. * 0200 WITH C=1. RESULT
  870. * =0,V=0
  871. BVS * V=1?
  872. EORB DATA+3 NO,DATA+3=0. SET UP
  873. * EXEC TEST
  874. BNE * RESULT=0?
  875. NOP YES
  876. *********************************************
  877. *
  878. * SUBTRACT WITH CARRY,ACCUMULATOR A (SBC)
  879. *
  880. LDAA DATA+14 DATA+14=0177,SET UP TEST,
  881. SEC SET CARRY,
  882. BCC * AND VERIFY CARRY SET.N=0,Z=
  883. SBCA DATA+13 DATA+13=0176,ACCUM A=0
  884. * N=0,Z=1,V=0,C=0
  885. BMI * N=1?
  886. BNE * NO,Z=0? ALSO EXEC TEST.
  887. BVS * NO,V=1?
  888. BCS * NO,C=1?
  889. SBCA DATA+15 DATA+15=0001,ACCUM A=A377,
  890. BPL * N=0?
  891. BEQ * NO,Z=1?
  892. BVS * NO,V=1?
  893. BCC * NO,C=0?
  894. EORA DATA+5 NO,DATA+5=0377,SET UP
  895. * EXEC TEST
  896. BNE * SUBTRACTION RESULT=0377?
  897. LDAA DATA+5 YES,DATA+5=0377,SET
  898. * UP NEXT TEST,N=1.Z=0,V=0,C=
  899. SBCA DATA+14 DATA+14=0177;ACCUM A=0177,
  900. * N=0,Z=0,V=1,C=0
  901. BMI * N=1?
  902. BEQ * NO,Z=1?
  903. BVC * NO,V=0?
  904. BCS * NO,C=1?
  905. EORA DATA+14 NO,DATA+14=0177,SET UP
  906. * EXEC TEST
  907. BNE * SUBTRACTION RESULT=0177?
  908. LDAA DATA+14 YES,SET UP NEXT TEST,
  909. SEV SET OVERFLOW,
  910. BVC * AND VERIFY OVERFLOW SET.V=1
  911. SBCA DATA+3 DATA+3,V=0
  912. BVS * V=1?
  913. EORA DATA+14 NO,SET UP EXEC TEST
  914. BNE * SUBTRACTED RESULT=0177?
  915. NOP YES
  916. *********************************************
  917. *
  918. * SUBTRACT WITH CARRY ACCUM B (SBC)
  919. *
  920. LDAB DATA+14 DATA+14=0177,SET UP TEST
  921. SEC SET CARRY,
  922. BCC * AND VERIFY CARRY SET.N=0,Z=
  923. SBCB DATA+13 DATA+13=0176,ACCUM B=0,
  924. * N=0,Z=1,V=0,C=1
  925. BMI * N=1?
  926. BNE * NO,Z=0? ALSO EXEC TEST
  927. BVS * NO,V=1?
  928. BCS * NO,C=1?
  929. SBCB DATA+15 DATA+15=0001,ACCUM B=0377,
  930. BPL * N=0?
  931. BEQ * NO,Z=1?
  932. BVS * NO,V=1?
  933. BCC * NO,C=0?
  934. EORB DATA+5 NO,DATA+5=0377,SET UP
  935. * EXEC TEST
  936. BNE * SUBTRACTION NO,C=1?
  937. BNE * SUBTRACTION result=0377 *
  938. LDAB DATA+5 YES,DATA+5=0377,SET *
  939. * UP NEXT TEST,N=1.Z=0,V=0,C= *
  940. SBCB DATA+14 DATA+14=0177;ACCUM b=0177,*
  941. * N=0,Z=0,V=1,C=0 *
  942. BMI * N=1? *
  943. BEQ * NO,Z=1? *
  944. BVC * NO,V=0? *
  945. BCS * NO,C=1? *
  946. EORB DATA+14 NO,DATA+14=0177,SET UP
  947. * EXEC TEST
  948. BNE * SUBTRACTION RESULT=0177?
  949. LDAB DATA+14 YES,SET UP NEXT TEST,
  950. SEV SET OVERFLOW,
  951. BVC * AND VERIFY OVERFLOW SET.V=1
  952. SBCB DATA+3 DATA+3=0,V=0
  953. BVS * V=1?
  954. EORB DATA+14 NO,SET UP EXEC TEST
  955. BNE * SUBTRACTED RESULT=0177?
  956. NOP YES
  957. *********************************************
  958. *
  959. * COMPARE ACCUMULATOR A TO MEMORY (CMP)
  960. *
  961. LDAA DATA+14 DATA+14=0177,SET UP TEST
  962. CLC CLEAR CARRY
  963. BCS * VERIFY CARRY CLEARED
  964. * N=0,Z=0,V=0,C=0
  965. CMPA DATA+14 ACCUM A=0177,N=0,Z=1,V=0,C
  966. BMI * N=1?
  967. BNE * NO,Z=0?
  968. BCS * NO,C=1?
  969. EORA DATA+14 NO,SEY UP EXEC TEST
  970. BNE * WAS ACCUM A STILL=0177?
  971. * YES.N=0,Z=1,V=0,C"=1,ACCUM
  972. CMPA DATA+15 DATA+15=0001,N=1,Z=0,V=0,C
  973. BPL * N=0?
  974. BEQ * NO,Z=1?
  975. BVS * NO,V=1?
  976. BCC * NO,C=0?
  977. EORA DATA+3 NO,SET UP EXEC TEST,DATA+3=
  978. BNE * WAS ACCUM A STILL=0?
  979. LDAA DATA+11 YES,SET UP NEXT TEST
  980. * DATA+11=0376,N=1,Z=0,V=0,C=
  981. CMPA DATA+14 DATA+14=0177,N=0,Z=0,V=1,C
  982. BMI * N=1?
  983. BVC * NO,V=0?
  984. EORA DATA+11 NO,SET UP EXEC TEST
  985. BNE * WAS ACCUM A STILL=0376?
  986. SEV YES,SET OVERFLOW AND
  987. BVC * VERIFY.NEXT TEST SET UP,V=1
  988. CMPA DATA+5 DATA+5=0377,V=0
  989. BVS * V=1?
  990. EORA DATA+3 NO,SET UP EXEC TEST
  991. BNE * WAS ACCUM A STILL=0?
  992. NOP YES
  993. *********************************************
  994. *
  995. * COMPARE ACCUMULATOR B TO MEMORY (CMP)
  996. *
  997. LDAB DATA+14 DATA+14=0177,SET UP TEST
  998. CLC CLEAR CARRY
  999. BCS * VERIFY CARRY CLEARED
  1000. * N=0,Z=0,V=0,C=0
  1001. * CMPB DATA+14 ACCUM
  1002. CMPB DATA+14 ACCUM b=0177,N=0,Z=1,V=0,C*
  1003. BMI * N=1? *
  1004. BNE * NO,Z=0? *
  1005. BCS * NO,C=1? *
  1006. EORB DATA+14 NO,SEY UP EXEC TEST *
  1007. BNE * WAS ACCUM b STILL=0177? *
  1008. * YES.N=0,Z=1,V=0,C"=1,ACCUM *
  1009. CMPB DATA+15 DATA+15=0001,N=1,Z=0,V=0,C
  1010. BPL * N=0?
  1011. BEQ * NO,Z=1?
  1012. BVS * NO,V=1?
  1013. BCC * NO,C=0?
  1014. EORB DATA+3 NO,SET UP EXEC TEST,DATA+3=
  1015. BNE * WAS ACCUM B STILL=0?
  1016. LDAB DATA+11 YES,SET UP EXEC TEST
  1017. * DATA+11=0376,N=1,Z=0,V=0,C=0
  1018. CMPB DATA+14 DATA+14=0177,N=0,Z=0,V=1,C
  1019. BMI * N=1?
  1020. BVC * NO,V=0?
  1021. EORB DATA+11 NO,SET UP EXEC TEST
  1022. * BNE * WAS ACCUM B ST NOP YES
  1023. BNE * WAS ACCUM b STILL=0376? *
  1024. SEV YES,SET OVERFLOW AND *
  1025. BVC * VERIFY.NEXT TEST SET UP,V=1*
  1026. CMPB DATA+5 DATA+5=0377,V=0 *
  1027. BVS * V=1? *
  1028. EORB DATA+3 NO,SET UP EXEC TEST *
  1029. BNE * WAS ACCUM b STILL=0? *
  1030. NOP YES *
  1031. *********************************************
  1032. *
  1033. * BIT TEST ACCUMULATOR A (BIT)
  1034. *
  1035. LDAA DATA+5 DATA+5=0377,SET UP TEST
  1036. SEV SET OVERFLOW
  1037. BVC * VERIFY OVERFLOW SET
  1038. SEC SET CARRY
  1039. BCC * VERIFY CARRY SET
  1040. BITA DATA+3 DATA+3=0,N=0,Z=1,C=1
  1041. BMI * N=1?
  1042. BNE * NO,Z=0?
  1043. BVS * NO,V=1?
  1044. BCC * NO,C=0?
  1045. EORA DATA+5 NO,SET UP EXEC TEST
  1046. BNE * RESULT=0377?
  1047. LDAA DATA+3 YES,SET UP NEXT TEST
  1048. BITA DATA+5 DATA+3=0 & DATA+5=0377,
  1049. * N=0,Z=1,V=0,C=1
  1050. BMI * N=1?
  1051. BNE * NO,Z=0?
  1052. BVS * NO,V=1?
  1053. BCC * NO,C=0?
  1054. EORA DATA+3 NO,SET UP EXEC TEST
  1055. BNE * RESULT =0?
  1056. LDAA DATA+5 YES,DATA+5=0377,
  1057. * SET UP NEXT TEST
  1058. CLC CLEAR CARRY
  1059. BCS * VERIFY CARRY CLEARED
  1060. SEV SET OVERFLOW
  1061. BVC *
  1062. bita DATA+5 DATA+5=0377 **
  1063. bpl * n=0? **
  1064. beq * no,z=1? **
  1065. BVS * NO,V=1? *
  1066. BCS * NO,C=1? *
  1067. EORA DATA+5 NO,SET UP EXEC TEST *
  1068. BNE * RESULT=0377? *
  1069.  
  1070. LDAA DATA+3 DATA+3=0
  1071. BITA DATA+3 N=0,Z=1,V=0,C=0
  1072. BMI * N=1?
  1073. BNE * NO,Z=0?
  1074. BVS * NO,V=1?
  1075. BCS * NO,C=1?
  1076. EORA DATA+3 NO,SET UP EXEC TEST
  1077. BNE * RESULT=0?
  1078. NOP YES
  1079. *********************************************
  1080. *
  1081. * BIT TEST ACCUMULATOR B (BIT)
  1082. *
  1083. * LDAB DATA+5 DATA+5=0377,SET E * NO,Z=0?
  1084. LDAB DATA+5 DATA+5=0377,SET UP TEST *
  1085. SEV SET OVERFLOW *
  1086. BVC * VERIFY OVERFLOW SET *
  1087. SEC SET CARRY *
  1088. BCC * VERIFY CARRY SET *
  1089. BITB DATA+3 DATA+3=0,N=0,Z=1,C=1 *
  1090. BMI * N=1? *
  1091. BNE * NO,Z=0? *
  1092. BVS * NO,V=1?
  1093. BCC * NO,C=0?
  1094. EORB DATA+5 NO,SET UP EXEC TEST
  1095. BNE * RESULT=0377?
  1096. LDAB DATA+3 YES,SET UP NEXT TEST
  1097. BITB DATA+5 DATA+3=0 & DATA+5=0377,
  1098. * N=0,Z=1,V=0,C=1
  1099. BMI * N=1?
  1100. BNE * NO,Z=0?
  1101. BVS * NO,V=1?
  1102. BCC * NO,C=0?
  1103. EORB DATA+3 NO,SET UP EXEC TEST
  1104. BNE * RESULT=0?
  1105. LDAB DATA+5 YES,DATA+5=0377,
  1106. * SET UP NEXT TEST
  1107. CLC CLEAR CA
  1108. BCS * VERIFY CARRY CLEARED *
  1109. SEV SET OVERFLOW *
  1110. BVC * *
  1111. bitb DATA+5 DATA+5=0377 **
  1112. bpl * n=0? **
  1113. beq * no,z=1? **
  1114. BVS * NO,V=1?
  1115. BCS * NO,C=1?
  1116. EORB DATA+5 NO,SET UP EXEC TEST
  1117. BNE * RESULT=0377?
  1118. LDAB DATA+3 DATA+3=0
  1119. BITB DATA+3 DATA+3=0,N=0,Z=1,V=0,C=0
  1120. BMI * N=1?
  1121. BNE * NO,Z=0?
  1122. BVS * NO,V=1?
  1123. BCS * N/,C=1?
  1124. EORB DATA+3 NO,SET UP EXEC TEST
  1125. BNE * RESULT=0?
  1126. NOP YES
  1127. *********************************************
  1128. PAGE
  1129. *
  1130. ******************************************************
  1131. *
  1132. * CHECK ADDRESSING MODES FOR GROUP I INSTRUCTIONS
  1133. * ASSUMES DIRECT MODE FOR EACH INSTRUCTION HAS
  1134. * BEEN CHECKED ABOVE.
  1135. *
  1136. ******************************************************
  1137. ******************************************************
  1138. *
  1139. LDAA #$AA CHECK IMMEDIATE MODE - 1 BYTE
  1140. CMPA DATA
  1141. BNE *
  1142. LDAA #$55
  1143. CMPA DATA
  1144. BEQ *
  1145. *
  1146. LDX #$AA55 IMMEDIATE MODE - 2 BYTE
  1147. CPX DATA
  1148. BNE *
  1149. LDX #$55AA
  1150. CPX DATA
  1151. BEQ *
  1152. *
  1153. LDAA DATA2 EXTENDED MODE - 1 BYTE
  1154. CMPA #$55
  1155. BNE *
  1156. *
  1157. *
  1158. LDX #$3344 EXTENDED MODE - 2 BYTE
  1159. STX TMP2
  1160. LDAA TMP2
  1161. LDAB TMP2+1
  1162. CMPA #$33
  1163. BNE *
  1164. CMPB #$44
  1165. BNE *
  1166. *
  1167. *
  1168. *
  1169. * INDEXED MODE - ZERO OFFSET
  1170. *
  1171. LDX #DATA2 INDEXED MODE - 1 BYTE
  1172. LDAA 0,X
  1173. CMPA 0,X
  1174. BNE *
  1175. *
  1176. LDX 0,X INDEXED - 2 BYTE
  1177. CPX #$55AA
  1178. BNE *
  1179. *
  1180. * INDEXED MODE - NON ZERO OFFSET
  1181. *
  1182. LDX #DATA2-128 1 BYTE
  1183. LDAA 128,X
  1184. INX BUMP SO THE OFFSET IS DIFFERENT
  1185. CMPA 127,X
  1186. BNE *
  1187. INX
  1188. *
  1189. LDX 126,X 2 BYTE
  1190. CPX #$55AA
  1191. BNE *
  1192. PAGE
  1193. *
  1194. *
  1195. * THE BSR AND JSR INSTRUCTIONS ARE NOT GROUP I
  1196. * TYPE INSTRUCTIONS BUT THEY DO OCCUPY SPACE
  1197. * IN THE GROUP I SECTION OF THE OPCODE MAP
  1198. * AND SO ARE INCLUDED HERE.
  1199. *
  1200. **************************************************
  1201. *
  1202. * BRANCH TO SUBROUTINE
  1203. *
  1204. *
  1205. LDS #STACK SETUP STACK
  1206. BSR BR1 GO TO SUB
  1207. BR2 BRA * SHOULD NEVER GET HERE
  1208. BR1 STS TMP SEE WHAT SP IS NOW
  1209. LDX TMP SHOULD BE DECREMENTED BY 2
  1210. CPX #STACK-2
  1211. BNE *
  1212. LDX 1,X GET RETURN ADDRESS OFF OF STACK
  1213. CPX #BR2 IS IT OKAY?
  1214. BNE *
  1215. *
  1216. **************************************************
  1217. *
  1218. * JUMP TO SUBROUTINE
  1219. *
  1220. *
  1221. LDS #STACK RE-INIT STACK
  1222. JSR JS1 GO TO SUB
  1223. JS2 BRA * SHOULD NEVER GET HERE
  1224. JS1 STS TMP SEE IF SP IS DECREMENTED BY 2
  1225. LDX TMP
  1226. CPX #STACK-2
  1227. BNE *
  1228. LDX 1,X CHECK RETURN ADDRESS ON STACK
  1229. CPX #JS2
  1230. BNE *
  1231. * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  1232. *
  1233. * GROUP 1 TEST COMPLETE
  1234. *
  1235. * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  1236. NOP
  1237. NOP
  1238. NOP
  1239. BRA GRP6
  1240. PAGE
  1241. * TTL **** 6800 TOTAL INSTRUCTION TEST - GROUP 6 ****
  1242. *
  1243. *********************************************************
  1244. *
  1245. * G R P 6
  1246. *
  1247. ********************************************************
  1248. *
  1249. *
  1250. * GROUP VI INSTRUCTIONS INCLUDE:
  1251. * NOP
  1252. * TAP
  1253. * TPA
  1254. * INX
  1255. * DEX
  1256. * CLV
  1257. * SEV
  1258. * CLC
  1259. * SEC
  1260. * CLI
  1261. * SEI
  1262. *
  1263. *
  1264. * ASSUMES FOLLOWING ALREADY HAVE BEEN TESTED:
  1265. * GROUP I
  1266. * BRANCHES (GROUP III)
  1267. *
  1268. * GMCM REVISION 1.0 - SEPT 1977
  1269. *
  1270. GRP6 LDAA #0
  1271. BNE *
  1272. TAP
  1273. TPA
  1274. EORA #$C0
  1275. BNE * TEST TAP,TPA FOR 00
  1276. LDAA #$FF
  1277. TAP
  1278. *
  1279. TPA
  1280. EORA #$FF
  1281. BNE * TEST TAP,TPA FOR FF
  1282. LDAA #$AA
  1283. TAP
  1284. *
  1285. TPA
  1286. EORA #$EA
  1287. BNE * TEST TPA,TAP FOR AA
  1288. *TEST CLV SEV
  1289. LDAA #$FF
  1290. TAP
  1291. CLV
  1292. TPA
  1293. EORA #$FD TEST CLV WITH 1S
  1294. BNE *
  1295. LDAA #$02
  1296. TAP
  1297. CLV
  1298. TPA
  1299. EORA #$C0 TEST CLV WITH 0 S
  1300. BNE *
  1301. LDAA #$FD
  1302. TAP
  1303. SEV
  1304. TPA
  1305. EORA #$FF TEST SEV WITH 1 S
  1306. BNE *
  1307. LDAA #$00
  1308. TAP
  1309. SEV
  1310. TPA
  1311. EORA #$C2 TEST SEV WITH 0 S
  1312. BNE *
  1313. *
  1314. * TEST CLC SEC
  1315. *
  1316. LDAA #$FF
  1317. TAP
  1318. CLC
  1319. TPA
  1320. EORA #$FE
  1321. BNE *
  1322. LDAA #$01
  1323. TAP
  1324. CLC
  1325. TPA
  1326. EORA #$C0 TEST CLC WITH 0 S
  1327. BNE *
  1328. LDAA #$FE
  1329. TAP
  1330. SEC
  1331. TPA
  1332. EORA #$FF
  1333. BNE *
  1334. LDAA #$00
  1335. TAP
  1336. SEC
  1337. TPA
  1338. EORA #$C1
  1339. BNE * TEST SEC9 WITH 0 S
  1340. *
  1341. * TEST CLI SEI
  1342. *
  1343. LDAA #$FF
  1344. TAP
  1345. CLI
  1346. TPA
  1347. EORA #$EF
  1348. BNE * TEST CLI WITH 1 S
  1349. LDAA #$10
  1350. TAP
  1351. CLI
  1352. TPA
  1353. EORA #$C0
  1354. BNE *
  1355. LDAA #$00
  1356. TAP
  1357. SEI
  1358. TPA
  1359. EORA #$D0
  1360. BNE *
  1361. LDAA #$EF
  1362. TAP
  1363. SEI
  1364. TPA
  1365. EORA #$FF TEST SEI WITH 1 S
  1366. BNE *
  1367. *
  1368. * TEST INX
  1369. *
  1370. LDAA #$00
  1371. LDX #$FFFF
  1372. TAP
  1373. INX
  1374. BNE *
  1375. BMI *
  1376. BVS *
  1377. LDX #$00EF
  1378. INX
  1379. BEQ *
  1380. BMI *
  1381. BVS *
  1382. TPA
  1383. EORA #$C0
  1384. BNE *
  1385. LDX #$8080
  1386. INX
  1387. BVS *
  1388. *
  1389. * TEST FOR DEX
  1390. *
  1391. LDAA #$00
  1392. LDX #$0001
  1393. TAP
  1394. DEX
  1395. BNE *
  1396. BMI *
  1397. BVS *
  1398. DEX
  1399. TPA
  1400. EORA #$C0
  1401. BNE *
  1402. LDX #$8081
  1403. DEX
  1404. BVS *
  1405. *
  1406. * TEST NOP
  1407. *
  1408. Z1 LDAA #$00
  1409. LDAB Z1+1
  1410. Z2 LDX #$0000
  1411. LDS #$0FFF
  1412. TAP
  1413. NOP
  1414. EORA #$00
  1415. BNE *
  1416. TPA
  1417. EORA #$C4
  1418. BNE *
  1419. EORB #$00
  1420. BNE *
  1421. CPX Z2+1
  1422. BNE *
  1423. TSX
  1424. DEX
  1425. CPX #$0FFF
  1426. BNE *
  1427. LDAA #$FF
  1428. TAP
  1429. NOP
  1430. TPA
  1431. EORA #$FF
  1432. BNE *
  1433. *
  1434. * GROUP 6 TEST COMPLETE-RETURN TO START
  1435. *
  1436. NOP
  1437. NOP
  1438. BRA GRP2
  1439. PAGE
  1440. * TTL **** 6800 TOTAL INSTRUCTION TEST - GROUP 2 ****
  1441. *
  1442. ************************************************************
  1443. *
  1444. * G R P 2
  1445. *
  1446. *************************************************************
  1447. *
  1448. *
  1449. *
  1450. * REVISION 1.1 - GMCM - SEPT 1977
  1451. *
  1452. * GROUP II INSTRUCTIONS INCLUDE:
  1453. * NEG
  1454. * COM
  1455. * LSR
  1456. * ROR
  1457. * ASR
  1458. * ASL
  1459. * ROL
  1460. * DEC
  1461. * INC
  1462. * TST
  1463. * JMP
  1464. * CLR
  1465. *
  1466. * PROGRAM TO TEST MPU GROUP 2 INSTRUCTIONS
  1467. *
  1468. * THIS TEST ASSUMES THE FOLLOWING HAVE ALREADY
  1469. * BEEN TESTED:
  1470. * GROUP I
  1471. * BRANCHES (GROUP III)
  1472. * GROUP VI
  1473. *
  1474. ************************************************
  1475. *
  1476. * NEGATE ACCUMULATOR A (NEG)
  1477. *
  1478. GRP2 LDAA OC377
  1479. NEGA NEGATE 0377 TO 0001,N=0,Z=0
  1480. BMI * N=1?
  1481. BEQ * NO,Z=1?
  1482. BVS * NO,V=1?
  1483. BCC * NO,C=0?
  1484. EORA OC001 NO,SET UP EXECUTION TEST.
  1485. BNE * WAS NEGATED NUMBER = 0001
  1486. LDAA ZERO YES
  1487. NEGA NEGATE ZERO TO ZERO,N=0,Z=1
  1488. BMI * N=1?
  1489. BNE * NO,Z=0?
  1490. BVS * NO,V=1?
  1491. BCS * NO,C=1? *
  1492. EORA ZERO NO,SET UP EXECUTION TEST. *
  1493. BNE * WAS NEGATED NUMBER = ZERO? *
  1494. LDAA OC200 YES *
  1495. NEGA NEGATE 0200 TO 0200.N=1,Z=0 *
  1496. BPL * N=0? *
  1497. BEQ * NO,Z=1? *
  1498. BVC * NO,V=0? *
  1499. BCC * NO,C=0?
  1500. EORA OC200 NO,SET UP EXEC TEST
  1501. BNE * WAS NEGATED NUMBER = 0200?
  1502. NOP YES
  1503. *********************************************
  1504. *
  1505. * NEGATE ACCUMULATOR B (NEG)
  1506. *
  1507. LDAB OC377
  1508. NEGB NEGATE 0377 TO 0001,N=0,Z=0
  1509. BMI * N=1?
  1510. BEQ * NO,Z=1?
  1511. BVS * NO,V=1?
  1512. BCC * NO,C=0?
  1513. EORB OC001 NO,SET UP EXECUTION TEST.
  1514. BNE * WAS NEGATED NUMBER = 0001?
  1515. LDAB ZERO YES
  1516. NEGB NEGATE ZERO TO ZERO,N=0,Z=|
  1517. BMI * N=1?
  1518. BNE * NO,Z=0?
  1519. BVS * NO,V=1?
  1520. BCS * NO,C=1?
  1521. EORB ZERO NO,SET UP EXECUTION TEST.
  1522. BNE * WAS NEGATED NUMBER = ZERO?
  1523. LDAB OC200 YES
  1524. NEGB NEGATE 0200 TO 0200.N=1,Z=0
  1525. BPL * N=0?
  1526. BEQ * NO,Z=1?
  1527. BVC * NO,V=0?
  1528. BCC * NO,C=0?
  1529. EORB OC200 NO,SET UP EXECUTION TEST
  1530. BNE * WAS NEGATED NUMBER = 0200?
  1531. NOP YES
  1532. *********************************************
  1533. *
  1534. * NEGATE MEMORY (NEG)
  1535. *
  1536. LDAA OC377
  1537. STAA TMP SET MEMORY LOCATION TO BE N
  1538. NEG TMP NEGATE 0377 TO 0100,N=0,Z=0
  1539. BMI * N=1?
  1540. BEQ * NO,Z=1?
  1541. BVS * NO,V=1?
  1542. BCC * NO,C=0?
  1543. LDAA TMP NO,GET NEGATED NUMBER
  1544. EORA OC001 SET UP EXECUTION TEST
  1545. BNE * IS NDGATED NUMBER = 0001?
  1546. NOP YES
  1547. *********************************************
  1548. *
  1549. * COMPLIMENT ACCUMULATOR A (COM)
  1550. *
  1551. LDAA OC377
  1552. COMA COMPLIMENT 0377 TO ZERO,N=0
  1553. BMI * N=1?
  1554. BNE * NO,Z=0?
  1555. BVS * NO,V=1?
  1556. BCC * NO,C=0?
  1557. EORA ZERO NO,SET UP EXECUTION TEST
  1558. BNE * WAS COMPLIMENTED NUMBER =ZE
  1559. COMA COMPLIMENT ZERO TO 0377,N=1
  1560. BPL * N=0?
  1561. BEQ * NO,Z=1?
  1562. BVS * NO,V=1?
  1563. BCC * NO,C=0?
  1564. EORA OC377 NO,SET UP EXECUTION TEST
  1565. BNE * WAS COMPLIMENTED NUMBER = 0
  1566. NOP YES
  1567. *********************************************
  1568. *
  1569. * COMPLIMENT ACCUMULATOR B (COM)
  1570. *
  1571. LDAB OC377
  1572. COMB CMPLMNT 0377 TO ZERO,
  1573. * N=0,Z=1,V=0,C=1
  1574. BMI * N=1?
  1575. BNE * NO,Z=0?
  1576. BVS * NO,V=1?
  1577. BCC * NO,C=0?
  1578. EORB ZERO NO,SET UP EXEC TEST
  1579. BNE * COMPLMNTD NUMBER=ZERO?
  1580. COMB YES,CMPLMNT ZERO TO 0377
  1581. BPL * N=0?
  1582. BEQ * NO,Z=1?
  1583. BVS * NO,V=1?
  1584. BCC * NO,C=0?
  1585. EORB OC377 NO,SET UP EXEC TEST
  1586. BNE * COMPLMNTD NUMBER=0377?
  1587. NOP YES
  1588. *********************************************
  1589. *
  1590. * COMPLIMENT MEMORY (COM)
  1591. *
  1592. LDAA OC377
  1593. STAA TMP SET UP MEMORY LOCATION
  1594. * TO BE COMPLIMENTED
  1595. COM TMP CMPLMNT 0377 TO ZERO,
  1596. * N=0,Z=1,V=0,C=1
  1597. BMI * N=1?
  1598. BNE * NO,Z=0?
  1599. BVS * NO,V=1?
  1600. BCC * NO,C=0?
  1601. LDAA TMP NO,GET CMPLMNTD NUMB
  1602. EORA ZERO SET UP EXEC TEST
  1603. BNE * COMPLMNTD NUMBER=0377?
  1604. NOP YES
  1605. *********************************************
  1606. *
  1607. * LOGICAL SHIFT RIGHT ACCUM A (LSR)
  1608. *
  1609. LDAA OC377 SET UP ACCUM A
  1610. LSRA SHIFT ONCE TO 0177,
  1611. * N=0,Z=0,V=1,C=1
  1612. BMI * N=1?
  1613. BEQ * NO,Z=1?
  1614. BVC * NO,V=0?
  1615. BCC * NO,C=0?
  1616. EORA OC177 NO,SET UP EXEC TEST
  1617. BNE * SHFTD NUMB=0177?
  1618. LDAA OC177 YES,RESTORE ACCUM A
  1619. LSRA SHIFT ONCE TO 0077
  1620. EORA OC077 SET UP EXEC TES"T
  1621. BNE * SHFTD NUMB=0077
  1622. LDAA OC077 YES,RESTORE ACCUM A
  1623. LSRA SHIFT ONCE TO 0037
  1624. EORA OC037 SET UP EXEC TEST
  1625. BNE * SHFTD NUMB=0037?
  1626. LDAA OC037 YES,RESTORE ACCUM A
  1627. LSRA SHIFT ONCE TO 0017
  1628. EORA OC017 SET UP EXEC TEST
  1629. BNE * SHFTD NUMB=0017?
  1630. LDAA OC017 YES,RESTORE ACCUM A
  1631. LSRA SHIFT ONCE TO 0007
  1632. EORA OC007 SET UP EXEC TEST
  1633. BNE * SHFTD NUMB=0007?
  1634. LDAA OC007 YES,RESTORE ACCUM A
  1635. LSRA SHIFT ONCE TO 0003
  1636. EORA OC003 SET UP EXEC TEST
  1637. BNE * SHFTD NUMB=0003?
  1638. LDAA OC003 YES,RESTORE ACCUM A
  1639. LSRA SHIFT ONCE TO 0001
  1640. EORA OC001 SET UP EXEC TEST
  1641. BNE * SHFTD NUMB=0001?
  1642. LDAA OC001 YES,RESTORE ACCUM A
  1643. LSRA SHIFT ONCE TO ZERO
  1644. * N=0,Z=1,V=1,C=1
  1645. BMI * N=1?
  1646. BNE * NO,Z=0?
  1647. BVC * NO,V=0?
  1648. BCC * NO,C=0?
  1649. EORA ZERO NO,SET UP EXEC TEST
  1650. BNE * SHFTD NUMB=0?
  1651. LSRA YES,SHIFT ONCE AGAIN TO
  1652. * ZERO,N=0,Z=1,V=0,C=0
  1653. BMI * N=1?
  1654. BNE * NO,Z=0?
  1655. BVS * NO,V=1?
  1656. BCS * NO,C=1?
  1657. NOP YES
  1658. *********************************************
  1659. *
  1660. * LOGICAL SHIFT RIGHT ACCUM B (LSR)
  1661. *
  1662. LDAB OC377 SET UP ACCUM B
  1663. LSRB SHIFT ONCE TO 0177,
  1664. * N=0,Z=0,V=1,C=1
  1665. BMI * N=1?
  1666. BEQ * NO,Z=1?
  1667. BVC * NO,V=0?
  1668. BCC * NO,C=0?
  1669. EORB OC177 NO,SET UP EXEC TEST
  1670. BNE * SHFTD NUMB=0177?
  1671. LDAB OC177 YES,RESTORE ACCUM B
  1672. LSRB SHIFT ONCE TO 0077
  1673. EORB OC077 SET UP EXEC TEST
  1674. BNE * SHFTD NUMB=0077
  1675. LDAB OC077 YES,RESTORE ACCUM B
  1676. LSRB SHIFT ONCE TO 0037
  1677. EORB OC037 SET UP EXEC TEST
  1678. BNE * SHIFTD NUMB=0037?
  1679. LDAB OC037 YES,RESTORE ACCUM B
  1680. LSRB SHIFT ONCE TO 0017
  1681. EORB OC017 SET UP EXEC TEST
  1682. BNE * SHFTD NUMB=0017
  1683. LDAB OC017 YES,RESTORE ACCUM B
  1684. LSRB SHIFT ONCE TO 0007
  1685. EORB OC007 SET UP EXEC TEST
  1686. BNE * SHIFTD NUMB=0007?
  1687. LDAB OC007 YES, RESTORE ACCUM B
  1688. LSRB SHIFT ONCE TO 0003
  1689. EORB OC003 SET UP EXEC TEST
  1690. BNE * SHFTD NUMB=003?
  1691. LDAB OC003 YES,RESTORE ACCUM B
  1692. LSRB SHIFT ONCE TO 0001
  1693. EORB OC001 SET UP EXEC TEST
  1694. BNE * SHFTD NUMB=0001?
  1695. LDAB OC001 YES,RESTORE ACCUM B
  1696. LSRB SHIFT ONCE TO ZERO,
  1697. * N=0,Z=1,V=1,C=1
  1698. BMI * N=1?
  1699. BNE * NO,Z=0?
  1700. BVC * NO,V=0?
  1701. BCC * NO,C=0?
  1702. EORB ZERO NO,SET UP EXEC TEST
  1703. BNE * SHFTD NUMB=ZERO?
  1704. LSRB YES,SHIFT ONCE ZERO STAYS,
  1705. * N=0,Z=1,V=0,C=0
  1706. BMI * N=1?
  1707. BNE * NO,Z=0?
  1708. BVS * NO,V=1?
  1709. BCS * NO,C=1?
  1710. NOP NO
  1711. *********************************************
  1712. *
  1713. * LOGICAL SHIFT RIGHT MEMORY (LSR)
  1714. *
  1715. LDAA OC377
  1716. STAA TMP SET UP MEM LOCATION
  1717. * TO BE SHIFTED
  1718. LSR TMP SHIFT TMP TO 0177,
  1719. * N=0,Z=0,V=1,C=1
  1720. BMI * N=1?
  1721. BEQ * N0,Z=1?
  1722. BVC * NO,V=0?
  1723. BCC * NO,C=0?
  1724. LDAA TMP NO,FETCH SHFTD NUMBER
  1725. EORA OC177 SET UP EXEC TEST
  1726. BNE * SHFTD NUMB=0177?
  1727. LDAA OC001 YES
  1728. STAA TMP SET UP MEM LOCATION
  1729. * TO BE SHIFTED
  1730. LSR TMP SHIFT TMP TO ZERO.,
  1731. * N=0,Z=1,V=1,C=1
  1732. BMI * N=1?
  1733. BNE * NO,Z=0?
  1734. BVC * NO,V=0?
  1735. BCC * NO,C=0?
  1736. LDAA TMP NO,FETCH SHFTD NUMB
  1737. EORA ZERO SET UP EXEC TEST
  1738. BNE * SHFTD NUMB=ZERO?
  1739. LSR TMP YES,SHFT TMP AGAIN TO ZERO
  1740. * N=0,Z=1,V=0,C=0
  1741. BMI * N=1?
  1742. BNE * NO,Z=0?
  1743. BVS * NO,V=1?
  1744. BCS * NO,C=1?
  1745. LDAA TMP NO,FETCH SHFTD NUMB
  1746. EORA ZERO SET UP EXEC TEST
  1747. BNE * SHFTD NUMB=0?
  1748. NOP YES
  1749. *********************************************
  1750. *
  1751. * ROTATE ACCUMULATOR A RIGHT (ROR)
  1752. *
  1753. CLC CLEAR CARRY
  1754. BCS * VERIFY CARRY CLEARED
  1755. LDAA OC126 SET UP TEST
  1756. RORA ROTATE 0126 TO 0053,
  1757. * N=0,Z=0,V=0,C=0
  1758.  
  1759. bmi * negative? *
  1760. beq * zero? *
  1761. bvs * overflow? *
  1762. bcs * carry? *
  1763. eora OC053 *
  1764. bne * *
  1765. ldaa OC053 *
  1766. clc *
  1767. bcs * *
  1768. clv *
  1769. bvs * *
  1770. rora *
  1771. beq * *
  1772.  
  1773. BMI * N=1?
  1774. BVC * NO,V=0?
  1775. BCC * NO,C=0?
  1776. EORA OC025 NO,SET UP EXEC TEST
  1777. BNE * ROTATED NUMB=0025?
  1778. LDAA OC025 YES,RESTORE ACCUM A &
  1779. SEV SET OVERFLOW
  1780. BVC * VERIFY OVERFLOW SET
  1781. RORA ROTATE 0025 TO 0212,
  1782. * N=5,Z=0,V=0,C=1
  1783. BPL * N=0?
  1784. BVS * ,NO,V=1?
  1785. BCC * NO,C=0?
  1786. EORA OC212 NO,SET UP EXEC TEST
  1787. BNE * ROTATED NUMF=0212?
  1788. LDAA OC212 YES,RESTORE ACCUM A
  1789. RORA ROTATE 0212 TO 0305,
  1790. * N=1,Z=0,V=1,C=0
  1791. BPL * N=0? *
  1792. BVC * NO,V=0? *
  1793. BCS * NO,C=1? *
  1794. EORA OC305 NO,SET UP EXEC TEST *
  1795. BNE * ES,CLEAR CARRY *
  1796. BCS * VERIFY CARRY CLEARED *
  1797. LDAa OC305 SET UP NEXT TEST *
  1798. rora rotate 0305 to 0142, *
  1799. * n=0,z=0,v=1,c=1 *
  1800. bmi * *
  1801. beq * *
  1802. bvc * *
  1803. bcc * *
  1804. EORA OC142 NO,SET UP EXEC TEST
  1805. BNE * ROTATED NUMB=0142?
  1806. CLC YES,CLEAR CARRY
  1807. BCS * VERIFY CARRY CLERAED
  1808. LDAA OC001 SET UP NET TEST
  1809. RORA SHIFT OC001 TO
  1810. * ZERO,Z=1
  1811. BNE * Z=0?
  1812. EORA ZERO NO,SET UP EXEC TEST
  1813. BNE * Z=0?
  1814. RORA VERIFY CARRY CLEARED
  1815. LDAB OC126 SET UP TEST
  1816. RORB ROTATE 0126 TO 0053,
  1817. * N=0,Z=0,V=0,C=0
  1818. BMI * N=1?
  1819. BVS * NO,V=1?
  1820. BCS * NO,C=1?
  1821. EORB OC053 NO,SET UP EXEC TEST
  1822. BNE * ROTATED NUMB=0053?
  1823. LDAB OC025 YES,RESTORE ACCUM B &
  1824. SEc SET carry
  1825. BcC * VERIFY carry set
  1826. LDAB OC212 YES,RESTORE ACCUM B
  1827. RORB ROTATE 0212 TO 0305,
  1828. * N=1,Z=0,V=1,C=0
  1829. BPL * N=0?
  1830. BVC * NO,V=0?
  1831. BCS * NO,C=1?
  1832. EORB OC305 NO,SET UP EXEC TEST
  1833. BNE * ES,CLEAR CARRY
  1834. BCS * VERIFY CARRY CLEARED
  1835. LDAB OC001 SET UP NEXT TEST
  1836. RORB ROTATE 0001 TO
  1837. * ZERO,Z=1
  1838. BNE * Z=0?
  1839. EORB ZERO NO,SET UP EXEC TEST
  1840. BNE * Z=0?
  1841. RORB YES,ROTATE ACCUM B TO
  1842. * CLEARY CARRY
  1843. BCS * VERIFY CARRY CLEARED
  1844. LDAA OC126 SET UP TEST
  1845. STAA TMP SET UP MEM LOCATION TO BE S
  1846. ROR TMP ROTATE 0126 TO 0053
  1847. * N=0,Z=0,V=0,C=0
  1848. BMI * N=1?
  1849. BVS * NO,V=1?
  1850. BCS * NO,C=1?
  1851. LDAA TMP NO,FETCH RORATED NUMB
  1852. EORA OC053 SET UP EXEC TEST
  1853. BNE * ROTATED NUMB=0053?
  1854. ROR TMP ROTATE 0053 TO 0025,
  1855. * N=0,Z=0,V=1,C=1
  1856. BMI * N=1?
  1857. BVC * NO,V=0?
  1858. BCC * NO,C=0?
  1859. LDAA TMP FETCH ROTATED NUMB
  1860. EORA OC025 SET UP EXEC TEST
  1861. BNE * ROTATED NUMB=0025?
  1862. SEV YES,SET OVERFLOW
  1863. BVC * VERIFY OVERFLOW SET
  1864. ROR TMP ROTATE 0025 TO 0212,
  1865. * N=1,Z=0,V=0,C=1
  1866. BPL * N=0?
  1867. BVS * NO,V=1?
  1868. BCC * NO,C=0?
  1869. LDAA TMP NO,FETCH ROTATED NUMB
  1870. EORA OC212 SET UP EXEC TEST
  1871. BNE * ROTATED NUMB=0212?
  1872. ROR TMP ROTATE 0212 TO 0305,
  1873. * N=1,Z=0,V=1,C=0
  1874. BPL * N=0?
  1875. BVC * NO,V=0?
  1876. BCS * NO,C=1?
  1877. LDAA TMP NO,FETCH ROTATED NUMB
  1878. EORA OC305 SET UP EXEC TEST
  1879. BNE * ROTATED NUMB=0305?
  1880. ROR TMP ROTATE 0305 TO 0142,N=0
  1881. BMI * N=1?
  1882. LDAA TMP NO,FETCH ROTATED NUMB
  1883. EORA OC142 SET UP EXEC TEST
  1884. BNE * ROTATED NUMB=0142?
  1885. CLC YES,CLEAR CARRY
  1886. BCS * VERIFY CARRY CLEARED
  1887. LDAA OC001 SET UP EXEC TEST
  1888. STAA TMP SET UP MEM LOCATION TO BE R
  1889. ROR TMP ROTATE 0001 TO
  1890. * ZERO,Z=1
  1891. BNE * Z=0?
  1892. LDAA TMP NO,FETCH ROTATED NUMB
  1893. EORA ZERO SET UP EXEC TEST
  1894. BNE * ROTATED NUMB=ZERO?
  1895. ROR TMP YES,ROTATE ZERO TO
  1896. * 0200,Z=0
  1897. BEQ * Z=1?
  1898. LDAA TMP NO,FETCH ROTATED NUMB
  1899. EORA OC200 SET UP EXEC TEST
  1900. BNE * ROTATED NUMB=0200?
  1901. NOP YES
  1902. *********************************************
  1903. *
  1904. * ARITHMETICALLY SHIFT RIGHT ACCUMULATOR
  1905. *
  1906. LDAA OC125 SET UP TEST
  1907. ASRA SHIFT 0125 TO 0052,
  1908. * N=0,V=1,C=1
  1909. BMI * N=1?
  1910. BVC * NO,V=0?
  1911. BCC * NO,C=0?
  1912. EORA OC052 NO,SET UP EXEC TEST
  1913. BNE * SHFTD NUMB=0052?
  1914. LDAA OC052 YES,RESTORE ACCUM A
  1915. SEV & SET (OVERFLOW
  1916. BVC * VERIFY OVERFLOW SET
  1917. ASRA SHIFT 0052 TO 0025,
  1918. * N=0,V=0,C=0
  1919. BMI * N=1?
  1920. BVS * NO,V=1?
  1921. BCS * NO,C=1?
  1922. EORA OC025 NO,SET UP EXEC TEST
  1923. BNE * SHFTD NUMB=0025?
  1924. LDAA OC252 YES,SET UP NEXT TEST
  1925. ASRA SHIFT 0252 TO 0325,
  1926. * N=1,V=1,C=0
  1927. BPL * N=0?
  1928. BVC * NO,V=0?
  1929. BCS * NO,C=1?
  1930. EORA OC325 NO,SET UP EXEC TEST
  1931. BNE * SHFTD NUMB=A325?
  1932. LDAA OC325 YES,RESTORE ACCUM A &
  1933. SEV SET OVERFLOW
  1934. BVC * VERIFY OVERFLOW SET
  1935. ASRA SHIFT 0325 TO 0352,
  1936. * N=1,V=0,C=1
  1937. BPL * N=0?
  1938. BVS * NO,V=1?
  1939. BCC * NO,C=0?
  1940. EORA OC352 NO,SET UP EXEC TEST
  1941. BNE * SHFTD NUMB=0352?
  1942. LDAA OC001 YES,SET UP NEXT TEST
  1943. ASRA SHIFT 0001 TO ZERO,Z=1
  1944. BNE * Z=0?
  1945. NOP NO
  1946. *********************************************
  1947. *
  1948. * ARITHMETICALLY SHIFT RIGHT ACCUM B (ASR)
  1949. *
  1950. LDAB OC125 SET UP TEST
  1951. ASRB SHIFT 0125 TO 0052,
  1952. * N=0,V=1,C=1
  1953. BMI * N=1?
  1954. BVC * NO,V=0?
  1955. BCC * NO,C=0?
  1956. EORB OC052 NO,SET UP EXEC TEST
  1957. BNE * SHFTD NUMB=0052?
  1958. LDAB OC052 YES,RESTORE ACCUM B
  1959. SEV & OVERFLOW
  1960. BVC * VERIFY OVERFLOW SET
  1961. ASRB SHIFT 0052 TO 0025
  1962. * N=0,V=0,C=0
  1963. BMI * N=1?
  1964. BVS * NO,V=1?
  1965. BCS * NO,C=1?
  1966. EORB OC025 NO,SET UP EXEC TEST
  1967. BNE * SHFTD NUMB=0025?
  1968. LDAB OC252 YES,SET UP NEXT TEST
  1969. ASRB SHIFT 0252 TO 0325,
  1970. * N=1,V=1,C=0
  1971. BPL * N=0?
  1972. BVC * NO,V=0?
  1973. BCS * NO,C=1?
  1974. EORB OC325 NO,SET UP EXEC TEST
  1975. BNE * SHFTD NUMB=0325?
  1976. LDAB OC325 YES,RESTORE ACCUM B
  1977. SEV &SET OVERFLOW
  1978. BVC * VERIFY OVERFLOW SET
  1979. ASRB SHIFT 0325 TO 0352,
  1980. * N=1,V=0,C=1
  1981. BPL * N=0?
  1982. BVS * NO,V=1?
  1983. BCC * NO,C=0?
  1984. EORB OC352 NO,SET UP EXEC TEST
  1985. BNE * SHFTD NUMB=0352
  1986. LDAB OC001 YES,SET UP NEXT TEST
  1987. ASRB SHIFT 0001 TO ZERO,Z=1
  1988. BNE * Z=0?
  1989. NOP NO
  1990. *********************************************
  1991. *
  1992. * ARITHMETICALLY SHIFT RIGHT MEMORY (ASR)
  1993. *
  1994. LDAA OC125 SET UP TEST
  1995. STAA TMP
  1996. ASR TMP SHIFT 0125 TO 0052,
  1997. * N=0,V=1,C=1
  1998. BMI * N=1?
  1999. BVC * NO,V=0?
  2000. BCC * NO,C=0?
  2001. LDAA TMP NO,FETCH SHFTD NUMB
  2002. EORA OC052 SET UP EXEC TEST
  2003. BNE * SHFTD NUMB=0052?
  2004. SEV SHFTD NUMB =0025?
  2005. LDAA OC252 YES,SET UP NEXT TEST
  2006. STAA TMP
  2007. ASR TMP SHIFT 0252 TO 0325,
  2008. * N=1,V=1,C=0
  2009. BPL * N=0?
  2010. BVC * NO,V=0?
  2011. BCS * NO,C=1?
  2012. LDAA TMP NO,FETCH SHFTD NUMB
  2013. EORA OC325 SET UP EXEC TEST
  2014. BNE * SHFTD NUMB=0325?
  2015. SEV YES,SET OVERFLOW
  2016. BVC * VERIFY OVERFLOW SET
  2017. ASR TMP SHIFT0325 TO 0352
  2018. * N=1,V=0,C=1
  2019. BPL * N=0?
  2020. BVS * NO,V=1 NO
  2021. *********************************************
  2022. *
  2023. * ARITHMETICALLY SHIFT LEFT ACCUM A (ASL)
  2024. *
  2025. LDAA OC135
  2026. ASLA SHIFT 0135 TO 0272,
  2027. * N=1,Z=0,V=1,C=0
  2028. BPL * N=0? *
  2029. BEQ * NO,Z=1? *
  2030. BVC * NO,V=0? *
  2031. BCS * NO,C=1? *
  2032. EORa OC272 NO,SET UP EXEC TEST *
  2033. BNE * SHFTD NUMB=0272? *
  2034. LDAa OC272 YES,RESTORE ACCUM B *
  2035. ASLa SHIFT 0272 TO 0164 *
  2036. * N=0,V=1,C=1 *
  2037. BMI * N=1? *
  2038. BVC * NO,V=0? *
  2039. BCC * NO,C=0? *
  2040. EORa OC164 NO,SET UP EXEC TEST *
  2041. BNE * SHFTD NUMB=0164?
  2042. LDAA OC164 YES,RESTORE ACCUM A
  2043. ASLA SHIFT 0164 TO 0350,
  2044. * N=1,V=1,C=0
  2045. BPL * N=0?
  2046. BVC * NO,V=0?
  2047. BCS * NO,C=1?
  2048. EORA OC350 NO,SET UP EXEC TEST
  2049. bne *
  2050.  
  2051. LDAA OC320 YES,RESTORE ACCUM A
  2052. ASLA SHIFT 0320 TO
  2053. * 0240,V=0
  2054. BVS * V=1?
  2055. ASLA NO,SHIFT 0240 TO
  2056. * 0100,V=1
  2057. BVC * =0?
  2058. ASLA NO,SHIFT 0100
  2059. * TO 0200,Z=0
  2060. BEQ * Z=1?
  2061. ASLA NO,SHIFT 0200
  2062. * TO ZERO,Z=1,V=1
  2063. BNE * Z=0?
  2064. BVC * NO,V=0?
  2065. EORA ZERO NO,SET UP EXEC TE**************************************
  2066. *
  2067. * ARITHMETICALLY SHIFT LEFT ACCUM B (ASL)
  2068. *
  2069. LDAB OC135
  2070. ASLB SHIFT 0135 TO 0272,
  2071. * N=1,Z=0,V=1,C=0
  2072. BPL * N=0?
  2073. BEQ * NO,Z=1?
  2074. BVC * NO,V=0?
  2075. BCS * NO,C=1?
  2076. EORB OC272 NO,SET UP EXEC TEST
  2077. BNE * SHFTD NUMB=0272?
  2078. LDAB OC272 YES,RESTORE ACCUM B
  2079. ASLB SHIFT 0272 TO 0164
  2080. * N=0,V=1,C=1
  2081. BMI * N=1?
  2082. BVC * NO,V=0?
  2083. BCC * NO,C=0?
  2084. EORB OC164 NO,SET UP EXEC TEST
  2085. BNE * SHFTD NUMB=0164?
  2086. LDAB OC164 YES,RESTORE ACCUM B
  2087. ASLB SHIFT 0164 TO 0350,
  2088. * N=1,V=1,C=0
  2089. BPL * N=0?
  2090. BVC * v=0?
  2091. bcs * NO,C=0?
  2092. EORB OC350 NO,SET UP EXEC TEST
  2093. BNE * SHFTD NUMB=0350?
  2094. LDAB OC320 YES,RESTORE ACCUM B
  2095. ASLB SHIFT 0320 TO
  2096. * 0240,V=0
  2097. BVS * V=1?
  2098. ASLB NO,SHIFT 0240
  2099. * TO 0100,V=1
  2100. BVC * V=0?
  2101. ASLB NO,SHIFT 0100
  2102. * TO 0200,Z=0
  2103. BEQ * Z=1?
  2104. ASLB NO,SHIFT 0200
  2105. * TO ZERO,Z=1,V=1
  2106. BNE * Z=0?
  2107. BVC * NO,V=0?
  2108. EORB ZERO NO,SET UP EXEC TEST
  2109. ******************
  2110. *
  2111. * ARITHMETICALLY SHIFT LEFT MEMORY (ASL)
  2112. *
  2113. LDAA OC135
  2114. STAA TMP SET UP MEM LOCATION TO BE S
  2115. ASL TMP SHIFT 0135 TO 0272,
  2116. * N=1,Z=0,V=1,C=1
  2117. BPL * N=0?
  2118. BEQ * NO,Z=1?
  2119. BVC * NO,NO,V=0?
  2120. BCS * NO,C=1?
  2121. LDAA TMP NO,FETCH SHFTD NUMB
  2122. EORA OC272 SET UP EXEC TEST
  2123. BNE * SHFTD NUMB=0272
  2124. ASL TMP YES,SHIFT 0272 TO 0164,
  2125. * N=0,V=1,C=1
  2126. BMI * N=1?
  2127. BVC * NO,V=0?
  2128. BCC * NO,C=0?
  2129. LDAA TMP NO,
  2130. eora OC164
  2131. bne *
  2132. asl TMP shift 0164 to 0350
  2133. * N=1,V=1,C=0
  2134. BPL * N=0?
  2135. BVC * v=0?
  2136. bcs * NO,C=0?
  2137. LDAA TMP NO,FETCH SHFTD NUMB
  2138. EORA OC350 SET UP EXEC TEST
  2139. BNE * SHFTD NUMB=0350?
  2140. ASL TMP YES,SHIFT 0350 TO 0320
  2141. * N=1,Z=0,C=1
  2142. BPL * N=0?
  2143. BVS * NO,V=1?
  2144. BCC * C=0?
  2145. LDAA TMP NO,FETCH SHFTD NUMB
  2146. EORA OC320 SET UP EXEC TEST
  2147. BNE * SHFTD NUMB=0320?
  2148. ASL TMP YES,SHIFT 0320 TO
  2149. * 0240,V=0
  2150. BVS * V=1?
  2151. ASL TMP NO,SHIFT 0240
  2152. * TO 0100,V=1
  2153. BVC * V=1?
  2154. ASL TMP NO,SHIFT 0100
  2155. * TO 0200,Z=0
  2156. BEQ * Z=1?
  2157. ASL TMP NO,SHIFT 0200
  2158. * TO ZERO,Z=1,V=1
  2159. BNE * Z=0?
  2160. BVC * NO,V=0?
  2161. LDAA TMP NO,FETCH SHFTD NUMB
  2162. EORA ZERO SET UP EXEC TEST
  2163. BNE * SHFTD NUMB=0200?
  2164. ASL TMP YES,SHIFT,CLEARING C BIT,
  2165. * Z=1,V=0,C=0
  2166. BNE * Z=0?
  2167. BVS * NO,V=1?
  2168. BCS *
  2169.  
  2170. ********************************************* *
  2171. * *
  2172. * ROTATE LEFT ACCUMULATOR a (ROL) *
  2173. * *
  2174. CLC CLEAR CARRY *
  2175. BCS * VERIFY CARRY IS CLEARED *
  2176. LDAa OC252 SET UP TEST *
  2177. ROLA ROTATE 0252 TO 0124,
  2178. * N=0,V=1,C=1
  2179. BMI * N=1?
  2180. BVC * NO,V=0?
  2181. BCC * NO,C=0?
  2182. EORA OC124 NO,SET UP EXEC TEST
  2183. BNE * ROTATED NUMB=0124?
  2184. LDAA OC124 YES,RESTORE ACCUM A
  2185. ROLA ROTATE 0124 TO 0251,
  2186. * N=1,V=1,C=0
  2187. BPL * N=0?
  2188. BVC * NO,V=0?
  2189. BCS * NO,C=1?
  2190. EORA OC251 NO,SET UP EXECTEST
  2191. BNE * ROTATED NUMB=0251?
  2192. LDAA OC251 YES,RESTORE ACCUM A
  2193. ROLA ROTATE 0251 TO 0122,
  2194. * N=0,C=1
  2195. BMI * N=1?
  2196. BCC * NO,C=0?
  2197. EORA OC122 NO,SET UP EXEC TEST
  2198. BNE * ROTATED NUMB=0122?
  2199. LDAA OC200 YES,SET UP NEXT TEST
  2200. CLC CLEAR CARRY
  2201. BCS * VERIFY CARRY CLEARED
  2202. ROLA ROTATE 0200 TO ZERO,
  2203. * Z=1,V=1
  2204. BNE * Z=0?
  2205. BVC * NO,V=0?
  2206. ROLA NO,ROTATE ZERO TO 0001,
  2207. * Z=0,V=0
  2208. BEQ * Z=1?
  2209. BVS * NO,V=1?
  2210. LDAA OC300 NO,SET UP NEXT TEST
  2211. ROLA ROTATE 0300 TO
  2212. * 0200,V=0
  2213. BVS * V=1?
  2214. NOP NO
  2215. *********************************************
  2216. *
  2217. * ROTATE LEFT ACCUMULATOR B (ROL)
  2218. *
  2219. CLC CLEAR CARRY
  2220. BCS * VERIFY CARRY IS CLEARED
  2221. LDAB OC252 SET UP TEST
  2222. ROLB ROTATE 0252 TO 0124,
  2223. * N=0,V=1,C=1
  2224. BMI * N=1?
  2225. BVC * NO,V=0?
  2226. BCC * NO,C=0?
  2227. EORB OC124 NO,SET UP EXEC TEST
  2228. BNE * ROTATED NUMB=0124?
  2229. LDAB OC124 YES,RESTORE ACCUM B
  2230. ROLB ROTATE 0124 TO 251,
  2231. * N=1,V=1,C=0
  2232. BPL * N=0?
  2233. BVC * NO,V=0?
  2234. BCS * NO,C=1?
  2235. EORB OC251 NO,SET UP EXEC TEST
  2236. BNE * ROTATED NUMB=0251?
  2237. LDAB OC251 YES,RESTORE ACCUM B
  2238. ROLB ROTATE 0251 TO 0122,
  2239. * N=0,C=1
  2240. BMI * N=|?
  2241. BCC * NO,C=0?
  2242. EORB OC122 NO,SET UP EXEC TEST
  2243. BNE * ROTATED NUMB=0122?
  2244. LDAB OC200 YES,SET UP NEXT TEST
  2245. CLC CLEAR CARRY
  2246. BCS * CLEARED
  2247. ROLB ROTATE 0200 TO ZERO,
  2248. * Z=1,V=1
  2249. BNE * Z=0?
  2250. BVC * NO,V=0?
  2251. ROLB NO,ROTATE ZERO TO 0001,
  2252. * Z=0,V=0
  2253. BEQ * Z=1?
  2254. BVS * NO,V=1?
  2255. LDAB OC300 NO,SET UP NEXT TEST
  2256. ROLB ROTATE 0300 TO
  2257. * 0200,V=0
  2258. BVS * V=1?
  2259. NOP NO
  2260. *********************************************
  2261. *
  2262. * ROTATE LEFT MEMORY (ROL)
  2263. *
  2264. CLC CLEAR CARRY
  2265. BCS * VERIFY CARRY CLEARED
  2266. LDAA OC252 SET UP TEST
  2267. STAA TMP SET UP MEM LOCATION TO BE R
  2268. ROL TMP ROTATE 0252 TO 0124,
  2269. * N=0,V=1,C=1
  2270. BMI * N=1?
  2271. BVC * NO,V=0?
  2272. BCC * NO,C=0?
  2273.  
  2274. ldaa TMP
  2275. EORa OC124 NO,SET UP EXEC TEST *
  2276. BNE * ROTATED NUMB=0124? *
  2277. LDAa OC124 YES,RESTORE ACCUM B *
  2278. staa TMP *
  2279. ROL TMP ROTATE 0124 TO 251, *
  2280. * N=1,V=1,C=0 *
  2281. BPL * N=0? *
  2282. BVC * NO,V=0? *
  2283. BCS * NO,C=1? *
  2284. * LDA 0?
  2285. * BCS * NO,C=1?
  2286. LDAA TMP NO,FETCH ROTATED NUMB
  2287. EORA OC251 SET UP EXEC TEST
  2288. BNE * ROTATED NUMB=0251?
  2289. ROL TMP YES,ROTATE 0251 TO 0122,
  2290. * N=0,C=1
  2291. BMI * N=1?
  2292. BCC * NO,C=0?
  2293. LDAA TMP NO,FETCH ROTATED NUMB
  2294. EORA OC122 SET UP EXEC TEST
  2295. BNE * ROTATED NUMB=0122?
  2296. LDAA OC200 YES, SET UP NEXT TEST
  2297. STAA TMP SET MEM LOCATION TO BE ROTA
  2298. CLC CLEAR CARRY
  2299. BCS * Z=1?
  2300. BVS * NO, V=1?
  2301. LDAA OC300 NO,SET UP NEXT TEST
  2302. STAA TMP SET UP MEM LOCATION TO BE R
  2303. ROL TMP ROTATE 0300 TO
  2304. * 0200,V=0
  2305. BVS * V=1?
  2306. NOP NO
  2307. **********************************************
  2308. *
  2309. * DECREMENT ACCUMULATOR A (DEC)
  2310. *
  2311. CLC CLEAR CARRY
  2312. BCS * VERIFY CARRY CLEARED
  2313. LDAA OC001 SET UP TEST
  2314. DECA DCRMT 0001 TO ZERO,
  2315. * N=0,Z=1,C=0
  2316. BMI * N=1?
  2317. BNE * NO,Z=0?
  2318. BCS * NO,C=1?
  2319. EORA ZERO NO,SET UP EXEC TEST
  2320. BNE * DCRMTD NUMB=ZERO?
  2321. SEC YES,SET CARRY
  2322. BCC * VERIFY CARRY SET
  2323. DECA DCRMT ZERO TO -1(0377),
  2324. * N=1,Z=0,C=1
  2325. BPL * N=0?
  2326. BEQ * NO,Z=1?
  2327. BCC * NO,C=0?
  2328. EORA OC377 NO,SET UP EXEC TEST
  2329. BNE * DCRMTD NUMB= -1(377)?
  2330. LDAA OC377 YES,RESTORE ACCUM A
  2331. DECA DCRMT TO -2(0376)
  2332. * V=0,C=1
  2333. BVS * V=1?
  2334. BCC * NO,C=0?
  2335. EORA OC376 NO,SET UP EXEC TEST
  2336. BNE * DCRMTD NUMB = -2(0376)?
  2337. LDAA OC200 YES,SET UP NEXT TEST
  2338. DECA DCRMT 0200 TO
  2339. * 0177,V=1
  2340. BVC * V=0?
  2341. EORA OC177 NO,SET UP EXEC TEST
  2342. BNE * DCRMTD NUMB=0177?
  2343. NOP YES
  2344. **********************************************
  2345. *
  2346. * DECREMENT ACCUMULATOR B (DEC)
  2347. *
  2348. CLC CLEAR CARRY
  2349. BCS * VERIFY CARRY CLEARED
  2350. LDAB OC001 SET UPPTEST
  2351. DECB DCRMT 0001 TO ZERO,
  2352. * N=0,Z=1,C=0
  2353. BMI * N=1?
  2354. BNE * NO,Z=0?
  2355. BCS * NO,C=1?
  2356. EORB ZERO NO,SET UP EXEC TEST
  2357. BNE * DCRMTD NUMB=ZERO?
  2358. SEC YES,SET CARRY
  2359. BCC * VERIFY CARRY SET
  2360. DECB DCRMT ZERO TO -1(0377)
  2361. * N=1,Z=0,C=1
  2362. BPL * N=0?
  2363. BEQ * NO,Z=1?
  2364. BCC * NO,C=0?
  2365. EORB OC377 NO,SET UP EXEC TEST
  2366. BNE * DCRMTD NUMB= -1(0377)?
  2367. LDAB OC377 YES,RESTORE ACCUM B
  2368. DECB DCRMT TO -2(0376),
  2369. * V=0,C=1
  2370. BVS * V=1?
  2371. BCC * NO,C=0?
  2372. EORB OC376 NO,SET UP EXEC TEST
  2373. BNE * DCRMTD NUMB= -2(0376)?
  2374. LDAB OC200 YES,SET UP NEXT TEST
  2375. DECB DCRMT 0200 TO
  2376. * 0177,V=1
  2377. BVC * V=0?
  2378. EORB OC177 NO,SET UP EXEC TEST
  2379. BNE * DCRMTD NUMB=0177?
  2380. NOP YES
  2381. **********************************************
  2382. *
  2383. * DECREMENT MEMORY (DEC)
  2384. *
  2385. CLC CLEAR CARRY
  2386. BCS * VERIFY CARRY CLEARED
  2387. LDAA OC001 SET UP TEST
  2388. STAA TMP SET UP MEM LOCATION TO BE D
  2389. DEC TMP DCRMT 0001 TO ZERO,
  2390. * N=0,Z=1,C=0
  2391. BMI * N=1?
  2392. BNE * NO,Z=0?
  2393. BCS * NO,C=1?
  2394. LDAA TMP NO,FETCH DCRMTD NUMB
  2395. EORA ZERO SET UP EXEC TEST
  2396. BNE * DCRMTD NUMB=ZERO?
  2397. SEC YES,SET CARRY
  2398. BCC * VERIFY CARRY SET
  2399. DEC TMP DCRMT ZERO TO -1(0377),
  2400. * N=1,Z=0,C=1
  2401. BPL * N=0?
  2402. BEQ * NO,Z=1?
  2403. BCC * NO,C=0?
  2404. LDAA TMP NO,FETCH DCRMTD NUMB
  2405. EORA OC377 SET UP EXEC TEST
  2406. BNE * DCRMTD NUMB= -1(0377)?
  2407. DEC TMP YES,DCRMT TO -2(0376),
  2408. * V=0,C=1
  2409. BVS * V=1?
  2410. BCC * NO,C=0?
  2411. LDAA TMP NO,FETCH DCRMTD NUMB
  2412. EORA OC376 SET UP EXEC TEST
  2413. BNE * DCRMTD NUMB= -2(0376)?
  2414. LDAA OC200 YES,SET UP NEXT TEST
  2415. STAA TMP SET UP MEM LOCATION TO BE D
  2416. DEC TMP DCRMT 0200 TO
  2417. * 0177,V=1
  2418. BVC * V=0?
  2419. LDAA TMP NO,FETCH DCRMTD NUMB
  2420. EORA OC177 SET UP EXEC TEST
  2421. BNE * DCRMTD NUMB=0177?
  2422. NOP YES
  2423. **********************************************
  2424. *
  2425. * INCREMENT ACCUMULATOR A (INC)
  2426. *
  2427. SEC SET CARRY
  2428. BCC * VERIFY CARRY SET
  2429. LDAA OC376 ACCUM A= -2(0376)
  2430. INCA ICRMT TO -1(0377),
  2431. * N=1,Z=0,V=0,C=1
  2432. BPL * N=0?
  2433. BEQ * NO,Z=1?
  2434. BVS * NO,V=1?
  2435. BCC * NO,C=0?
  2436. EORA OC377 NO,SET UP EXEC TEST
  2437. BNE * INCRMTD NUMB=0377?
  2438. CLC YES,CLEAR CARRY
  2439. BCS * VERIFY CARRY CLEARED
  2440. LDAA OC377 RESTORE ACCUM A
  2441. INCA ICRMT TO ZERO,
  2442. * N=0,Z=1,C=0
  2443. BMI * N=1?
  2444. BNE * NO,Z=0?
  2445. BCS * NO,C=1?
  2446. EORA ZERO NO,SET UP EXEC TEST
  2447. BNE * ICRMTD NUMB=ZERO
  2448. LDAA OC177 YES,SET UP NEXT TEST
  2449. BVS * VERIFY OVERFLOW= 0
  2450. INCA ICRMT TO 0200,V=1
  2451. BVC * V=0?
  2452. EORA OC200 NO,SET UP EXEC TEST
  2453. BNE * ICRMTD NUMB=0200
  2454. NOP YES
  2455. **********************************************
  2456. *
  2457. * INCREMENT ACCUMULATOR B (INC)
  2458. *
  2459. SEC SET CARRY
  2460. BCC * VERIFY CARRY SET
  2461. LDAB OC376 ACCUM B= -2(0376)
  2462. INCB ICRMT TO -1(0377),
  2463. * N=1,Z=0,V=0,C=1
  2464. BPL * N=0?
  2465. BEQ * NO,Z=1?
  2466. BVS * NO,V=1?
  2467. BCC * NO,C=0?
  2468. EORB OC377 NO,SET UP EXEC TEST
  2469. BNE * ICRMTD NUMB=0377?
  2470. CLC YES,CLEAR CARRY
  2471. BCS * VERIFY CARRY CLEARED
  2472. LDAB OC377 RESTORE ACCUM B
  2473. INCB ICRMT TO ZERO,
  2474. * N=0,Z=1,C=0
  2475. BMI * N=1?
  2476. BNE * NO,Z=0?
  2477. BCS * NO,C=1?
  2478. EORB ZERO NO,SET UP EXEC TEST
  2479. BNE * ICRMTD NUMB=ZERO?
  2480. LDAB OC177 YES,SET UP NEXT TEST
  2481. BVS * VERIFY OVERFLOW=0
  2482. INCB ICRMT TO 0200,V=1
  2483. BVC * V=0?
  2484. EORB OC200 NO,SET UP EXEC TEST
  2485. BNE * ICRMTD NUMB=0200?
  2486. NOP YES
  2487. **********************************************
  2488. *
  2489. * INCREMENT MEMORY (INC)
  2490. *
  2491. SEC SET CARRY
  2492. BCC * VERIFY CARRY SET
  2493. LDAA OC376
  2494. STAA TMP SET UP MEM LOCATION TO BE I
  2495. INC TMP ICRMT TO -1(0377),
  2496. * N=1,Z=0,V=0,C=1
  2497. BPL * N=0?
  2498. BEQ * NO,Z=1?
  2499. BVS * NO,V=1?
  2500. BCC * NO,C=0?
  2501. LDAA TMP NO,FETCH ICRMTD NUMB
  2502. EORA OC377 SET UP EXEC TEST
  2503. BNE * ICRMTD NUMB=0377
  2504. CLC YES,CLEAR CARRY
  2505. BCS * VERIFY CARRY CLEARED
  2506. INC TMP ICRMT TO ZERO,
  2507. * N=0,Z=1,C=0
  2508. BMI * N=1?
  2509. BNE * NO,Z=0?
  2510. BCS * NO,C=1?
  2511. LDAA TMP NO,FETCH ICRMTD NUMB
  2512. EORA ZERO SET UP EXEC TEST
  2513. BNE * ICRMTD NUMB= ZERO?
  2514. LDAA OC177 YES,SET UP NEXT TEST
  2515. STAA TMP SET UP MEM LOCATION TO BE I
  2516. BVS * VERIFY OVERFLOW=0
  2517. INC TMP ICRMT TO 0200,V=1
  2518. BVC * V=0?
  2519. LDAA TMP NO,FETCH ICRMTD NUMB
  2520. EORA OC200 SET UP EXEC TEST
  2521. BNE * ICRMTD NUMB=0200?
  2522. NOP YES
  2523. **********************************************
  2524. *
  2525. * TEST ACCUMULATOR A (TST)
  2526. *
  2527. LDAA OC377 SET UP TEST
  2528. TSTA N=1,Z=0,V=0,C=0
  2529. BPL * N=0?
  2530. BEQ * NO,Z=1?
  2531. BVS * NO,V=1?
  2532. BCS * NO,C=1?
  2533. EORA OC377 NO,SET UP EXEC TEST
  2534. BNE * ACCUM A=0377?
  2535. LDAA ZERO YES,SET UP NEXT TEST
  2536. TSTA N=0,Z=1,V=0,C=0
  2537. BMI * N=1?
  2538. BNE * NO,Z=0?
  2539. BVS * NO,V=1?
  2540. BCS * NO,C=1?
  2541. EORA ZERO NO,SET UP EXEC TEST
  2542. BNE * ACCUM A=ZERO?
  2543. NOP YES
  2544. **********************************************
  2545. *
  2546. * TEST ACCUMULATOR B (TST)
  2547. *
  2548. LDAB OC377 SET UP TEST
  2549. TSTB N=1,Z=0,V=0,C=0
  2550. BPL * N=0?
  2551. BEQ * NO,Z=1?
  2552. BVS * NO,V=1?
  2553. BCS * NO,C=1?
  2554. EORB OC377 NO,SET UP EXEC TEST
  2555. BNE * TSTED NUMB=0377?
  2556. LDAB ZERO YES,SET UP NEXT TEST
  2557. TSTB N=0,Z=1,V=0,C=0
  2558. BMI * N=1?
  2559. BNE * NO,Z=0?
  2560. BVS * NO,V=1?
  2561. BCS * NO,C=1?
  2562. EORB ZERO NO,SET UP EXEC TEST
  2563. BNE * TESTED NUMB=0?
  2564. NOP YES
  2565. **********************************************
  2566. *
  2567. * TEST MEMORY (TST)
  2568. *
  2569. LDAA OC377 SET UP TEST
  2570. STAA TMP SET UP MEM LOCATION TO BE T
  2571. TST TMP N=1,Z=0,V=0,C=0
  2572. BPL * N=0?
  2573. BEQ * NO,Z=1?
  2574. BVS * NO,V=1?
  2575. BCS * NO,C=1?
  2576. LDAA TMP NO,FETCH TESTED NUMB
  2577. EORA OC377 SET UP EXEC TEST
  2578. BNE * TESTED NUMB=0377?
  2579. LDAA ZERO YES,SET UP NEXT TEST
  2580. STAA TMP SET UP MEM LOCATION TO BE T
  2581. TST TMP N=0,Z=1,V=0,C=0
  2582. BMI * N=1?
  2583. BNE * NO,Z=0?
  2584. BVS * NO,V=1?
  2585. BCS * NO,C=1?
  2586. LDAA TMP NO,FETCH TESTED NUMB
  2587. BNE * TESTED NUMB=0?
  2588. NOP YES
  2589. **********************************************
  2590. *
  2591. * CLEAR ACCUMULATOR A (CLR)
  2592. *
  2593. LDAA OC377 SET UP TEST
  2594. * N=1,Z=0
  2595. BPL * VERIFY N=1
  2596. BEQ * VERIFY Z=0
  2597. CLRA CLEAR 0377 TO ZERO,
  2598. * N=0,Z=1,V=0,C=0
  2599. BMI * N=1?
  2600. BNE * NO,Z=0?
  2601. BVS * NO,V=1?
  2602. BCS * NO,C=1?
  2603. EORA ZERO NO,ZET UP EXEC TEST
  2604. BNE * ACCUM A=0?
  2605. CLRA CLEAR ZERO TO ZERO,
  2606. * N=0,Z=1,V=0,C=0
  2607. BMI * N=1?
  2608. BNE * NO,Z=0?
  2609. BVS * NO,V=1?
  2610. BCS * NO,C=1?
  2611. EORA ZERO NO,SET UP EXEC TEST
  2612. BNE * ACCUM A=ZERO?
  2613. NOP YES
  2614. **********************************************
  2615. *
  2616. * CLEAR ACCUMULATOR B (CLR)
  2617. *
  2618. LDAB OC377 SET UP TEST
  2619. * N=1,Z=0
  2620. BPL * VERIFY N=1
  2621. BEQ * VERIFY Z=0
  2622. CLRB CLEAR 0377 TO ZERO,
  2623. * N=0,Z=1,V=0,C=0
  2624. BMI * N=1?
  2625. BNE * NO,Z=0?
  2626. BVS * NO,V=1?
  2627. BCS * NO,C=1?
  2628. EORB ZERO NO,SET UP EXEC TEST
  2629. BNE * ACCUM B=ZERO?
  2630. CLRB CLEAR ZERO TO ZERO,
  2631. * N=0,Z=1,V=0,C=0
  2632. BMI * N=1?
  2633. BNE * NO,Z=0?
  2634. BVS * NO,V=1?
  2635. BCS * NO,C=1?
  2636. EORB ZERO NO, SET UP EXEC TEST
  2637. BNE * ACCUM B=ZERO?
  2638. NOP YES
  2639. **********************************************
  2640. *
  2641. * CLEAR MEMORY (CLR)
  2642. *
  2643. LDAA OC377 SET UP TEST
  2644. STAA TMP SET UP MEM LOCATION TO BE C
  2645. * N=1,Z=0
  2646. BPL * VERIFY N=1
  2647. BEQ * VERIFY Z=0
  2648. CLR TMP CLEAR 0377 TO ZERO,
  2649. * N=0,Z=1,V=0,C=0
  2650. BMI * N=1?
  2651. BNE * NO,Z=0?
  2652. BVS * NO,V=1?
  2653. BCS * NO,C=1?
  2654. LDAA TMP NO,FETCH CLEARED NUMB
  2655. EORA ZERO SET UP EXEC TEST
  2656. BNE * CLEARED NUMB=0?
  2657. CLR TMP CLEAR ZERO TO ZERO,
  2658. * N=0,Z=1,V=0,C=0
  2659. BMI * N=1?
  2660. BNE * NO,Z=0?
  2661. BVS * NO,V=1?
  2662. BCS * NO,C=1?
  2663. LDAA TMP NO,FETCH CLEARED NUMB
  2664. EORA ZERO SET UP EXEC TEST
  2665. BNE * CLEARED NUMB=0?
  2666. NOP YES
  2667. *
  2668. ****************************************************
  2669. *
  2670. * JUMP
  2671. *
  2672. *
  2673. JMP JP1 FORWARD JUMP
  2674. BRA *
  2675. JP1 CLRA FLAG
  2676. JP3 TSTA TEST FLAG
  2677. BNE JP2 ONLY GO THRU LOOP ONCE
  2678. INCA
  2679. JMP JP3 REVERSE JUMP
  2680. BRA *
  2681. JP2 NOP
  2682. *
  2683. *********************************************************
  2684. *
  2685. * CHECK GROUP II INDEX ADDRESSING MODE.
  2686. * IT IS ASSUMED AT THIS POINT THAT ALL GROUP II
  2687. * INSTRUCTIONS HAVE BEEN TESTED USING EXTENDED
  2688. * ANDA CUMULATOR ADDRESSING
  2689. *
  2690. *
  2691. LDX #TMP SETUP INDEX REG
  2692. LDAA #$FF PUT -1 IN TMP
  2693. STAA TMP
  2694. NEG 0,X NEG USING INDEXED MODE
  2695. LDAA TMP SHOULD BE +1 NOW
  2696. CMPA #1
  2697. BNE *
  2698. COM 0,X COM USING INDEX MODE
  2699. LDAA TMP SHOULD BE $FE NOW
  2700. CMPA #$FE
  2701. BNE *
  2702. LSR 0,X SHIFT USING INDEX MODE
  2703. LDAA TMP SHOULD BE $7F NOW
  2704. CMPA #$7F
  2705. BNE *
  2706. SEC SET TO ROTATE IN 1
  2707. ROR 0,X ROR USING INDEX MODE
  2708. LDAA TMP SHOULD BE $BF NOW
  2709. CMPA #$BF
  2710. BNE *
  2711. ASR 0,X ASR USING INDEX MODE
  2712. LDAA TMP SHOULD BE $DF NOW
  2713. CMPA #$DF
  2714. BNE *
  2715. ASL 0,X ASL USING INDEX MODE
  2716. LDAA TMP SHOULD BE $BE NOW
  2717. CMPA #$BE
  2718. BNE *
  2719. SEC SET TO ROTATE IN 1
  2720. ROL 0,X ROL USING INDEX MODE
  2721. LDAA TMP SHOULD BE $7D NOW
  2722. CMPA #$7D
  2723. BNE *
  2724. DEC 0,X DEC USING INDEX MODE
  2725. LDAA TMP SHOULD BE $7C NOW
  2726. CMPA #$7C
  2727. BNE *
  2728. INC 0,X INC USING INDEX MODE
  2729. LDAA TMP SHOULD BE $7D AGAIN
  2730. CMPA #$7D
  2731. BNE *
  2732. CLR 0,X CLR USING INDEX MODE
  2733. LDAA TMP SHOULD BE ZERO
  2734. BNE *
  2735. TST 0,X TST USING INDEX MODE
  2736. BNE *
  2737. LDX #JP4 DO INDEXXED JUMP
  2738. JMP 0,X
  2739. BRA *
  2740. JP4 NOP
  2741. LDX #TMP-128 TRY INDEX WITH NON-ZERO OFFSET
  2742. CLR 128,X
  2743. INX BUMP INDEX TO CHANGE OFFSET
  2744. COM 127,X
  2745. LDAA TMP
  2746. CMPA #-1
  2747. BNE *
  2748. *
  2749. **********************************************
  2750. * ALL DONE -
  2751. *
  2752. NOP
  2753. NOP
  2754. NOP
  2755. BRA GRP4
  2756. *
  2757. * DATA
  2758. *
  2759. ZERO FCB $00 * 00 WAS OCTAL @00
  2760. OC001 FCB $01 * 0001
  2761. OC003 FCB $03 * 0003
  2762. OC007 FCB $07 * 0007
  2763. OC017 FCB $0F * 0017
  2764. OC025 FCB $15 * 0025
  2765. OC037 FCB $1F * 0037
  2766. OC052 FCB $2A * 0052
  2767. OC053 FCB $2B * 0053
  2768. OC077 FCB $3F * 0077
  2769. OC122 FCB $52 * 0122
  2770. OC124 FCB $54 * 0124
  2771. OC125 FCB $55 * 0125
  2772. OC126 FCB $56 * 0126
  2773. OC127 FCB $57 * * 0127
  2774. OC135 FCB $5D * 0135
  2775. OC142 FCB $62 * 0142
  2776. OC164 FCB $74 * 0164
  2777. OC177 FCB $7F * 0177
  2778. OC200 FCB $80 * 0200
  2779. OC212 FCB $8A * 0212
  2780. OC225 FCB $95 * 0225
  2781. OC251 FCB $A9 * 0251
  2782. OC252 FCB $AA * 0252
  2783. OC254 FCB $AC * 0254
  2784. OC272 FCB $BA * 0272
  2785. OC300 FCB $C0 * 0300
  2786. OC305 FCB $C5 * 0305
  2787. OC320 FCB $D0 * 0320
  2788. OC325 FCB $D5 * 0325
  2789. OC350 FCB $E8 * 0350
  2790. OC352 FCB $EA * 0352
  2791. OC376 FCB $FE * 0376
  2792. OC377 FCB $FF * 0377
  2793. PAGE
  2794. * TTL **** 6800 TOTAL INSTRUCTION TEST - GROUP 4 ****
  2795. *
  2796. *
  2797. *****************************************************
  2798. *
  2799. * G R P 4
  2800. *
  2801. *****************************************************
  2802. *
  2803. *
  2804. * REV 1.0
  2805. * GMCM REVISION 1.1 - SEPT 1977
  2806. *
  2807. * GROUP IV INSTRUCTIONS INCLUDE:
  2808. * TAB
  2809. * TBA
  2810. * SBA
  2811. * CBA
  2812. * DAA
  2813. * ABA
  2814. *
  2815. * ASSUMES THE FOLLOWING HAVE ALREADY BEEN CHECKED
  2816. * AND WORK:
  2817. * BRANCHES (GROUP III)
  2818. * GROUP I
  2819. * GROUP VI
  2820. * PSHA,PULA
  2821. *
  2822. *
  2823. * PROGRAM TO TEST GP4 INSTRUCTIONS
  2824. *
  2825. * TEST TAB
  2826. *
  2827. GRP4 LDAA #$00
  2828. TAP
  2829. TAB
  2830. TPA
  2831. EORA #$C4
  2832. BNE * DATA 00
  2833. EORB #$00
  2834. BNE *
  2835. LDAA #$AA
  2836. TAB
  2837. TPA
  2838. EORA #$C8 DATA AA
  2839. BNE *
  2840. EORB #$AA
  2841. BNE *
  2842. LDAA #$FF
  2843. TAB
  2844. TPA
  2845. EORA #$C8
  2846. BNE * DATA FF
  2847. EORB #$FF
  2848. BNE *
  2849. *
  2850. * TEST TBA
  2851. *
  2852. LDAB #$00
  2853. TAP
  2854. TBA
  2855. BCS *
  2856. BVS * DATA 00
  2857. ABA
  2858. BMI *
  2859. EORA #$00
  2860. BNE *
  2861. TPA
  2862. EORA #$C4
  2863. BNE *
  2864. LDAB #$AA
  2865. TBA
  2866. BCS * DATA AA
  2867. BVS *
  2868. BPL *
  2869. BEQ *
  2870. EORA #$AA
  2871. BNE *
  2872. TPA
  2873. EORA #$C4
  2874. BNE *
  2875. LDAB #$FF
  2876. TBA
  2877. BCS *
  2878. BVS *
  2879. BPL *
  2880. BEQ *
  2881. EORA #$FF DATA FF
  2882. BNE *
  2883. TPA
  2884. EORA #$C4
  2885. BNE *
  2886. *
  2887. * TEST ABA
  2888. *
  2889. LDS #STACK
  2890. LDAA #$00
  2891. LDAB #$05
  2892. ABA
  2893. PSHA
  2894. TPA
  2895. EORA #$C0 DATA #1
  2896. BNE *
  2897. PULA
  2898. EORA #$05
  2899. BNE *
  2900. *
  2901. LDAA #$7A
  2902. LDAB #$7A
  2903. ABA
  2904. PSHA
  2905. TPA
  2906. EORA #$EA DATA #2
  2907. BNE *
  2908. PULA
  2909. EORA #$F4
  2910. BNE *
  2911. *
  2912. LDAA #$40
  2913. LDAB #$C0
  2914. ABA
  2915. PSHA
  2916. TPA DATA 3
  2917. EORA #$C5
  2918. BNE *
  2919. PULA
  2920. EORA #$00
  2921. BNE *
  2922. *
  2923. LDAA #$00
  2924. LDAB #$80
  2925. ABA
  2926. PSHA
  2927. TPA DATA 4
  2928. EORA #$C8
  2929. BNE *
  2930. PULA
  2931. EORA #$80
  2932. BNE *
  2933. *
  2934. LDAA #$C0
  2935. LDAB #$40
  2936. ABA
  2937. PSHA
  2938. TPA
  2939. EORA #$C5 DATA 5
  2940. BNE *
  2941. PULA
  2942. EORA #$00
  2943. BNE *
  2944. *
  2945. LDAA #$80
  2946. LDAB #$00
  2947. ABA
  2948. PSHA
  2949. TPA DATA 6
  2950. EORA #$C8
  2951. BNE *
  2952. PULA
  2953. EORA #$80
  2954. BNE *
  2955. *
  2956. LDAA #$80
  2957. LDAB #$80
  2958. ABA
  2959. PSHA
  2960. TPA DATA 7
  2961. EORA #$C7
  2962. BNE *
  2963. PULA
  2964. EORA #$00
  2965. BNE *
  2966. *
  2967. LDAA #$C0
  2968. LDAB #$C0
  2969. ABA
  2970. PSHA
  2971. TPA
  2972. EORA #$C9
  2973. BNE *
  2974. PULA DATA 8
  2975. EORA #$80
  2976. BNE *
  2977. *
  2978. * TEST SBA
  2979. *
  2980. LDAA #$0A
  2981. LDAB #$0A
  2982. SBA
  2983. PSHA
  2984. TPA
  2985. EORA #$C4 DATA 1
  2986. BNE *
  2987. PULA
  2988. EORA #$00
  2989. BNE *
  2990. *
  2991. LDAA #$70
  2992. LDAB #$7F
  2993. SBA
  2994. PSHA
  2995. TPA DATA 2
  2996. EORA #$C9
  2997. BNE *
  2998. PULA
  2999. EORA #$F1
  3000. BNE *
  3001. *
  3002. LDAA #$48
  3003. LDAB #$F7
  3004. SBA
  3005. PSHA
  3006. TPA DATA 3
  3007. EORA #$C1
  3008. BNE *
  3009. PULA
  3010. EORA #$51
  3011. BNE *
  3012. *
  3013. LDAA #$48
  3014. LDAB #$B7
  3015. SBA
  3016. PSHA DATA 4
  3017. TPA
  3018. EORA #$CB
  3019. BNE *
  3020. PULA
  3021. EORA #$91
  3022. BNE *
  3023. *
  3024. LDAA #$8A
  3025. LDAB #$7F
  3026. SBA
  3027. PSHA
  3028. TPA
  3029. EORA #$C2
  3030. BNE * DATA 5
  3031. PULA
  3032. EORA #$0B
  3033. BNE *
  3034. EORB #$7F
  3035. BNE *
  3036. *
  3037. LDAA #$CB
  3038. LDAB #$0F
  3039. SBA
  3040. PSHA
  3041. TPA
  3042. EORA #$C8
  3043. BNE * DATA 6
  3044. PULA
  3045. EORA #$BC
  3046. BNE *
  3047. *
  3048. LDAA #$CB
  3049. LDAB #$81
  3050. SBA
  3051. PSHA
  3052. TPA DATA 7
  3053. EORA #$C0
  3054. BNE *
  3055. PULA
  3056. EORA #$4A
  3057. BNE *
  3058. *
  3059. LDAA #$8B
  3060. LDAB #$F0
  3061. SBA
  3062. PSHA
  3063. TPA DATA 8
  3064. EORA #$C9
  3065. BNE *
  3066. PULA
  3067. EORA #$9B
  3068. BNE *
  3069. EORB #$F0
  3070. BNE *
  3071. *
  3072. * TEST CBA
  3073. *
  3074. LDAA #$0A
  3075. LDAB #$0A
  3076. CBA
  3077. PSHA
  3078. TPA DATA 1
  3079. EORA #$C4
  3080. BNE *
  3081. PULA
  3082. EORA #$0A
  3083. BNE *
  3084. EORB #$0A
  3085. BNE *
  3086. *
  3087. LDAA #$48
  3088. LDAB #$B7
  3089. CBA
  3090. PSHA
  3091. TPA
  3092. EORA #$CB DATA 4
  3093. BNE *
  3094. PULA
  3095. EORA #$48
  3096. BNE *
  3097. EORB #$B7
  3098. BNE *
  3099. *
  3100. * TEST DAA
  3101. *
  3102. LDAA #$E1
  3103. TAP
  3104. LDAA #$00
  3105. DAA DATA 1
  3106. PSHA
  3107. TPA
  3108. EORA #$E1
  3109. BNE *
  3110. PULA
  3111. EORA #$66
  3112. BNE *
  3113. *
  3114. LDAA #$C0
  3115. TAP
  3116. LDAA #$99
  3117. DAA DATA 2
  3118. PSHA
  3119. TPA
  3120. EORA #$C8
  3121. BNE *
  3122. PULA
  3123. EORA #$99
  3124. BNE *
  3125. *
  3126. LDAA #$C0
  3127. TAP
  3128. LDAA #$AA
  3129. DAA
  3130. PSHA DATA 3
  3131. TPA
  3132. EORA #$C1
  3133. BNE *
  3134. PULA
  3135. EORA #$10 * Need to confirm the correct result here... YES $C1 and $10 correct on real CPU!
  3136. BNE *
  3137. *
  3138. LDAA #$C0
  3139. TAP
  3140. LDAA #$9A
  3141. DAA DATA 4
  3142. PSHA
  3143. TPA
  3144. EORA #$C5
  3145. BNE *
  3146. PULA
  3147. EORA #$00
  3148. BNE *
  3149. *
  3150. NOP
  3151. NOP
  3152. NOP GO BACK TO START
  3153. BRA GRP5
  3154. PAGE
  3155. * TTL **** 6800 TOTAL INSTRUCTION TEST - GROUP 5 ****
  3156. *
  3157. ***********************************************
  3158. *
  3159. * G R P 5
  3160. *
  3161. ************************************************
  3162. *
  3163. *
  3164. *
  3165. *
  3166. * GROUP V INSTRUCTIONS ARE:
  3167. * TSX
  3168. * INS
  3169. * PULA
  3170. * PULB
  3171. * DES
  3172. * TXS
  3173. * PSHA
  3174. * PSHB
  3175. * RTS
  3176. * WAI*
  3177. *
  3178. * * WAI WILL BE TESTED IN A SEPARATE INTERUPT DIAGNOSTIC
  3179. * SWI AND RTI ARE NOT INCLUDED IN THIS DIAGNOSTIC
  3180. *
  3181. * THE GROUP V TESTS ASSUME ALL OTHER GROUPS ARE ALREADY
  3182. * WORKING AND TESTED.
  3183. *
  3184. *
  3185. *
  3186. **********************************************************
  3187. *
  3188. * TRANSFER SP TO X-REG (TSX)
  3189. *
  3190. *
  3191. GRP5 LDS #TEMP LOAD STACK REG
  3192. TSX TRANSFER SP+1 -> X
  3193. CPX #TEMP+1 OK?
  3194. BNE *
  3195. LDS #$1FFF TRY A 16 BIT VERSION
  3196. TSX SP + 1 --> X
  3197. CPX #$2000
  3198. BNE *
  3199. CLRA MAKE SURE TSX DOESN'T CHANGE ANY CC'S
  3200. TAP
  3201. TSX
  3202. TPA
  3203. CMPA #$C0
  3204. BNE *
  3205. *
  3206. **********************************************************
  3207. *
  3208. * TRANSFER X-REG TO SP (TXS)
  3209. *
  3210. *
  3211. LDX #TEMP+1
  3212. LDS #0 CLEAR SP
  3213. TXS X-1 -> SP
  3214. STS TEMP SAVE NEW SP
  3215. LDX TEMP GET IT IN X
  3216. CPX #TEMP OK?
  3217. BNE * HANG IF NOT
  3218. CLRA MAKE SURE TXS DOESN'T CHANGE ANY CC'S
  3219. TAP
  3220. TXS
  3221. TPA
  3222. CMPA #$C0
  3223. BNE *
  3224. *
  3225. ***********************************************************
  3226. *
  3227. * INCREMENT STACK POINTER (INS)
  3228. *
  3229. *
  3230. LDS #TEMP
  3231. INS INC SP
  3232. TSX SP+1 -> X
  3233. CPX #TEMP+2 OK?
  3234. BNE * HANG IF NOT
  3235. LDS #$FF
  3236. INS FF+1 -> 100
  3237. TSX SP+1 -> X
  3238. CPX #$101 OK?
  3239. BNE * HANG IF NOT
  3240. CLRA MAKE SURE INS DOESN'T CHANGE ANY CC'S
  3241. TAP
  3242. INS
  3243. TPA
  3244. CMPA #$C0
  3245. BNE *
  3246. *
  3247. ***********************************************************
  3248. *
  3249. * DECREMENT STACK POINTER (DES)
  3250. *
  3251. *
  3252. DS1 LDS #$100 INIT SP
  3253. DES SP-1 -> SP
  3254. TSX SP+1 --> X
  3255. CPX #$100 OK?
  3256. BNE *
  3257. CLRA MAKE SURE DES DOESN'T CHANGE ANY CC'S
  3258. TAP
  3259. TSX
  3260. TPA
  3261. CMPA #$C0
  3262. BNE *
  3263. *
  3264. ************************************************************
  3265. *
  3266. * PUSH A-REGISTER ON STACK (PSHA)
  3267. *
  3268. *
  3269. PSA1 LDS #STACK INIT STACK
  3270. LDAA #$55
  3271. PSHA PUSH IT
  3272. TSX POINT X TO LAST ON STACK
  3273. CMPA 0,X WAS IT PUSHED
  3274. BNE * HANG IF NOT
  3275. LDAA #$AA TRY WITH DIFFERENT PATTERN
  3276. PSHA
  3277. TSX
  3278. CMPA 0,X
  3279. BNE *
  3280. CLRA MAKE SURE NO CC'S ARE CHANGED
  3281. TAP
  3282. PSHA DO A PSHA
  3283. TPA GET CC'S
  3284. CMPA #$C0 OK?
  3285. BNE * HANG IF NOT
  3286. INS
  3287. INS
  3288. INS CLEAN UP STACK
  3289. *
  3290. **************************************************************
  3291. *
  3292. * PUSH B-REGISTER ON STACK (PSHB)
  3293. *
  3294. *
  3295. PSB1 LDS #STACK INIT STACK
  3296. LDAB #$AA LOAD A CONSTANT
  3297. PSHB PUSH IT
  3298. TSX POINT X TO LAST ON STACK
  3299. CMPB 0,X WAS IT PUSHED?
  3300. BNE * HANG IF NOT
  3301. I LDAB #$55 DO ANOTHER PATTERN
  3302. PSHB
  3303. TSX
  3304. CMPB 0,X
  3305. BNE *
  3306. CLRA MAKE SURE NO CC'S ARE SET
  3307. TAP
  3308. PSHB DO A PSHB
  3309. TPA GET BACK CC'S
  3310. CMPA #$C0 OK?
  3311. BNE * HANG IF NOT
  3312. INS
  3313. INS CLEAN STACK
  3314. INS
  3315. *
  3316. ******************************************************
  3317. *
  3318. * PULL FROM STACK INTO A (PULA)
  3319. *
  3320. *
  3321. PLA1 LDS #STACK INIT SP
  3322. CLRA PUSH ZERO
  3323. PSHA
  3324. COMA SCREW UP A
  3325. PULA RETRIEVE A
  3326. TSTA SHOULD BE ZERO
  3327. BNE *
  3328. LDAA #$FF PUSH ALL 1'S
  3329. PSHA
  3330. CLRA CHANGE A
  3331. PULA SHOULD BE ALL 1'S
  3332. CMPA #$FF
  3333. BNE *
  3334. CLRA MAKE SURE NO CC'S ARE CHANGED
  3335. TAP BY PSHA OR PULA
  3336. PSHA
  3337. PULA
  3338. TPA
  3339. CMPA #$C0 SHOULD BE $C0
  3340. BNE *
  3341. *
  3342. ******************************************************
  3343. *
  3344. * PULL FROM STACK INTO B (PULB)
  3345. *
  3346. *
  3347. PLB1 LDS #STACK INIT SP
  3348. CLRB PUSH ZERO
  3349. PSHB
  3350. COMB SCREW IT UP
  3351. PULB RETRIEVE IT
  3352. TSTB SHOULD BE ZERO
  3353. BNE *
  3354. LDAB #$FF PUSH ALL 1'S
  3355. PSHB
  3356. CLRB CHANGE B
  3357. PULB SHOULD BE ALL 1'S
  3358. CMPB #$FF
  3359. BNE *
  3360. CLRA MAKE SURE NO CC'S ARE CHANGED
  3361. TAP BY PSHB OR PULB
  3362. PSHB
  3363. PULB
  3364. TPA SHOULD BE $C0
  3365. CMPA #$C0
  3366. BNE *
  3367. *
  3368. ********************************************************
  3369. *
  3370. * RETURN FROM SUBROUTINE (RTS)
  3371. *
  3372. *
  3373. LDS #STACK INIT SP
  3374. JSR RT1 GO TO SUB
  3375. BRA * SHOULD'T GET HERE
  3376. TPA CHECK CC'S AFTER RTS
  3377. CMPA #$C0
  3378. BNE *
  3379. BRA RT2 OKAY,SKIP AROUND
  3380. RT1 TSX MODIFY RETURN ADDRESS TO SKIP BRA *
  3381. LDAA 0,X LOAD RETURN ADDRESS
  3382. LDAB 1,X
  3383. ADDB #2 FIX IT
  3384. ADCA #0
  3385. STAA 0,X
  3386. STAB 1,X
  3387. CLRA CLEAR CC'S TO MAKE SURE
  3388. TAP RTS DOESN'T CHANGE ANY
  3389. RTS
  3390. *
  3391. RT2 LDX #RT3 TRY RTS WITHOUT JSR
  3392. STX TMP PUT DESTINATION (RT3)
  3393. LDAA TMP+1 ON STACK
  3394. PSHA
  3395. LDAB TMP
  3396. PSHB RT3 ON STACK
  3397. RTS
  3398. BRA * SHOULDN'T GET HERE
  3399. RT3 NOP OKAY!
  3400. *
  3401. *
  3402. ********************************************************
  3403. *
  3404. BRKPT NOP EVERYTHINGS OKAY !!!!!!!!!!!!!!!!!!!!!!!!!
  3405. NOP
  3406. NOP
  3407. LDX #OKMSG PRINT 'OK' ON THE TERMINAL
  3408. JSR PDATA
  3409. NOP
  3410. NOP
  3411. NOP
  3412. JMP ST GO BACK TO START
  3413. *
  3414. OKMSG FCC / OK/
  3415. FCB 4
  3416. *
  3417. PAGE
  3418. *
  3419. END ST
  3420.  
Advertisement
Comments
  • User was banned
  • User was banned
  • User was banned
  • User was banned
Add Comment
Please, Sign In to add comment