From 0e48270ff68ef4a4f27f96c10e980615cf5c6ed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Carlos=20Cuevas?= Date: Sun, 7 Jun 2020 19:24:20 +0200 Subject: [PATCH] Initial code for peeking the map --- REAME.md | 13 ++++++++ mine.asm | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 REAME.md diff --git a/REAME.md b/REAME.md new file mode 100644 index 0000000..4f73f2b --- /dev/null +++ b/REAME.md @@ -0,0 +1,13 @@ +Minesweeper in Assembly +======================= + +Hello, this is my attempt to build an x86 assembly Minesweeper for DOS, +in plain 16 bits glory and learning to use mode 13h. + +Compile +======= + +This project has been built using flat assembler and has a Makefile handy +to make it easy to be compiled, just do `make` and it'll be built as an +`.exe` for you to run either on your VM, your old DOS machine or as I do, +running it inside (DOSBox)[https://www.dosbox.com/] diff --git a/mine.asm b/mine.asm index 5848ec1..ec818f8 100644 --- a/mine.asm +++ b/mine.asm @@ -151,12 +151,35 @@ putmine: inc byte [minecount] mov word [ds:bx], 00009h ;Place mine jmp continuecreateminefield + +;This routine returns in DX the value of the cell pointed by CX (Y coord) and +;AX (X coord) +;Mangles AX, BX, CX and DX +peektable: + mov dx, 0 ;In case we return prematurely, we return nothing + cmp ax, COLUMNS ;If we are out of bounds, return + jge peekend + cmp cx, LINES + jge peekend + push ax ;Calculate offset + mov ax, cx + mov cx, COLUMNS + mul cx + mov bx, map + add bx, ax + pop ax + add bx, ax + mov dx, word [ds:bx] ;Read +peekend: + ret ;This routine checks the map and puts numbers down given the -;amount of +;amount of mines around ;calculateminenumbers: -; mov bx, [map] +; mov bx, map ; mov dx, 00h + + mainloop: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -296,3 +319,75 @@ flagbmp: db 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh db 0fh, 17h, 17h, 17h, 10h, 17h, 17h, 14h db 0fh, 17h, 10h, 10h, 10h, 10h, 10h, 14h db 14h, 14h, 14h, 14h, 14h, 14h, 14h, 14h + +numone: db 14h, 14h, 14h, 14h, 14h, 14h, 14h, 14h + db 14h, 17h, 17h, 17h, 01h, 17h, 17h, 0fh + db 14h, 17h, 17h, 01h, 01h, 17h, 17h, 0fh + db 14h, 17h, 01h, 17h, 01h, 17h, 17h, 0fh + db 14h, 17h, 17h, 17h, 01h, 17h, 17h, 0fh + db 14h, 17h, 17h, 17h, 01h, 17h, 17h, 0fh + db 14h, 17h, 01h, 01h, 01h, 01h, 01h, 0fh + db 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh + +numtwo: db 14h, 14h, 14h, 14h, 14h, 14h, 14h, 14h + db 14h, 17h, 17h, 02h, 02h, 02h, 17h, 0fh + db 14h, 17h, 02h, 17h, 17h, 17h, 02h, 0fh + db 14h, 17h, 17h, 17h, 17h, 17h, 02h, 0fh + db 14h, 17h, 17h, 02h, 02h, 02h, 17h, 0fh + db 14h, 17h, 02h, 17h, 17h, 17h, 17h, 0fh + db 14h, 17h, 02h, 02h, 02h, 02h, 02h, 0fh + db 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh + +numthree: db 14h, 14h, 14h, 14h, 14h, 14h, 14h, 14h + db 14h, 17h, 17h, 04h, 04h, 04h, 17h, 0fh + db 14h, 17h, 04h, 17h, 17h, 17h, 04h, 0fh + db 14h, 17h, 17h, 17h, 17h, 17h, 04h, 0fh + db 14h, 17h, 17h, 17h, 04h, 04h, 17h, 0fh + db 14h, 17h, 04h, 17h, 17h, 17h, 04h, 0fh + db 14h, 17h, 17h, 04h, 04h, 04h, 17h, 0fh + db 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh + +numfour: db 14h, 14h, 14h, 14h, 14h, 14h, 14h, 14h + db 14h, 17h, 17h, 17h, 05h, 05h, 17h, 0fh + db 14h, 17h, 17h, 05h, 17h, 05h, 17h, 0fh + db 14h, 17h, 05h, 17h, 17h, 05h, 17h, 0fh + db 14h, 17h, 05h, 05h, 05h, 05h, 05h, 0fh + db 14h, 17h, 17h, 17h, 17h, 05h, 17h, 0fh + db 14h, 17h, 17h, 17h, 05h, 05h, 05h, 0fh + db 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh + +numfive: db 14h, 14h, 14h, 14h, 14h, 14h, 14h, 14h + db 14h, 17h, 06h, 06h, 06h, 06h, 06h, 0fh + db 14h, 17h, 06h, 17h, 17h, 17h, 17h, 0fh + db 14h, 17h, 06h, 17h, 17h, 17h, 17h, 0fh + db 14h, 17h, 17h, 06h, 06h, 06h, 17h, 0fh + db 14h, 17h, 17h, 17h, 17h, 17h, 06h, 0fh + db 14h, 17h, 06h, 06h, 06h, 06h, 17h, 0fh + db 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh + +numsix: db 14h, 14h, 14h, 14h, 14h, 14h, 14h, 14h + db 14h, 17h, 17h, 17h, 2bh, 2bh, 17h, 0fh + db 14h, 17h, 17h, 2bh, 17h, 17h, 17h, 0fh + db 14h, 17h, 2bh, 17h, 17h, 17h, 17h, 0fh + db 14h, 17h, 2bh, 2bh, 2bh, 2bh, 17h, 0fh + db 14h, 17h, 2bh, 17h, 17h, 17h, 2bh, 0fh + db 14h, 17h, 17h, 2bh, 2bh, 2bh, 17h, 0fh + db 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh + +numseven: db 14h, 14h, 14h, 14h, 14h, 14h, 14h, 14h + db 14h, 17h, 35h, 35h, 35h, 35h, 35h, 0fh + db 14h, 17h, 17h, 17h, 17h, 17h, 35h, 0fh + db 14h, 17h, 17h, 17h, 17h, 35h, 17h, 0fh + db 14h, 17h, 17h, 17h, 35h, 17h, 17h, 0fh + db 14h, 17h, 17h, 17h, 35h, 17h, 17h, 0fh + db 14h, 17h, 17h, 17h, 35h, 17h, 17h, 0fh + db 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh + +numeight: db 14h, 14h, 14h, 14h, 14h, 14h, 14h, 14h + db 14h, 17h, 17h, 40h, 40h, 40h, 17h, 0fh + db 14h, 17h, 40h, 17h, 17h, 17h, 40h, 0fh + db 14h, 17h, 17h, 40h, 40h, 40h, 17h, 0fh + db 14h, 17h, 40h, 17h, 17h, 17h, 40h, 0fh + db 14h, 17h, 40h, 17h, 17h, 17h, 40h, 0fh + db 14h, 17h, 17h, 40h, 40h, 40h, 17h, 0fh + db 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh, 0fh