1. DATA;
  2. Alloc _Ram_Size
  3. Ascii_Fin:;DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1
  4. _ClrScr:;
  5. PUSH EBP
  6. MOV EBP,ESP
  7. INC EBP
  8. Mov EAX,65536;Add EAX,2041
  9. Mov #EAX,1
  10. Mov #EAX,0
  11. POP EBP
  12. RET
  13. _Print:;
  14. PUSH EBP
  15. MOV EBP,ESP
  16. INC EBP
  17. mov EDX,EBP;
  18. add EDX,2; // Colour
  19. mov ESI,#EDX;
  20. mov EDX,EBP;
  21. add EDX,3; // Y
  22. mov EBX,#EDX;
  23. mov EDX,EBP;
  24. add EDX,4; // X
  25. mov ECX,#EDX;
  26. mov EDX,EBP;
  27. add EDX,5; // String
  28. mov EDI,#EDX;
  29. Mov EAX,65536
  30. Mul ECX,2
  31. Mul EBX,60
  32. Add EAX,EBX;Add EAX,ECX
  33. Print_:
  34. Cmp #EDI,0
  35. Je _PRET
  36. Mov #EAX,#EDI
  37. Inc EAX
  38. Mov #EAX,ESI
  39. Inc EAX
  40. Inc EDI
  41. Jmp Print_
  42. _PRET:
  43. POP EBP
  44. RET
  45. _End:;
  46. PUSH EBP
  47. MOV EBP,ESP
  48. INC EBP
  49. _End_:
  50. Jmp _End_
  51. POP EBP
  52. RET
  53. _Ram_sz:;
  54. PUSH EBP
  55. MOV EBP,ESP
  56. INC EBP
  57. mov EDX,EBP;
  58. add EDX,2; // Memory
  59. mov ECX,#EDX;
  60. Push EAX
  61. Push ESI
  62. Mov ESI,65536;Add ESI,ECX
  63. //** First Byte
  64. Mov #_Ram_size,0
  65. _Ram_CHK:
  66. Mov #ESI,1234567
  67. Cmp #ESI,1234567
  68. Jne Continue
  69. Mov #ESI,0
  70. Add ESI,8;Add #_Ram_Size,8
  71. Jmp _Ram_CHK
  72. Continue:
  73. Pop ESI
  74. Pop EAX
  75. POP EBP
  76. RET
  77. Alloc _JP
  78. Alloc _JY
  79. Alloc _JR
  80. _Opcode_Details:;
  81. PUSH EBP
  82. MOV EBP,ESP
  83. INC EBP
  84. Cmp #Opcode,0;Ce _Opcode_0
  85. Cmp #Opcode,1;Ce _Opcode_1
  86. Cmp #Opcode,2;Ce _Opcode_2
  87. Cmp #Opcode,3;Ce _Opcode_3
  88. POP EBP
  89. RET
  90. Alloc _Temp
  91. Alloc Opcode
  92. NO:
  93. inc #Opcode
  94. Ret
  95. PO:
  96. Dec #Opcode
  97. Ret
  98. _CheckAngle:;
  99. PUSH EBP
  100. MOV EBP,ESP
  101. INC EBP
  102. Cmp #Opcode,3
  103. Jge Check_2
  104. Cmp #_JR,40
  105. CG NO
  106. Check_2:
  107. Cmp #Opcode,0
  108. Jle Check_End
  109. Cmp #_JR,-40
  110. CL PO
  111. Check_End:
  112. POP EBP
  113. RET
  114. _GetAngle:;
  115. PUSH EBP
  116. MOV EBP,ESP
  117. INC EBP
  118. in #_JP,0
  119. in #_JY,1
  120. in #_JR,2
  121. POP EBP
  122. RET
  123. _SaveAngle:;
  124. PUSH EBP
  125. MOV EBP,ESP
  126. INC EBP
  127. mov EDX,EBP;
  128. add EDX,2; // Memory
  129. mov ESI,#EDX;
  130. Mov EAX,65536;Add EAX,2048
  131. Mov #EAX, #_JP
  132. inc EAX
  133. Mov #EAX, #_JY
  134. Inc EAX
  135. Mov #EAX, #_JR
  136. POP EBP
  137. RET
  138. _PITOA:;
  139. PUSH EBP
  140. MOV EBP,ESP
  141. INC EBP
  142. mov EDX,EBP;
  143. add EDX,2; // Colour
  144. mov ESI,#EDX;
  145. mov EDX,EBP;
  146. add EDX,3; // Y
  147. mov EBX,#EDX;
  148. mov EDX,EBP;
  149. add EDX,4; // X
  150. mov ECX,#EDX;
  151. Mul ECX,2
  152. Mul EBX,60
  153. Mov EAX,65536;Add EAX,ECX;Add EAX,EBX
  154. Mov EDI,Ascii_Fin
  155. Print_I:
  156. Cmp #EDI,-1
  157. Je _IPRET
  158. Mov #EAX,#EDI
  159. Inc EAX
  160. Mov #EAX,ESI
  161. Inc EAX
  162. Inc EDI
  163. Jmp Print_I
  164. _IPRET:
  165. POP EBP
  166. RET
  167. _ITOA:;
  168. PUSH EBP
  169. MOV EBP,ESP
  170. INC EBP
  171. mov EDX,EBP;
  172. add EDX,2; // Interger
  173. mov ESI,#EDX;
  174. AsciiNize:
  175. mov EAX,Ascii_Fin
  176. mov EDX,10000000 // if you want less digits, remove zeros from this number
  177. mov EBX,ESI
  178. mov ECX,0
  179. fint EBX
  180. div EBX,EDX
  181. div EDX,10
  182. fint EBX
  183. mov ECX,EBX
  184. mul ECX,EDX
  185. add EBX,48
  186. mov #EAX,EBX
  187. inc EAX
  188. jmp Int_loop
  189. Int_loop:
  190. mov EBX,ESI
  191. div EBX,EDX
  192. fint EBX
  193. push EBX
  194. sub EBX,ECX
  195. pop ECX
  196. mul ECX,10
  197. add EBX,48
  198. mov #EAX,EBX // Write to DB
  199. inc EAX
  200. div EDX,10
  201. cmp EDX,0.1
  202. je Int_Fin
  203. jmp Int_loop
  204. Int_Fin:
  205. POP EBP
  206. RET
  207. _ITOA2:;
  208. PUSH EBP
  209. MOV EBP,ESP
  210. INC EBP
  211. mov EDX,EBP;
  212. add EDX,2; // Interger
  213. mov EAX,#EDX;
  214. Mov ESI,#EAX
  215. AsciiNize2:
  216. FINT ESI
  217. cmp ESI,0;cl _NEG
  218. mov EAX,Ascii_Fin
  219. mov EDX,10000000 // if you want less digits, remove zeros from this number
  220. mov EBX,ESI
  221. mov ECX,0
  222. fint EBX
  223. div EBX,EDX
  224. div EDX,10
  225. fint EBX
  226. mov ECX,EBX
  227. mul ECX,EDX
  228. add EBX,48
  229. mov #EAX,EBX
  230. inc EAX
  231. jmp Int_loop
  232. Int_loop2:
  233. mov EBX,ESI
  234. div EBX,EDX
  235. fint EBX
  236. push EBX
  237. sub EBX,ECX
  238. pop ECX
  239. mul ECX,10
  240. add EBX,48
  241. mov #EAX,EBX // Write to DB
  242. inc EAX
  243. div EDX,10
  244. cmp EDX,0.1
  245. je Int_Fin
  246. jmp Int_loop2
  247. _NEG:
  248. NEG ESI
  249. Ret
  250. POP EBP
  251. RET
  252. _Freq:;
  253. PUSH EBP
  254. MOV EBP,ESP
  255. INC EBP
  256. mov EDX,EBP;
  257. add EDX,2; // Number
  258. mov EAX,#EDX;
  259. Out 0,EAX // 0 = Frequency Port
  260. POP EBP
  261. RET
  262. CODE;
  263. _Initialize:;
  264. PUSH EBP
  265. MOV EBP,ESP
  266. INC EBP
  267. MOV EAX,1000
  268. PUSH EAX
  269. MOV ECX,1
  270. CALL _Freq
  271. ADD ESP,1
  272. XOR ECX,ECX
  273. CALL _ClrScr
  274. MOV EAX,_13
  275. //opt. add eax,0
  276. PUSH EAX
  277. XOR EAX,EAX
  278. PUSH EAX
  279. XOR EAX,EAX
  280. PUSH EAX
  281. MOV EAX,999
  282. PUSH EAX
  283. MOV ECX,4
  284. CALL _Print
  285. ADD ESP,4
  286. Mov ES,65536
  287. MOV EAX,20000
  288. PUSH EAX
  289. MOV ECX,1
  290. CALL _Freq
  291. ADD ESP,1
  292. MOV EAX,_13
  293. ADD EAX,21
  294. PUSH EAX
  295. XOR EAX,EAX
  296. PUSH EAX
  297. MOV EAX,1
  298. PUSH EAX
  299. MOV EAX,999
  300. PUSH EAX
  301. MOV ECX,4
  302. CALL _Print
  303. ADD ESP,4
  304. MOV EAX,_13
  305. ADD EAX,48
  306. PUSH EAX
  307. XOR EAX,EAX
  308. PUSH EAX
  309. MOV EAX,2
  310. PUSH EAX
  311. MOV EAX,999
  312. PUSH EAX
  313. MOV ECX,4
  314. CALL _Print
  315. ADD ESP,4
  316. MOV EAX,2048
  317. PUSH EAX
  318. MOV ECX,1
  319. CALL _Ram_sz
  320. ADD ESP,1
  321. MOV EAX,_Ram_Size
  322. PUSH EAX
  323. MOV ECX,1
  324. CALL _ITOA2
  325. ADD ESP,1
  326. MOV EAX,_13
  327. ADD EAX,63
  328. PUSH EAX
  329. XOR EAX,EAX
  330. PUSH EAX
  331. MOV EAX,3
  332. PUSH EAX
  333. MOV EAX,999
  334. PUSH EAX
  335. MOV ECX,4
  336. CALL _Print
  337. ADD ESP,4
  338. XOR EAX,EAX
  339. PUSH EAX
  340. MOV EAX,4
  341. PUSH EAX
  342. MOV EAX,999
  343. PUSH EAX
  344. MOV ECX,3
  345. CALL _PITOA
  346. ADD ESP,3
  347. MOV EAX,1000
  348. PUSH EAX
  349. MOV ECX,1
  350. CALL _Freq
  351. ADD ESP,1
  352. Cmp #_Ram_Size,0;Je _NMRam
  353. //Cmp #_Ram_Size,12288;Jl _LRRam
  354. Pop EBP
  355. Jmp _Check_Loop
  356. POP EBP
  357. RET
  358. _13:; DB 73,110,105,116,105,97,108,105,122,105
  359. DB 110,103,32,75,77,65,67,112,117,46
  360. DB 0,83,101,116,116,105,110,103,32,117
  361. DB 112,32,67,95,83,116,121,108,101,32
  362. DB 67,97,108,108,105,110,103,0,67,104
  363. DB 101,99,107,105,110,103,32,82,97,109
  364. DB 46,46,0,82,97,109,32,83,105,122
  365. DB 101,58,0
  366. Alloc Key
  367. _Check_Loop:;
  368. PUSH EBP
  369. MOV EBP,ESP
  370. INC EBP
  371. XOR ECX,ECX
  372. CALL _GetAngle
  373. XOR ECX,ECX
  374. CALL _SaveAngle
  375. XOR ECX,ECX
  376. CALL _CheckAngle
  377. MOV EAX,20000
  378. PUSH EAX
  379. MOV ECX,1
  380. CALL _Freq
  381. ADD ESP,1
  382. XOR ECX,ECX
  383. CALL _Opcode_Details
  384. MOV EAX,1000
  385. PUSH EAX
  386. MOV ECX,1
  387. CALL _Freq
  388. ADD ESP,1
  389. In #Key,3
  390. Cmp #Key,1
  391. Ce _DecodeOpcode
  392. MOV EAX,1000
  393. PUSH EAX
  394. MOV ECX,1
  395. CALL _Freq
  396. ADD ESP,1
  397. POP EBP
  398. Jmp _Check_Loop
  399. POP EBP
  400. RET
  401. _LRMode:;
  402. PUSH EBP
  403. MOV EBP,ESP
  404. INC EBP
  405. XOR ECX,ECX
  406. CALL _ClrScr
  407. MOV EAX,_15
  408. //opt. add eax,0
  409. PUSH EAX
  410. XOR EAX,EAX
  411. PUSH EAX
  412. XOR EAX,EAX
  413. PUSH EAX
  414. MOV EAX,999
  415. PUSH EAX
  416. MOV ECX,4
  417. CALL _Print
  418. ADD ESP,4
  419. MOV EAX,_15
  420. ADD EAX,26
  421. PUSH EAX
  422. XOR EAX,EAX
  423. PUSH EAX
  424. MOV EAX,1
  425. PUSH EAX
  426. MOV EAX,999
  427. PUSH EAX
  428. MOV ECX,4
  429. CALL _Print
  430. ADD ESP,4
  431. XOR ECX,ECX
  432. CALL _End
  433. POP EBP
  434. RET
  435. _15:; DB 71,111,105,110,103,32,105,110,116,111
  436. DB 32,83,109,97,108,108,32,82,97,109
  437. DB 32,77,111,100,101,0,85,115,105,110
  438. DB 103,32,69,120,116,114,97,32,73,110
  439. DB 116,101,114,110,97,108,32,82,97,109
  440. DB 0
  441. _NMRam:;
  442. PUSH EBP
  443. MOV EBP,ESP
  444. INC EBP
  445. XOR ECX,ECX
  446. CALL _ClrScr
  447. MOV EAX,_16
  448. //opt. add eax,0
  449. PUSH EAX
  450. XOR EAX,EAX
  451. PUSH EAX
  452. XOR EAX,EAX
  453. PUSH EAX
  454. MOV EAX,999
  455. PUSH EAX
  456. MOV ECX,4
  457. CALL _Print
  458. ADD ESP,4
  459. MOV EAX,_16
  460. ADD EAX,15
  461. PUSH EAX
  462. XOR EAX,EAX
  463. PUSH EAX
  464. MOV EAX,1
  465. PUSH EAX
  466. MOV EAX,999
  467. PUSH EAX
  468. MOV ECX,4
  469. CALL _Print
  470. ADD ESP,4
  471. XOR EAX,EAX
  472. PUSH EAX
  473. MOV EAX,2
  474. PUSH EAX
  475. MOV EAX,999
  476. PUSH EAX
  477. MOV ECX,3
  478. CALL _PITOA
  479. ADD ESP,3
  480. MOV EAX,_16
  481. ADD EAX,25
  482. PUSH EAX
  483. XOR EAX,EAX
  484. PUSH EAX
  485. MOV EAX,3
  486. PUSH EAX
  487. MOV EAX,999
  488. PUSH EAX
  489. MOV ECX,4
  490. CALL _Print
  491. ADD ESP,4
  492. MOV EAX,_16
  493. ADD EAX,35
  494. PUSH EAX
  495. XOR EAX,EAX
  496. PUSH EAX
  497. MOV EAX,4
  498. PUSH EAX
  499. MOV EAX,999
  500. PUSH EAX
  501. MOV ECX,4
  502. CALL _Print
  503. ADD ESP,4
  504. XOR ECX,ECX
  505. CALL _End
  506. POP EBP
  507. RET
  508. _16:; DB 78,101,101,100,32,77,111,114,101,32
  509. DB 82,97,109,33,0,89,111,117,114,32
  510. DB 82,97,109,58,0,82,101,113,117,105
  511. DB 114,101,100,58,0,48,48,48,49,50
  512. DB 50,56,56,0
  513. _DecodeOpcode:;
  514. PUSH EBP
  515. MOV EBP,ESP
  516. INC EBP
  517. Cmp #Opcode,0;Ce _Help
  518. Cmp #Opcode,1;Ce _Credits
  519. Cmp #Opcode,2;Ce _Info
  520. Cmp #Opcode,3;Ce _Joystick_Debug
  521. POP EBP
  522. RET
  523. _Help:;
  524. PUSH EBP
  525. MOV EBP,ESP
  526. INC EBP
  527. XOR ECX,ECX
  528. CALL _ClrScr
  529. MOV EAX,_18
  530. //opt. add eax,0
  531. PUSH EAX
  532. XOR EAX,EAX
  533. PUSH EAX
  534. XOR EAX,EAX
  535. PUSH EAX
  536. MOV EAX,999
  537. PUSH EAX
  538. MOV ECX,4
  539. CALL _Print
  540. ADD ESP,4
  541. MOV EAX,_18
  542. ADD EAX,30
  543. PUSH EAX
  544. XOR EAX,EAX
  545. PUSH EAX
  546. MOV EAX,2
  547. PUSH EAX
  548. MOV EAX,999
  549. PUSH EAX
  550. MOV ECX,4
  551. CALL _Print
  552. ADD ESP,4
  553. MOV EAX,_18
  554. ADD EAX,81
  555. PUSH EAX
  556. XOR EAX,EAX
  557. PUSH EAX
  558. MOV EAX,4
  559. PUSH EAX
  560. MOV EAX,999
  561. PUSH EAX
  562. MOV ECX,4
  563. CALL _Print
  564. ADD ESP,4
  565. POP EBP
  566. RET
  567. _18:; DB 85,115,101,32,74,111,121,115,116,105
  568. DB 99,107,32,116,111,32,99,104,111,111
  569. DB 115,101,32,97,32,80,97,103,101,0
  570. DB 73,116,32,115,104,111,119,115,32,119
  571. DB 104,97,116,32,105,115,32,111,110,32
  572. DB 116,104,101,32,80,97,103,101,32,119
  573. DB 104,101,110,32,121,111,117,32,115,101
  574. DB 108,101,99,116,32,116,104,101,109,33
  575. DB 0,65,110,121,32,66,117,103,47,80
  576. DB 114,111,98,108,101,109,115,32,84,101
  577. DB 108,108,32,82,101,100,83,107,117,115
  578. DB 107,121,47,82,104,50,54,33,0
  579. _Credits:;
  580. PUSH EBP
  581. MOV EBP,ESP
  582. INC EBP
  583. XOR ECX,ECX
  584. CALL _ClrScr
  585. MOV EAX,_19
  586. //opt. add eax,0
  587. PUSH EAX
  588. XOR EAX,EAX
  589. PUSH EAX
  590. XOR EAX,EAX
  591. PUSH EAX
  592. MOV EAX,999
  593. PUSH EAX
  594. MOV ECX,4
  595. CALL _Print
  596. ADD ESP,4
  597. MOV EAX,_19
  598. ADD EAX,14
  599. PUSH EAX
  600. XOR EAX,EAX
  601. PUSH EAX
  602. MOV EAX,1
  603. PUSH EAX
  604. MOV EAX,999
  605. PUSH EAX
  606. MOV ECX,4
  607. CALL _Print
  608. ADD ESP,4
  609. MOV EAX,_19
  610. ADD EAX,32
  611. PUSH EAX
  612. XOR EAX,EAX
  613. PUSH EAX
  614. MOV EAX,2
  615. PUSH EAX
  616. MOV EAX,999
  617. PUSH EAX
  618. MOV ECX,4
  619. CALL _Print
  620. ADD ESP,4
  621. MOV EAX,_19
  622. ADD EAX,49
  623. PUSH EAX
  624. XOR EAX,EAX
  625. PUSH EAX
  626. MOV EAX,3
  627. PUSH EAX
  628. MOV EAX,999
  629. PUSH EAX
  630. MOV ECX,4
  631. CALL _Print
  632. ADD ESP,4
  633. MOV EAX,_19
  634. ADD EAX,71
  635. PUSH EAX
  636. XOR EAX,EAX
  637. PUSH EAX
  638. MOV EAX,4
  639. PUSH EAX
  640. MOV EAX,999
  641. PUSH EAX
  642. MOV ECX,4
  643. CALL _Print
  644. ADD ESP,4
  645. MOV EAX,_19
  646. ADD EAX,80
  647. PUSH EAX
  648. XOR EAX,EAX
  649. PUSH EAX
  650. MOV EAX,5
  651. PUSH EAX
  652. MOV EAX,999
  653. PUSH EAX
  654. MOV ECX,4
  655. CALL _Print
  656. ADD ESP,4
  657. MOV EAX,_19
  658. ADD EAX,97
  659. PUSH EAX
  660. XOR EAX,EAX
  661. PUSH EAX
  662. MOV EAX,6
  663. PUSH EAX
  664. MOV EAX,999
  665. PUSH EAX
  666. MOV ECX,4
  667. CALL _Print
  668. ADD ESP,4
  669. MOV EAX,_19
  670. ADD EAX,114
  671. PUSH EAX
  672. XOR EAX,EAX
  673. PUSH EAX
  674. MOV EAX,7
  675. PUSH EAX
  676. MOV EAX,999
  677. PUSH EAX
  678. MOV ECX,4
  679. CALL _Print
  680. ADD ESP,4
  681. MOV EAX,_19
  682. ADD EAX,131
  683. PUSH EAX
  684. XOR EAX,EAX
  685. PUSH EAX
  686. MOV EAX,8
  687. PUSH EAX
  688. MOV EAX,999
  689. PUSH EAX
  690. MOV ECX,4
  691. CALL _Print
  692. ADD ESP,4
  693. MOV EAX,_19
  694. ADD EAX,158
  695. PUSH EAX
  696. XOR EAX,EAX
  697. PUSH EAX
  698. MOV EAX,9
  699. PUSH EAX
  700. MOV EAX,999
  701. PUSH EAX
  702. MOV ECX,4
  703. CALL _Print
  704. ADD ESP,4
  705. MOV EAX,_19
  706. ADD EAX,179
  707. PUSH EAX
  708. XOR EAX,EAX
  709. PUSH EAX
  710. MOV EAX,10
  711. PUSH EAX
  712. MOV EAX,999
  713. PUSH EAX
  714. MOV ECX,4
  715. CALL _Print
  716. ADD ESP,4
  717. POP EBP
  718. RET
  719. _19:; DB 83,101,114,118,101,114,32,72,111,115
  720. DB 116,115,58,0,67,101,100,58,32,83
  721. DB 99,104,119,101,101,116,66,117,105,108
  722. DB 100,0,75,77,65,58,32,77,79,65
  723. DB 82,32,83,101,114,118,101,114,0,79
  724. DB 118,101,114,118,58,32,78,65,32,84
  725. DB 101,115,116,32,83,101,114,118,101,114
  726. DB 0,84,104,105,115,32,79,83,58,0
  727. DB 67,32,76,73,66,58,32,82,101,100
  728. DB 83,107,117,115,107,121,0,67,111,100
  729. DB 101,100,58,32,82,101,100,83,107,117
  730. DB 115,107,121,0,66,117,105,108,116,58
  731. DB 32,82,101,100,83,107,117,115,107,121
  732. DB 0,67,80,85,32,67,114,101,97,116
  733. DB 111,114,58,32,66,108,97,99,107,32
  734. DB 80,104,111,101,110,105,120,0,73,100
  735. DB 101,97,115,58,32,66,108,97,99,107
  736. DB 32,80,104,111,101,110,105,120,0,70
  737. DB 117,110,71,117,121,58,32,124,71,67
  738. DB 87,68,124,32,74,111,110,110,121,0
  739. _Info:;
  740. PUSH EBP
  741. MOV EBP,ESP
  742. INC EBP
  743. XOR ECX,ECX
  744. CALL _ClrScr
  745. MOV EAX,_20
  746. //opt. add eax,0
  747. PUSH EAX
  748. XOR EAX,EAX
  749. PUSH EAX
  750. XOR EAX,EAX
  751. PUSH EAX
  752. MOV EAX,999
  753. PUSH EAX
  754. MOV ECX,4
  755. CALL _Print
  756. ADD ESP,4
  757. MOV EAX,_20
  758. ADD EAX,14
  759. PUSH EAX
  760. XOR EAX,EAX
  761. PUSH EAX
  762. MOV EAX,1
  763. PUSH EAX
  764. MOV EAX,999
  765. PUSH EAX
  766. MOV ECX,4
  767. CALL _Print
  768. ADD ESP,4
  769. MOV EAX,_20
  770. ADD EAX,26
  771. PUSH EAX
  772. XOR EAX,EAX
  773. PUSH EAX
  774. MOV EAX,2
  775. PUSH EAX
  776. MOV EAX,999
  777. PUSH EAX
  778. MOV ECX,4
  779. CALL _Print
  780. ADD ESP,4
  781. MOV EAX,_20
  782. ADD EAX,39
  783. PUSH EAX
  784. XOR EAX,EAX
  785. PUSH EAX
  786. MOV EAX,3
  787. PUSH EAX
  788. MOV EAX,999
  789. PUSH EAX
  790. MOV ECX,4
  791. CALL _Print
  792. ADD ESP,4
  793. MOV EAX,_Ram_Size
  794. PUSH EAX
  795. MOV ECX,1
  796. CALL _ITOA2
  797. ADD ESP,1
  798. MOV EAX,5
  799. PUSH EAX
  800. MOV EAX,3
  801. PUSH EAX
  802. MOV EAX,999
  803. PUSH EAX
  804. MOV ECX,3
  805. CALL _PITOA
  806. ADD ESP,3
  807. POP EBP
  808. RET
  809. _20:; DB 67,32,76,105,98,32,86,101,114,58
  810. DB 32,86,49,0,67,111,110,115,111,108
  811. DB 101,58,32,86,49,0,74,111,121,83
  812. DB 116,105,99,107,58,32,86,49,0,82
  813. DB 97,109,58,0
  814. _Joystick_Debug:;
  815. PUSH EBP
  816. MOV EBP,ESP
  817. INC EBP
  818. In #Key,3
  819. Cmp #Key,1
  820. Je Joy_Ret
  821. MOV EAX,20000
  822. PUSH EAX
  823. MOV ECX,1
  824. CALL _Freq
  825. ADD ESP,1
  826. XOR ECX,ECX
  827. CALL _GetAngle
  828. XOR ECX,ECX
  829. CALL _SaveAngle
  830. XOR ECX,ECX
  831. CALL _CheckAngle
  832. MOV EAX,_21
  833. //opt. add eax,0
  834. PUSH EAX
  835. XOR EAX,EAX
  836. PUSH EAX
  837. MOV EAX,5
  838. PUSH EAX
  839. MOV EAX,999
  840. PUSH EAX
  841. MOV ECX,4
  842. CALL _Print
  843. ADD ESP,4
  844. MOV EAX,20000
  845. PUSH EAX
  846. MOV ECX,1
  847. CALL _Freq
  848. ADD ESP,1
  849. MOV EAX,_JP
  850. PUSH EAX
  851. MOV ECX,1
  852. CALL _ITOA2
  853. ADD ESP,1
  854. XOR EAX,EAX
  855. PUSH EAX
  856. MOV EAX,6
  857. PUSH EAX
  858. MOV EAX,999
  859. PUSH EAX
  860. MOV ECX,3
  861. CALL _PITOA
  862. ADD ESP,3
  863. MOV EAX,_JY
  864. PUSH EAX
  865. MOV ECX,1
  866. CALL _ITOA2
  867. ADD ESP,1
  868. XOR EAX,EAX
  869. PUSH EAX
  870. MOV EAX,7
  871. PUSH EAX
  872. MOV EAX,999
  873. PUSH EAX
  874. MOV ECX,3
  875. CALL _PITOA
  876. ADD ESP,3
  877. MOV EAX,_JR
  878. PUSH EAX
  879. MOV ECX,1
  880. CALL _ITOA2
  881. ADD ESP,1
  882. XOR EAX,EAX
  883. PUSH EAX
  884. MOV EAX,8
  885. PUSH EAX
  886. MOV EAX,999
  887. PUSH EAX
  888. MOV ECX,3
  889. CALL _PITOA
  890. ADD ESP,3
  891. Jmp _Joystick_Debug
  892. Joy_Ret:
  893. MOV EAX,1000
  894. PUSH EAX
  895. MOV ECX,1
  896. CALL _Freq
  897. ADD ESP,1
  898. POP EBP
  899. RET
  900. _21:; DB 74,111,121,115,116,105,99,107,32,65
  901. DB 110,103,108,101,115,0
  902. _Opcode_0:;
  903. PUSH EBP
  904. MOV EBP,ESP
  905. INC EBP
  906. Cmp #Opcode,#_Temp
  907. Je Check_End
  908. XOR ECX,ECX
  909. CALL _ClrScr
  910. MOV EAX,_22
  911. //opt. add eax,0
  912. PUSH EAX
  913. XOR EAX,EAX
  914. PUSH EAX
  915. MOV EAX,9
  916. PUSH EAX
  917. MOV EAX,999
  918. PUSH EAX
  919. MOV ECX,4
  920. CALL _Print
  921. ADD ESP,4
  922. MOV EAX,_22
  923. ADD EAX,12
  924. PUSH EAX
  925. XOR EAX,EAX
  926. PUSH EAX
  927. MOV EAX,17
  928. PUSH EAX
  929. MOV EAX,999
  930. PUSH EAX
  931. MOV ECX,4
  932. CALL _Print
  933. ADD ESP,4
  934. Mov #_Temp,0
  935. POP EBP
  936. RET
  937. _22:; DB 72,101,108,112,32,80,97,103,101,46
  938. DB 46,0,67,114,101,100,105,116,32,80
  939. DB 97,103,101,0
  940. _Opcode_1:;
  941. PUSH EBP
  942. MOV EBP,ESP
  943. INC EBP
  944. Cmp #Opcode,#_Temp
  945. Je Check_End
  946. XOR ECX,ECX
  947. CALL _ClrScr
  948. MOV EAX,_23
  949. //opt. add eax,0
  950. PUSH EAX
  951. XOR EAX,EAX
  952. PUSH EAX
  953. XOR EAX,EAX
  954. PUSH EAX
  955. MOV EAX,999
  956. PUSH EAX
  957. MOV ECX,4
  958. CALL _Print
  959. ADD ESP,4
  960. MOV EAX,_23
  961. ADD EAX,12
  962. PUSH EAX
  963. XOR EAX,EAX
  964. PUSH EAX
  965. MOV EAX,9
  966. PUSH EAX
  967. MOV EAX,999
  968. PUSH EAX
  969. MOV ECX,4
  970. CALL _Print
  971. ADD ESP,4
  972. MOV EAX,_23
  973. ADD EAX,26
  974. PUSH EAX
  975. XOR EAX,EAX
  976. PUSH EAX
  977. MOV EAX,17
  978. PUSH EAX
  979. MOV EAX,999
  980. PUSH EAX
  981. MOV ECX,4
  982. CALL _Print
  983. ADD ESP,4
  984. Mov #_Temp,1
  985. POP EBP
  986. RET
  987. _23:; DB 73,110,102,111,32,80,97,103,101,46
  988. DB 46,0,67,114,101,100,105,116,32,80
  989. DB 97,103,101,46,46,0,72,101,108,112
  990. DB 32,80,97,103,101,0
  991. _Opcode_2:;
  992. PUSH EBP
  993. MOV EBP,ESP
  994. INC EBP
  995. Cmp #Opcode,#_Temp
  996. Je Check_End
  997. XOR ECX,ECX
  998. CALL _ClrScr
  999. MOV EAX,_24
  1000. //opt. add eax,0
  1001. PUSH EAX
  1002. XOR EAX,EAX
  1003. PUSH EAX
  1004. XOR EAX,EAX
  1005. PUSH EAX
  1006. MOV EAX,999
  1007. PUSH EAX
  1008. MOV ECX,4
  1009. CALL _Print
  1010. ADD ESP,4
  1011. MOV EAX,_24
  1012. ADD EAX,12
  1013. PUSH EAX
  1014. XOR EAX,EAX
  1015. PUSH EAX
  1016. MOV EAX,9
  1017. PUSH EAX
  1018. MOV EAX,999
  1019. PUSH EAX
  1020. MOV ECX,4
  1021. CALL _Print
  1022. ADD ESP,4
  1023. MOV EAX,_24
  1024. ADD EAX,24
  1025. PUSH EAX
  1026. XOR EAX,EAX
  1027. PUSH EAX
  1028. MOV EAX,17
  1029. PUSH EAX
  1030. MOV EAX,999
  1031. PUSH EAX
  1032. MOV ECX,4
  1033. CALL _Print
  1034. ADD ESP,4
  1035. Mov #_Temp,2
  1036. POP EBP
  1037. RET
  1038. _24:; DB 67,114,101,100,105,116,32,80,97,103
  1039. DB 101,0,73,110,102,111,32,80,97,103
  1040. DB 101,46,46,0,74,111,121,115,116,105
  1041. DB 99,107,32,68,101,98,117,103,0
  1042. _Opcode_3:;
  1043. PUSH EBP
  1044. MOV EBP,ESP
  1045. INC EBP
  1046. Cmp #Opcode,#_Temp
  1047. Je Check_End
  1048. XOR ECX,ECX
  1049. CALL _ClrScr
  1050. MOV EAX,_25
  1051. //opt. add eax,0
  1052. PUSH EAX
  1053. XOR EAX,EAX
  1054. PUSH EAX
  1055. XOR EAX,EAX
  1056. PUSH EAX
  1057. MOV EAX,999
  1058. PUSH EAX
  1059. MOV ECX,4
  1060. CALL _Print
  1061. ADD ESP,4
  1062. MOV EAX,_25
  1063. ADD EAX,10
  1064. PUSH EAX
  1065. XOR EAX,EAX
  1066. PUSH EAX
  1067. MOV EAX,9
  1068. PUSH EAX
  1069. MOV EAX,999
  1070. PUSH EAX
  1071. MOV ECX,4
  1072. CALL _Print
  1073. ADD ESP,4
  1074. Mov #_Temp,3
  1075. POP EBP
  1076. RET
  1077. _25:; DB 73,110,102,111,32,80,97,103,101,0
  1078. DB 74,111,121,115,116,105,99,107,32,68
  1079. DB 101,98,117,103,32,40,66,117,103,103
  1080. DB 121,41,0
  1081.