Advertisement
itamarreif

December Project rev 0.9 working mouse

Dec 22nd, 2014
445
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.08 KB | None | 0 0
  1. ; multi-segment executable file template.
  2.  
  3. data segment
  4.  
  5. inputX db "input X: $"
  6. inputY db " input Y: $"
  7.  
  8. mazes db "---------------------------------------------|", 10, 13
  9. db " >|* |* | | | |", 10, 13
  10. db "| |------------ |--- | | | | | | | |", 10, 13
  11. db "| |* *| | | *| | | *|", 10, 13
  12. db "| |--| ---| | |-----| |------ |-----| |", 10, 13
  13. db "| | | | | | | |", 10, 13
  14. db "|---* | |-----| | | | | ------| ------|", 10, 13
  15. db "| | | |* | | |* | |", 10, 13
  16. db "| ------| ------| |--| *| |--- |--- *| |", 10, 13
  17. db "| *| *| |* | >", 10, 13
  18. db "|--------------------------------------------$",
  19.  
  20. db "----------------------------------------------", 10, 13
  21. db " |* |* | *| |", 10, 13
  22. db "| ---------------| |-----| |--| | | |* |", 10, 13
  23. db "| | | |* | | |", 10, 13
  24. db "|--| *----------* | | *------- |--| | | *|", 10, 13
  25. db "|* | |* | | | * | |", 10, 13
  26. db "| |--- | |--- | | |--------| | |--|* |", 10, 13
  27. db "| *| | *| | | *|* | |", 10, 13
  28. db "| ---| |--| |--------| | *------- | | *|", 10, 13
  29. db "| *| |* | | >", 10, 13
  30. db "---------------------------------------------$",
  31.  
  32. db "---------------------------------------------|", 10, 13
  33. db " |* | | *| |* |", 10, 13
  34. db "|* | |---* | |--| | | |--- | |-----| *|", 10, 13
  35. db "| *|* | *| | |* | *| | |", 10, 13
  36. db "|-----| | ---| | |* |--| -------* |* |* |", 10, 13
  37. db "|* *|* | | |* | |", 10, 13
  38. db "|--------| |* | | |--------------- *| *---|", 10, 13
  39. db "|* | | | |* | *|", 10, 13
  40. db "| | *| |--| *|-----| ------------------- |", 10, 13
  41. db "| | |* |* |* *| |", 10, 13
  42. db "|-----| | ------- | |--------|* |-----|* |", 10, 13
  43. db "|* | |* | *|* | *| |", 10, 13
  44. db "| |-----| | |-----| | ---------| | |--|", 10, 13
  45. db "| |* | | *|* |* *| *| |", 10, 13
  46. db "|------ *|-----| | | |------ |* |------ *|", 10, 13
  47. db "|* *| *|* |* ", 10, 13
  48. db "|--------------------------------------------|$"
  49.  
  50. victory db " _..._ .-'''-. ___ ", 10, 13
  51. db " .-'_..._''. ' _ \ .'/ \ ", 10, 13
  52. db " .----. .----..--. .' .' '.\ / /` '. \ / / \", 10, 13
  53. db " \ \ / / |__| / .' . | \ ' .-. .-| | |", 10, 13
  54. db " ' '. /' / .--.. ' .| | ' | '.-,.--.\ \ / /| | |", 10, 13
  55. db " | |' / | || | .' |_\ \ / / | .-. |\ \ / / |/`. .'", 10, 13
  56. db " | || | | || | .' |`. ` ..' / | | | | \ \ / / `.| | ", 10, 13
  57. db " '. `' .' | |. ' '--. .-' '-...-'` | | | | \ \ / / ||___| ", 10, 13
  58. db " \ / | | \ '. .| | | | '- \ ` / |/___/ ", 10, 13
  59. db " \ / |__| '. `._____.-'/| | | | \ / .'.--. ", 10, 13
  60. db " '----' `-.______ / | '.' | | / / | | |", 10, 13
  61. db " ` | / |_| |`-' / \_\ /", 10, 13
  62. db " `'-' '..' `''--' $"
  63.  
  64. titlescreen db " __ __ ", 10, 13
  65. db "| \/ | ", 10, 13
  66. db "| \ / | __ _ ____ ___ ___ ", 10, 13
  67. db "| |\/| | / _` ||_ // _ \/ __|", 10, 13
  68. db "| | | || (_| | / /| __/\__ \", 10, 13
  69. db "|_| |_| \__,_|/___|\___||___/", 10, 13
  70. db " _______________ ", 10, 13
  71. db " | | ", 10, 13
  72. db " | play | ", 10, 13
  73. db " | game | ", 10, 13
  74. db " |______________| ", 10, 13
  75. db " $"
  76.  
  77. x db 0h
  78. y db 0h
  79. xCheck db 0h
  80. yCheck db 0h
  81. posInfo db 0h
  82. posInput db 0h
  83.  
  84. mouseX dw 0h
  85. MouseY dw 0h
  86. mouseClick dw 0h
  87. mousePos dw 0h
  88.  
  89. mazesIndex dw 0h
  90. mazeCount dw 0h
  91. $Count dw 0h
  92.  
  93. character db 01h
  94.  
  95. ends
  96.  
  97. stack segment
  98. dw 128 dup(0)
  99. ends
  100.  
  101. code segment
  102. start:
  103. ; set segment registers:
  104. mov ax, data
  105. mov ds, ax
  106. mov es, ax
  107.  
  108. mov al, 03h
  109. mov ah, 0
  110. int 10h
  111.  
  112. lea dx, titlescreen
  113. mov ah, 9
  114. int 21h
  115.  
  116. mouse:
  117.  
  118. mov ax, 1h
  119. int 33h
  120.  
  121. mov ax, 3h
  122. int 33h
  123. mov mouseClick, bx
  124. mov mouseX, cx
  125. mov mouseY, dx
  126. call checkMClick
  127. cmp mousePos, 1h
  128. je goodMPos
  129. jne badMPos
  130.  
  131. goodMPos:
  132.  
  133. call firstLevel
  134. call newMazePos
  135. call output
  136.  
  137. posChange:
  138.  
  139. call invisInput
  140. cmp posInput, '1'
  141. je posChangeSW
  142. cmp posInput, '2'
  143. je posChangeS
  144. cmp posInput, '3'
  145. je posChangeSE
  146. cmp posInput, '4'
  147. je posChangeW
  148. cmp posInput, '6'
  149. je posChangeE
  150. cmp posInput, '7'
  151. je posChangeNW
  152. cmp posInput, '8'
  153. je posChangeN
  154. cmp posInput, '9'
  155. je posChangeNE
  156.  
  157. mov ax, 4c00h ; exit to operating system.
  158. int 21h
  159.  
  160. ;---------------------------------------;
  161.  
  162. invisInput: mov ah, 7
  163. int 21h
  164. mov posInput, al
  165. ret
  166.  
  167. output: mov dl, character
  168. mov ah, 2
  169. int 21h
  170. ret
  171.  
  172. ;---------------------------------------;
  173.  
  174. checkMClick: cmp mouseclick, 1h
  175. je checkMouseX
  176. jne mouse
  177.  
  178. checkMouseX: cmp mouseX, 36h
  179. jae afterStartX
  180. jb mouse
  181.  
  182. afterStartX: cmp mouseX, 0b8h
  183. jbe goodXPos
  184. ja badMPos
  185.  
  186. goodXPos: mov mousePos, 1h
  187. jmp checkMouseY
  188.  
  189. checkMouseY: cmp mouseY, 36h
  190. jae afterStartY
  191. jb mouse
  192.  
  193. afterStartY: cmp mouseY, 58h
  194. jbe goodYPos
  195. ja badMPos
  196.  
  197. goodYPos: mov mousePos, 1h
  198. ret
  199.  
  200. badMPos: mov mousePos, 0h
  201. jmp mouse
  202.  
  203. ;---------------------------------------;
  204.  
  205. checkPos: mov dl, xCheck
  206. mov dh, yCheck
  207. mov ah, 2
  208. int 10h
  209. mov bh, 0
  210. mov al, 0
  211. mov ah, 08h
  212. int 10h
  213. mov posInfo, al
  214. cmp posInfo, ' '
  215. jne badPos
  216. ret
  217.  
  218. badPos: cmp posInfo, '*'
  219. je resetMazePos
  220.  
  221. cmp posInfo, '>'
  222. je newLevel
  223.  
  224. mov dl, x
  225. mov dh, y
  226. mov ah, 2
  227. int 10h
  228. mov xCheck, dl
  229. mov yCheck, dh
  230. call output
  231. jmp posChange
  232.  
  233. ;---------------------------------------;
  234.  
  235. firstLevel: mov al, 03h
  236. mov ah, 0
  237. int 10h
  238.  
  239. mov si, mazesIndex
  240. lea dx, mazes[si]
  241. mov ah, 9
  242. int 21h
  243. mov si, 0
  244.  
  245. ret
  246.  
  247. nextLevel: mov al, 03h
  248. mov ah, 0
  249. int 10h
  250.  
  251. inc mazeCount
  252. call whichMaze
  253.  
  254. mov si, mazesIndex
  255. lea dx, mazes[si]
  256. mov ah, 9
  257. int 21h
  258. mov si, 0
  259. ret
  260.  
  261. newLevel: call nextLevel
  262. call newMazePos
  263. call output
  264. jmp posChange
  265.  
  266. newMazePos: mov xCheck, 0
  267. mov yCheck, 1
  268. mov x, 0
  269. mov y, 1
  270. mov dl, x
  271. mov dh, y
  272. mov bh, 0
  273. mov ah, 2
  274. int 10h
  275. ret
  276.  
  277. resetMazePos:call newMazePos
  278. call output
  279. jmp posChange
  280.  
  281. ;---------------------------------------;
  282.  
  283. whichMaze: mov si, mazesIndex
  284. mov bl, mazes[si]
  285. cmp bl, '$'
  286. je endOfMaze
  287. jne nextChar
  288.  
  289. endOfMaze: inc $Count
  290. mov dx, mazeCount
  291. cmp $Count, dx
  292. je fin
  293. jne nextChar
  294.  
  295. nextChar: inc mazesIndex
  296. jmp whichMaze
  297.  
  298. fin: inc mazesIndex
  299. ;mov $Count, 0h
  300. ret
  301.  
  302. ;---------------------------------------;
  303.  
  304. resetCursor: mov dl, x
  305. mov dh, y
  306. mov ah, 2
  307. int 10h
  308. mov dl, ' '
  309. mov ah, 2
  310. int 21h
  311. ret
  312.  
  313.  
  314.  
  315. posChangeSW: call resetCursor
  316.  
  317. dec xCheck
  318. inc yCheck
  319. call checkPos
  320.  
  321. dec x
  322. inc y
  323. mov dl, x
  324. mov dh, y
  325. mov ah, 2
  326. int 10h
  327. call output
  328. jmp posChange
  329.  
  330. posChangeS: call resetCursor
  331.  
  332. inc yCheck
  333. call checkPos
  334.  
  335. inc y
  336. mov dl, x
  337. mov dh, y
  338. mov ah, 2
  339. int 10h
  340. call output
  341. jmp posChange
  342.  
  343. posChangeSE: call resetCursor
  344.  
  345. inc xCheck
  346. inc yCheck
  347. call checkPos
  348.  
  349. inc x
  350. inc y
  351. mov dl, x
  352. mov dh, y
  353. mov ah, 2
  354. int 10h
  355. call output
  356. jmp posChange
  357.  
  358. posChangeW: call resetCursor
  359.  
  360. dec xCheck
  361. call checkPos
  362.  
  363. dec x
  364. mov dl, x
  365. mov dh, y
  366. mov ah, 2
  367. int 10h
  368. call output
  369. jmp posChange
  370.  
  371. posChangeE: call resetCursor
  372.  
  373. inc xCheck
  374. call checkPos
  375.  
  376. inc x
  377. mov dl, x
  378. mov dh, y
  379. mov ah, 2
  380. int 10h
  381. call output
  382. jmp posChange
  383.  
  384. posChangeNW: call resetCursor
  385.  
  386. dec xCheck
  387. dec yCheck
  388. call checkPos
  389.  
  390. dec x
  391. dec y
  392. mov dl, x
  393. mov dh, y
  394. mov ah, 2
  395. int 10h
  396. call output
  397. jmp posChange
  398.  
  399. posChangeN: call resetCursor
  400.  
  401. dec yCheck
  402. call checkPos
  403.  
  404. dec y
  405. mov dl, x
  406. mov dh, y
  407. mov ah, 2
  408. int 10h
  409. call output
  410. jmp posChange
  411.  
  412. posChangeNE: call resetCursor
  413.  
  414. inc xCheck
  415. dec yCheck
  416. call checkPos
  417.  
  418. inc x
  419. dec y
  420. mov dl, x
  421. mov dh, y
  422. mov ah, 2
  423. int 10h
  424. call output
  425. jmp posChange
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433. ends
  434.  
  435. end start ; set entry point and stop the assembler.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement