Advertisement
itamarreif

December Project rev 0.8.2

Dec 21st, 2014
752
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.94 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, 3h
  119. int 33h
  120. mov mouseClick, bx
  121. mov mouseX, cx
  122. mov mouseY, dx
  123. call checkMClick
  124. cmp mousePos, 1h
  125. je goodMPos
  126. jne badMPos
  127.  
  128. goodMPos:
  129.  
  130. call firstLevel
  131. call newMazePos
  132. call output
  133.  
  134. posChange:
  135.  
  136. call invisInput
  137. cmp posInput, '1'
  138. je posChangeSW
  139. cmp posInput, '2'
  140. je posChangeS
  141. cmp posInput, '3'
  142. je posChangeSE
  143. cmp posInput, '4'
  144. je posChangeW
  145. cmp posInput, '6'
  146. je posChangeE
  147. cmp posInput, '7'
  148. je posChangeNW
  149. cmp posInput, '8'
  150. je posChangeN
  151. cmp posInput, '9'
  152. je posChangeNE
  153.  
  154.  
  155.  
  156. mov ax, 4c00h ; exit to operating system.
  157. int 21h
  158.  
  159. invisInput: mov ah, 7
  160. int 21h
  161. mov posInput, al
  162. ret
  163.  
  164. output: mov dl, character
  165. mov ah, 2
  166. int 21h
  167. ret
  168.  
  169. ;---------------------------------------;
  170.  
  171. checkMClick: cmp mouseclick, 1h
  172. je checkMouseX
  173. jne mouse
  174.  
  175. checkMouseX: cmp mouseX, 7h
  176. jae afterStartX
  177. jb mouse
  178.  
  179. afterStartX: cmp mouseX, 23h
  180. jbe goodXPos
  181. ja badMPos
  182.  
  183. goodXPos: mov mousePos, 1h
  184. jmp checkMouseY
  185.  
  186. checkMouseY: cmp mouseY, 7h
  187. jae afterStartY
  188. jb mouse
  189.  
  190. afterStartY: cmp mouseY, 11h
  191. jae goodYPos
  192. jb badMPos
  193.  
  194. goodYPos: mov mousePos, 1h
  195. ret
  196.  
  197. badMPos: mov mousePos, 0h
  198. jmp mouse
  199.  
  200. ;---------------------------------------;
  201.  
  202. checkPos: mov dl, xCheck
  203. mov dh, yCheck
  204. mov ah, 2
  205. int 10h
  206. mov bh, 0
  207. mov al, 0
  208. mov ah, 08h
  209. int 10h
  210. mov posInfo, al
  211. cmp posInfo, ' '
  212. jne badPos
  213. ret
  214.  
  215. badPos: cmp posInfo, '*'
  216. je resetMazePos
  217.  
  218. cmp posInfo, '>'
  219. je newLevel
  220.  
  221. mov dl, x
  222. mov dh, y
  223. mov ah, 2
  224. int 10h
  225. mov xCheck, dl
  226. mov yCheck, dh
  227. call output
  228. jmp posChange
  229.  
  230. ;---------------------------------------;
  231.  
  232. firstLevel: mov al, 03h
  233. mov ah, 0
  234. int 10h
  235.  
  236. mov si, mazesIndex
  237. lea dx, mazes[si]
  238. mov ah, 9
  239. int 21h
  240. mov si, 0
  241.  
  242. ret
  243.  
  244. nextLevel: mov al, 03h
  245. mov ah, 0
  246. int 10h
  247.  
  248. inc mazeCount
  249. call whichMaze
  250.  
  251. mov si, mazesIndex
  252. lea dx, mazes[si]
  253. mov ah, 9
  254. int 21h
  255. mov si, 0
  256. ret
  257.  
  258. newLevel: call nextLevel
  259. call newMazePos
  260. call output
  261. jmp posChange
  262.  
  263. newMazePos: mov xCheck, 0
  264. mov yCheck, 1
  265. mov x, 0
  266. mov y, 1
  267. mov dl, x
  268. mov dh, y
  269. mov bh, 0
  270. mov ah, 2
  271. int 10h
  272. ret
  273.  
  274. resetMazePos:call newMazePos
  275. call output
  276. jmp posChange
  277.  
  278. ;---------------------------------------;
  279.  
  280. whichMaze: mov si, mazesIndex
  281. mov bl, mazes[si]
  282. cmp bl, '$'
  283. je endOfMaze
  284. jne nextChar
  285.  
  286. endOfMaze: inc $Count
  287. mov dx, mazeCount
  288. cmp $Count, dx
  289. je fin
  290. jne nextChar
  291.  
  292. nextChar: inc mazesIndex
  293. jmp whichMaze
  294.  
  295. fin: inc mazesIndex
  296. ;mov $Count, 0h
  297. ret
  298.  
  299. ;---------------------------------------;
  300.  
  301. resetCursor: mov dl, x
  302. mov dh, y
  303. mov ah, 2
  304. int 10h
  305. mov dl, ' '
  306. mov ah, 2
  307. int 21h
  308. ret
  309.  
  310.  
  311.  
  312. posChangeSW: call resetCursor
  313.  
  314. dec xCheck
  315. inc yCheck
  316. call checkPos
  317.  
  318. dec x
  319. inc y
  320. mov dl, x
  321. mov dh, y
  322. mov ah, 2
  323. int 10h
  324. call output
  325. jmp posChange
  326.  
  327. posChangeS: call resetCursor
  328.  
  329. inc yCheck
  330. call checkPos
  331.  
  332. inc y
  333. mov dl, x
  334. mov dh, y
  335. mov ah, 2
  336. int 10h
  337. call output
  338. jmp posChange
  339.  
  340. posChangeSE: call resetCursor
  341.  
  342. inc xCheck
  343. inc yCheck
  344. call checkPos
  345.  
  346. inc x
  347. inc y
  348. mov dl, x
  349. mov dh, y
  350. mov ah, 2
  351. int 10h
  352. call output
  353. jmp posChange
  354.  
  355. posChangeW: call resetCursor
  356.  
  357. dec xCheck
  358. call checkPos
  359.  
  360. dec x
  361. mov dl, x
  362. mov dh, y
  363. mov ah, 2
  364. int 10h
  365. call output
  366. jmp posChange
  367.  
  368. posChangeE: call resetCursor
  369.  
  370. inc xCheck
  371. call checkPos
  372.  
  373. inc x
  374. mov dl, x
  375. mov dh, y
  376. mov ah, 2
  377. int 10h
  378. call output
  379. jmp posChange
  380.  
  381. posChangeNW: call resetCursor
  382.  
  383. dec xCheck
  384. dec yCheck
  385. call checkPos
  386.  
  387. dec x
  388. dec y
  389. mov dl, x
  390. mov dh, y
  391. mov ah, 2
  392. int 10h
  393. call output
  394. jmp posChange
  395.  
  396. posChangeN: call resetCursor
  397.  
  398. dec yCheck
  399. call checkPos
  400.  
  401. dec y
  402. mov dl, x
  403. mov dh, y
  404. mov ah, 2
  405. int 10h
  406. call output
  407. jmp posChange
  408.  
  409. posChangeNE: call resetCursor
  410.  
  411. inc xCheck
  412. dec yCheck
  413. call checkPos
  414.  
  415. inc x
  416. dec y
  417. mov dl, x
  418. mov dh, y
  419. mov ah, 2
  420. int 10h
  421. call output
  422. jmp posChange
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430. ends
  431.  
  432. end start ; set entry point and stop the assembler.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement