From fb90122c494b91fe39cac33595cbf3eef68fb62b Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 6 Jun 2019 01:29:01 +0200 Subject: [PATCH] added project descriptions --- Makefile | 27 +++--- beep.asm | 183 ++++++++++++++++++++++++++++++++++++++-- beep.bin | Bin 81 -> 651 bytes db | 233 +++++++++++++++++++++++++++++++++++++++++++++++++++ disk.img | Bin 737280 -> 737280 bytes food.asm | 175 ++++++++++++++++++++++++++++++++++++-- food.bin | Bin 81 -> 710 bytes light.asm | 211 ++++++++++++++++++++++++++++++++++++---------- light.bin | Bin 156 -> 643 bytes program.asm | 42 +++++----- program.bin | Bin 8192 -> 8192 bytes silence.asm | 179 +++++++++++++++++++++++++++++++++++++-- silence.bin | Bin 81 -> 640 bytes software.asm | 224 ++++++++++++++++++++++++++++++++++++++++--------- software.bin | Bin 8192 -> 655 bytes voice.asm | 179 +++++++++++++++++++++++++++++++++++++-- voice.bin | Bin 81 -> 683 bytes 17 files changed, 1304 insertions(+), 149 deletions(-) create mode 100644 db diff --git a/Makefile b/Makefile index 4746701..6aeb072 100755 --- a/Makefile +++ b/Makefile @@ -14,30 +14,29 @@ compile : image : compile sudo dd if=/dev/zero of=disk.img bs=1024 count=720 - #cat boot.bin program.bin > exe.bin sudo dd if=boot.bin of=disk.img bs=512 count=1 conv=notrunc sudo dd if=program.bin of=disk.img bs=512 seek=1 count=4 conv=notrunc - sudo dd if=software.bin of=disk.img bs=512 seek=5 count=1 conv=notrunc - sudo dd if=food.bin of=disk.img bs=512 seek=6 count=1 conv=notrunc - sudo dd if=beep.bin of=disk.img bs=512 seek=7 count=1 conv=notrunc - sudo dd if=voice.bin of=disk.img bs=512 seek=8 count=1 conv=notrunc - sudo dd if=silence.bin of=disk.img bs=512 seek=9 count=1 conv=notrunc - sudo dd if=light.bin of=disk.img bs=512 seek=10 count=1 conv=notrunc + sudo dd if=software.bin of=disk.img bs=512 seek=5 count=2 conv=notrunc + sudo dd if=food.bin of=disk.img bs=512 seek=7 count=2 conv=notrunc + sudo dd if=voice.bin of=disk.img bs=512 seek=9 count=2 conv=notrunc + sudo dd if=beep.bin of=disk.img bs=512 seek=11 count=2 conv=notrunc + sudo dd if=silence.bin of=disk.img bs=512 seek=13 count=2 conv=notrunc + sudo dd if=light.bin of=disk.img bs=512 seek=15 count=2 conv=notrunc flashusb : image sudo dd if=boot.bin of=/dev/sdb bs=512 count=1 sudo dd if=program.bin of=/dev/sdb bs=512 seek=1 count=4 - sudo dd if=software.bin of=/dev/sdb bs=512 seek=5 count=1 - sudo dd if=food.bin of=/dev/sdb bs=512 seek=6 count=1 - sudo dd if=beep.bin of=/dev/sdb bs=512 seek=7 count=1 - sudo dd if=voice.bin of=/dev/sdb bs=512 seek=8 count=1 - sudo dd if=silence.bin of=/dev/sdb bs=512 seek=9 count=1 - sudo dd if=light.bin of=/dev/sdb bs=512 seek=10 count=1 -# sudo dd if=exe.bin of=/dev/sdb bs=512 count=4 + sudo dd if=software.bin of=/dev/sdb bs=512 seek=5 count=2 + sudo dd if=food.bin of=/dev/sdb bs=512 seek=7 count=2 + sudo dd if=voice.bin of=/dev/sdb bs=512 seek=9 count=2 + sudo dd if=beep.bin of=/dev/sdb bs=512 seek=11 count=2 + sudo dd if=silence.bin of=/dev/sdb bs=512 seek=13 count=2 + sudo dd if=light.bin of=/dev/sdb bs=512 seek=15 count=2 run : image + setxkbmap -layout us -model us qemu-system-x86_64 disk.img -soundhw pcspk clean : diff --git a/beep.asm b/beep.asm index 7ceceea..7618e5b 100644 --- a/beep.asm +++ b/beep.asm @@ -1,4 +1,4 @@ -[org 0x4000] +[org 0x5000] start: mov [bootdev], dl @@ -6,7 +6,7 @@ start: xor al, al ; Clear entire screen xor cx, cx ; Upper left corner CH=row, CL=column mov dx, 184FH ; lower right corner DH=row, DL=column - mov bh, 4Fh ; YellowOnBlue + mov bh, 2Fh ; YellowOnBlue int 10H ; execute interrupt mov al, 182 ; meaning that we're about to load @@ -20,12 +20,13 @@ start: in al, 61h or al, 00000011b out 61h, al ; Send the new value +; mov bx, 200 ; Pause for duration of note. - mov al, 0 - mov ah, 86h - mov cx, 1 - mov dx, 200 - int 15h +mov al, 0 +mov ah, 86h +mov cx, 1 +mov dx, 200 +int 15h in al, 61h ; Turn off note (get value from ; port 61h). @@ -33,6 +34,164 @@ start: out 61h, al ; Send new value. + mov ah, 02h ;top bar setting the position and then write title $ + mov bh, 0h + mov dh, 0h + mov dl, 20h + int 10h + + mov si, title + call print + + + mov ah, 02h ;sets cursor to top to write + mov bh, 0h + mov dh, 17h + mov dl, 2h + int 10h + + mov si, menuexit + call print + + + +main: + mov bx, 1 + mov ah, 06h ;draw rect on background + mov cx, 060Fh + mov dx, 103Bh + mov bh, 3Fh + int 10h + push dx + push cx + mov si, description + call printinrect + pop cx + pop dx + push dx + push cx + call drawshadow + jmp waitforkey + pop cx + pop dx + + +drawshadow: + push cx + push dx + mov al, dl + mov ah, ch + inc ah + inc al + mov cx, ax + mov bl, dl + mov bh, dh + inc bl + inc bh + mov dx, bx + mov ah, 06h ;draw shadow + mov bh, 0Ch + int 10h + pop dx + pop cx + + mov al, cl + mov ah, dh + inc ah + inc al + mov cx, ax + mov bl, dl + mov bh, dh + inc bl + inc bh + mov dx, bx + mov ah, 06h ;draw shadow + mov bh, 0Ch + int 10h + + ret + + +printinrect: + mov ax, 0 + mov [writtenchars], ax + push cx + mov bx, dx + push bx + mov ah, 02h ;sets cursor to top to write + mov bh, 0h + mov dh, ch + mov dl, cl + int 10h +.loop: + mov ax, [writtenchars] + inc ax + mov [writtenchars], ax + lodsb ; load next char + mov bh, 0 + mov ah, 0x03 + int 10h ;read cursor position + push dx + pop dx + pop bx + cmp dh, bh ;comp for scroll + jg .stop + push bx + push dx + or al,al + jz .exit + mov bx, [writtenchars] + cmp bx, [scrollchars] + jg .writechar +.continue: + pop dx + pop bx + cmp dl, bl ;if caracter over width of rect + je .newline ; go to next line + push bx + jmp .loop + +.writechar: + mov ah, 0x0e + mov bh, 0x00 + mov cx, 0x01 + int 10h ;write char + jmp .continue + +.stop: + pop cx + ret +.exit: + pop dx + pop bx + pop cx + ret +.newline: + pop cx + push bx + mov dl, cl ;set column + inc dh ;increment row by one, works! + mov ah, 02h ;sets cursor + mov bh, 0h ;page number 0 constant + int 10h + pop bx + push cx + push bx + jmp .loop + + + +print: + lodsb + or al,al + jz .exit + mov ah,0x0e + int 10h + jmp print + .exit: + ret + + waitforkey: mov ah, 0x00 int 0x16 @@ -49,4 +208,14 @@ exit: jmp 0x0:0x1000 bootdev db 0x80 ; Boot device number +description db "The Smart Speaker Theatre questions the default mode of smart speakers as digital assistants, through an intervention that involves kidnapping a Google Home and having it interrogated by a team of rogue speakers and by you, their user." +scroll db 1 +scrollchars dw 0 +writtenchars dw 0 +menuhelp db "F1 Help", 0 +menuselect db " ",0x18,"/",0x19," Select Item",0 +menuexit db 0x0D,0x0A," ESC Exit", 0 +menuenter db " Enter Select",0 + +title db "UPSETTING SETTINGS",0 diff --git a/beep.bin b/beep.bin index b0b585222fb97c3eb98855306aeb524368e52e8a..234ef74552f68ccbf7c944e4d9e3c0a401509187 100644 GIT binary patch literal 651 zcmZutK~ED=5T2IUph4V&B3{TGxR@G|n+X~XqyiUp_tito>FGY&4cpzi`?i4-oXl2# zh4CndhHO}<38|@3B-w<>jgtq`R7*TbypWBvK!OM7@@BsIzL{^HKXgwGGIv_zUz<;c z!?8$dtaqk1jQ-A~|GhJLzz6y|yaBpcImqN$qOT?9eR}wP>dIHbQkc|3EwwE{% zhJ&6foZBg&cr=bUBg`t`c?^%;pn?fgypT96MFlQjLd>x#%q<%7UuG_`aK?mZPgyRX LpM5-yXD@@l6-Wb7 delta 49 zcmeBX4dm|-3vk%NW^lmp6^+}@2pJ$0(Kqapj1Q-|^ E0Lsh~*Z=?k diff --git a/db b/db new file mode 100644 index 0000000..8cbadaf --- /dev/null +++ b/db @@ -0,0 +1,233 @@ +Disk /dev/loop0: 4.7 MiB, 4927488 bytes, 9624 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop1: 3.7 MiB, 3846144 bytes, 7512 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop2: 140.7 MiB, 147496960 bytes, 288080 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop3: 174 MiB, 182419456 bytes, 356288 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop4: 53.7 MiB, 56315904 bytes, 109992 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop5: 180.2 MiB, 188928000 bytes, 369000 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop6: 140.7 MiB, 147496960 bytes, 288080 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop7: 53.7 MiB, 56328192 bytes, 110016 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors +Disk model: HGST HTS725050A7 +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 4096 bytes +I/O size (minimum/optimal): 4096 bytes / 4096 bytes +Disklabel type: dos +Disk identifier: 0xe2dc99ec + +Device Boot Start End Sectors Size Id Type +/dev/sda1 * 2048 1026047 1024000 500M 7 HPFS/NTFS/exFAT +/dev/sda2 1026048 490772479 489746432 233.5G 7 HPFS/NTFS/exFAT +/dev/sda3 490774526 976771071 485996546 231.8G 5 Extended +/dev/sda5 490774528 960620543 469846016 224G 83 Linux +/dev/sda6 960622592 976771071 16148480 7.7G 82 Linux swap / Solaris + + + +Disk /dev/loop8: 1008 KiB, 1032192 bytes, 2016 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop9: 3.7 MiB, 3821568 bytes, 7464 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop10: 3.7 MiB, 3821568 bytes, 7464 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop11: 4 MiB, 4214784 bytes, 8232 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop12: 14.8 MiB, 15458304 bytes, 30192 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop13: 34.8 MiB, 36503552 bytes, 71296 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop14: 35.3 MiB, 37027840 bytes, 72320 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop15: 174.5 MiB, 182951936 bytes, 357328 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop16: 171.8 MiB, 180133888 bytes, 351824 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop17: 34.6 MiB, 36216832 bytes, 70736 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop18: 174.3 MiB, 182808576 bytes, 357048 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop19: 14.5 MiB, 15208448 bytes, 29704 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop20: 89.4 MiB, 93720576 bytes, 183048 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop21: 89.3 MiB, 93581312 bytes, 182776 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop22: 88.4 MiB, 92733440 bytes, 181120 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop23: 4.7 MiB, 4927488 bytes, 9624 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop24: 4 MiB, 4218880 bytes, 8240 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop25: 4.7 MiB, 4927488 bytes, 9624 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop26: 130 MiB, 136286208 bytes, 266184 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop27: 53.7 MiB, 56315904 bytes, 109992 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop28: 151 MiB, 158363648 bytes, 309304 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop29: 14.8 MiB, 15458304 bytes, 30192 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop30: 140.7 MiB, 147496960 bytes, 288080 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop31: 1008 KiB, 1032192 bytes, 2016 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop32: 151 MiB, 158347264 bytes, 309272 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop33: 2.3 MiB, 2355200 bytes, 4600 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/loop34: 174.3 MiB, 182808576 bytes, 357048 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes + + +Disk /dev/mapper/cryptswap1: 7.7 GiB, 8267497472 bytes, 16147456 sectors +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 4096 bytes +I/O size (minimum/optimal): 4096 bytes / 4096 bytes + + diff --git a/disk.img b/disk.img index c94ac78b82ca3eb1066e85e749025d90d84e2d0f..d8dfefafe20319eb9028aef23c249681cd2096c9 100755 GIT binary patch delta 4269 zcma)!!BUR(EIa?%Xmv zcerzBfz;}5g{9!SjcWEKkIH#H2=|mLgS2RHVp}>sEcJ`th(1Qq>1nid!mr z?wy5&HN`<14RdGC{W!n#Kj&JjlmVRcX(DXbn4=L@U-;%s5{ zaQ)SHwZdwk{_0Youo@HTl`m%Qg(trXhy$?JV8uf#smG+n;Au(riS1Cx?6`DVrBgfiLl(Q!>$99~-tNEe2|RrNJ@Vhsz2YJ}6YbLF#87EUd-&SgrOVf&Mx^-DT}LjqtSxG2u4biWQ9C(Tw{mz<>zUiT^6a8E zIJa+Q|DyKux&14(i<&bB4tVb|oVO8n_x9cS;0M7EwcFZHn#{;@Bj5dtwZHxQ(bB0% z>3wZ!ATk~5Z+Z|Oy7tAegfR7wsn5W}55hgO4~pLlMRq?3$D;R(Z-!3i&4_=(`m3k@ z`=xe8(;jJBK!ZQjn@A1}ClNwdP;wx7z7Iw$G7isjWRMX-bu`SlfjSX&kuV7-$Yv6m+xN&b2~#UIznOU^F$nT5zaamO-~@tb{&F8 zaLNK3liC?qL$5I%m-mr02^!8~F3_<2jBo@aSjZhEv1^vU8n9h~ZGqmv+$KUpm$8Ly zwb>NvqZwjnIQF!auspY>)i(O~zVe-y@9&iFx5{_9w$5ywI0B^z?9D*OE;=p|0=9|D zclTKFSG%9j3!|B7hn`8Jg>F{bC!=j{3f_mcRQrF z&=}(*F5<-XEV+R+XIX^N1i>7!v>b>3bQ2lOCJ0~(FzFk22nWEnz!n+5O(odbON${&+{Rfc(-A=1!cu4p%ChRS_ID5#@% zpaFr@GRn$73046M_M;x<6KZk?c1U&V_~@t&!7VqnftKnpX&Mej)U<7|ngvwlXddE3 zka6L*`P&3fdmP4rzfN3vLSX{QjETlf3cfC%43q_DHNYE56BOinj>9;(065FNfUk6z z0=y!%H>UI@cVv(>h7~|)2F$F(*UzU28ubVm07S#zgNZE*BA*x?#lO@(yX(2mL&e9n zr@|Kphx?MrfeU9*`96GOwX0~=y;ncgbo%Ig&B?o6pUMjG%VPb$<8fI7w3`Sr{FUa? z=h~*4@J4g#t_HcVDi5AHTI%!j;BM{V`|w}!nb4sQV7PsPPCqeGEBn zwzIh^fps?bz+mzFp{AP7=2*17x%k7-i^b&L#{B7{Uuq4SR;bELNMAptk8`tUWIVX# z{DlBFhHS;GvK!N$4PIq727+b!oEaXB<~d0IY6;>Ih)z-m37(>$ufV*svu!0nIq(OpMc(>QuV7{#lP2vcOZCcw2lWtz^|(q z+V_o3&~9~ah4yy$_RzYXgmxy9?ykaz6pH{k`CdVyKLOJD&HeW;FAm{<0%pfwZTTt_I1VLv2WfeJj z3yU=4S%9~r4pnsk8Diw(v^2+%Ho?%J(g39Xl9DhaOfv3R(5e`1vWmD+mQ;Pt66k!O z4N?4nGN3=iY)jTT>=_hd0g5H;?rSpqwqiI`Vc1#4a6GY<;c%jgA++MqU!ED-j$vz} zieYP_XSOw=7`7&2(G!UZ!y%tx62g7kj_N5wbX6Conl-|~J1$zUv)FZ^R6&~DiBEn@ zq8y=yjU7kI5Tmnr!)7Zc~?3+ORbs^u)R-Z()DCw^Z6gPsZy*%OwvHi0IX zCqsl#F6%vC&z=bNlVYiM|IQgSr%2tXkos;FsqFMtQvK6ar2Jn3XKrjq3Qbp$Leo97 zXj+j%)3IoDxV1k&!MPSsqh@l4B6&s!z#6 zmw}<_ahXn`Ny!p}f@GvxXVj z!mDVt@SfQgu4uLJSoA2b&>Hn=ZT!x7S`vgJ;bCi|bp>9ja;n-fxotEV7$8DtCtDTB zVR_Z56Nvy?OIc#pTVxOm$F{2z_@$xxcxVk(VUig!#SEXJ%RFl%tD3}eBq~+;+8{nW z8?vJeB^4c;^<+7k`teo#XKl?6x|*Ch_}0w909--1cEJ^bYd2gqaMi+92iG3B_AbmE JeC9_-{s$QN1fc)` delta 1834 zcma)7VQ3sh6rSCr*UP0emkqbIrCz4AwvjeXqJoy%Hc_iqTASpq*2F)Z?#<=a?CoB6 zXA=X3JBeu8pima1&1(2L7Y7xm3O;Q?+XE3v}X3; zBjr7Av?P|%^RcBCg9NvGA3^w`MeX#|?XRDKvGb*m!YM`HAChw6^5N!9&vknC|gz2$NriC+~IJ zpVv?cxpHBlovkY@v^sx?a{kAed1>;lz*?c;ja{0UGX0A)Z zx96`*wVhWG;(^x}mmv@!JRh-V3Guj(Xu8tjBQ`Hq1TK>Va$auAn2u zNNr^W<%-QUboNhZstwqEFjo>U2%n+L=%k#J-8OT@M~lDwb-Vhk?0t-?1F{ooeECUN z8aVNNf=fO1`_whi(Up47yV56RRB8ZL!*4wEPkvKkFg(ZbbljD8#;;4x&B%^CFBvr6 z^3LwRZ=vG|-9|`2@bnEP_a%}T<1U=sm)yS>^=b4iaQQ~RL7A%Hgpp?B#H0{X6&i%n z-Q6kFr;kug9aSOqH3LExdc{yk9sE+puozZ#%rbe36FEvosfm)r%G47Qsz!CFmnEaB zK7xjcM)aU~e}?FcSXnY+m?}X(Nt`G`_v&kNTi`!hUw75l!}aymgGqc~2*0rR#lA!P zlbD#!#?ZRFVq|kRqo%bT@6$0IqvixAxg4}am}+pE)TEG1u|*jJMi$PQG)2>@PE+{k z1W!;+teBKA!?d=6PZ-YfCXF-?Vy0%Pg)K%Vu&p!0Rx$z5hGderux$lzXIrd#F{n;# zjcvoa0aa{X^{5S^@eFXWAI0Mts^f8rQ-;2UVFkn)p^&p32BWByO<>gm5mS`&u+*%o z5tCDgHgMV`Svqc*qgFoP3uPD#0;dfVkC-4cO>M_XAP-K;4wT55#+y`O7N+_Lfme;I zEW-&~KtWBXK_;EyI&}~r1x*t@1)~Oa$EXh6d^NdP2A7kWw!-qZNxLj)N}*k*VF3Ff z!}jG?^)VG_U}oT>6sANmj|Xaja0*k$DArVqL20fKoC}j-D>zW#D~4_thXvyAn=5`qb*>XXn&HkCSRT>zrG4 zw{c3I#!hQwb3D{N*Yh>M7thr1MbW<(b?k|#w#t#4+aH_8w@?(J2fiOZCjyi4)kTF% zZ?9)U%aq*TUHY%&L8m3svChBd1SZz*{7N=0{6c^bcW8Vg_|SOZui*b1-^*h;W4SQA*Jd>S`r+Ap2McbfkN!y2Q; diff --git a/food.asm b/food.asm index 330ac6d..7ea8fc8 100644 --- a/food.asm +++ b/food.asm @@ -28,19 +28,170 @@ mov cx, 1 mov dx, 200 int 15h -;.pause1: -; mov cx, 65535 -;.pause2: -; dec cx -; jne .pause2 -; dec bx -; jne .pause1 in al, 61h ; Turn off note (get value from ; port 61h). and al, 11111100b ; Reset bits 1 and 0. out 61h, al ; Send new value. + mov ah, 02h ;top bar setting the position and then write title $ + mov bh, 0h + mov dh, 0h + mov dl, 20h + int 10h + + mov si, title + call print + + + mov ah, 02h ;sets cursor to top to write + mov bh, 0h + mov dh, 17h + mov dl, 2h + int 10h + + mov si, menuexit + call print + + + +main: + mov bx, 1 + mov ah, 06h ;draw rect on background + mov cx, 060Fh + mov dx, 103Bh + mov bh, 70h + int 10h + push dx + push cx + mov si, description + call printinrect + pop cx + pop dx + push dx + push cx + call drawshadow + jmp waitforkey + pop cx + pop dx + + +drawshadow: + push cx + push dx + mov al, dl + mov ah, ch + inc ah + inc al + mov cx, ax + mov bl, dl + mov bh, dh + inc bl + inc bh + mov dx, bx + mov ah, 06h ;draw shadow + mov bh, 0Ch + int 10h + pop dx + pop cx + + mov al, cl + mov ah, dh + inc ah + inc al + mov cx, ax + mov bl, dl + mov bh, dh + inc bl + inc bh + mov dx, bx + mov ah, 06h ;draw shadow + mov bh, 0Ch + int 10h + + ret + + +printinrect: + mov ax, 0 + mov [writtenchars], ax + push cx + mov bx, dx + push bx + mov ah, 02h ;sets cursor to top to write + mov bh, 0h + mov dh, ch + mov dl, cl + int 10h +.loop: + mov ax, [writtenchars] + inc ax + mov [writtenchars], ax + lodsb ; load next char + mov bh, 0 + mov ah, 0x03 + int 10h ;read cursor position + push dx + pop dx + pop bx + cmp dh, bh ;comp for scroll + jg .stop + push bx + push dx + or al,al + jz .exit + mov bx, [writtenchars] + cmp bx, [scrollchars] + jg .writechar +.continue: + pop dx + pop bx + cmp dl, bl ;if caracter over width of rect + je .newline ; go to next line + push bx + jmp .loop + +.writechar: + mov ah, 0x0e + mov bh, 0x00 + mov cx, 0x01 + int 10h ;write char + jmp .continue + +.stop: + pop cx + ret +.exit: + pop dx + pop bx + pop cx + ret +.newline: + pop cx + push bx + mov dl, cl ;set column + inc dh ;increment row by one, works! + mov ah, 02h ;sets cursor + mov bh, 0h ;page number 0 constant + int 10h + pop bx + push cx + push bx + jmp .loop + + + +print: + lodsb + or al,al + jz .exit + mov ah,0x0e + int 10h + jmp print + .exit: + ret + + waitforkey: mov ah, 0x00 int 0x16 @@ -57,4 +208,14 @@ exit: jmp 0x0:0x1000 bootdev db 0x80 ; Boot device number +description db "Is it time to eat, or is there no more time to eat? questions the default mode of techno-solutionism through an intervention that subverts the culture of reviews, peering through the lens of food to shed light onto an ideology built on patterns of authoritativeness and bland lifestyle choices." +scroll db 1 +scrollchars dw 0 +writtenchars dw 0 +menuhelp db "F1 Help", 0 +menuselect db " ",0x18,"/",0x19," Select Item",0 +menuexit db 0x0D,0x0A," ESC Exit", 0 +menuenter db " Enter Select",0 + +title db "UPSETTING SETTINGS",0 diff --git a/food.bin b/food.bin index e91bcf75f6dea526a79e58dc53a8fabb4c1ac6df..1f18d438e5847da76914cb49a62a450c82030df2 100644 GIT binary patch literal 710 zcmZut&rcIk5PpT&ph4V&B3{TGIO31?WP(NmsoIO!E*{#Rw%yt8OSb#!?pu@-oXnz$ z|AX-;hXywkYC>vi6iGHAa^vKIG}RJM5-+52mJ;RQJG^-_^Ue2t^Ze0Ui6DNXnfTI} z9jniVN^Pw@v(AUw)Bd;i^u9Jc*w$(+c)k&1jV%^l+SewI+FCGBXKQQ~LS^$^va`dE z^UJFPl)p-Ln(Tdy1@Vmw@y3)=uZBuCvw1twNwHi$o9Uck-`~;LYxdY_l~f_Qy6RPs50%m4NNUTdAPH%2nEysJj4{!f29R9+j&yHs4MvtW?q@`and z#R)Y#)RgdY+(=H1>&eBlRNa#o)$Z3|q|RucQ0X4zTKPh*l~eug-lvEzR0>}f-RsTD4qh` zfhQiik_-D71Ued;XGy~82*Ln~CDRsHU150C|5}kRpqZZXQ39eV1 zM@RO_O2p)m9`QIh&+(}{2~|Xg+vUG3PL>(+%HYEs~@<>TXVTtkr z6g^J%NUo|$67LUco-~ESr6xJKLD!`b9g0?TTil=p7c7L5DR>FpYcWRWUIO3&T2%)B v&e-)Ul&EN7NkUp;g`GbKkWyzL^^D8Y$W*lW36ed2q^9QP(hu*$NmSV%wxt?b delta 38 tcmX@c8pzTi7GN-u#aN2rtXRVz#uBF2U!NqZ{CSqx1r&e9Ai%)T000Z?4jljh diff --git a/light.asm b/light.asm index 4d47c9c..52ba519 100644 --- a/light.asm +++ b/light.asm @@ -6,7 +6,7 @@ start: xor al, al ; Clear entire screen xor cx, cx ; Upper left corner CH=row, CL=column mov dx, 184FH ; lower right corner DH=row, DL=column - mov bh, 4Fh ; YellowOnBlue + mov bh, 0Fh ; YellowOnBlue int 10H ; execute interrupt mov al, 182 ; meaning that we're about to load @@ -22,61 +22,174 @@ start: out 61h, al ; Send the new value ; mov bx, 200 ; Pause for duration of note. - - mov ah, 06h ; Scroll up function - xor al, al ; Clear entire screen - xor cx, cx ; Upper left corner CH=row, CL=column - mov dx, 184FH ; lower right corner DH=row, DL=column - mov bh, 12h ; YellowOnBlue - int 10H ; execute interrupt mov al, 0 mov ah, 86h mov cx, 1 mov dx, 200 int 15h - mov ah, 06h ; Scroll up function - xor al, al ; Clear entire screen - xor cx, cx ; Upper left corner CH=row, CL=column - mov dx, 184FH ; lower right corner DH=row, DL=column - mov bh, 2Bh ; YellowOnBlue - int 10H ; execute interrupt -mov al, 0 -mov ah, 86h -mov cx, 1 -mov dx, 200 -int 15h - mov ah, 06h ; Scroll up function - xor al, al ; Clear entire screen - xor cx, cx ; Upper left corner CH=row, CL=column - mov dx, 184FH ; lower right corner DH=row, DL=column - mov bh, 3Fh ; YellowOnBlue - int 10H ; execute interrupt -mov al, 0 -mov ah, 86h -mov cx, 1 -mov dx, 200 -int 15h - -;.pause1: -; mov cx, 65535 -;.pause2: -; dec cx -; jne .pause2 -; dec bx -; jne .pause1 in al, 61h ; Turn off note (get value from ; port 61h). and al, 11111100b ; Reset bits 1 and 0. out 61h, al ; Send new value. -mov al, 0 -mov ah, 86h -mov cx, 1 -mov dx, 200 -int 15h - + mov ah, 02h ;top bar setting the position and then write title $ + mov bh, 0h + mov dh, 0h + mov dl, 20h + int 10h + + mov si, title + call print + + + mov ah, 02h ;sets cursor to top to write + mov bh, 0h + mov dh, 17h + mov dl, 2h + int 10h + + mov si, menuexit + call print + + + +main: + mov bx, 1 + mov ah, 06h ;draw rect on background + mov cx, 060Fh + mov dx, 103Bh + mov bh, 87h + int 10h + push dx + push cx + mov si, description + call printinrect + pop cx + pop dx + push dx + push cx + call drawshadow + jmp waitforkey + pop cx + pop dx + + +drawshadow: + push cx + push dx + mov al, dl + mov ah, ch + inc ah + inc al + mov cx, ax + mov bl, dl + mov bh, dh + inc bl + inc bh + mov dx, bx + mov ah, 06h ;draw shadow + mov bh, 70h + int 10h + pop dx + pop cx + + mov al, cl + mov ah, dh + inc ah + inc al + mov cx, ax + mov bl, dl + mov bh, dh + inc bl + inc bh + mov dx, bx + mov ah, 06h ;draw shadow + mov bh, 70h + int 10h + + ret + + +printinrect: + mov ax, 0 + mov [writtenchars], ax + push cx + mov bx, dx + push bx + mov ah, 02h ;sets cursor to top to write + mov bh, 0h + mov dh, ch + mov dl, cl + int 10h +.loop: + mov ax, [writtenchars] + inc ax + mov [writtenchars], ax + lodsb ; load next char + mov bh, 0 + mov ah, 0x03 + int 10h ;read cursor position + push dx + pop dx + pop bx + cmp dh, bh ;comp for scroll + jg .stop + push bx + push dx + or al,al + jz .exit + mov bx, [writtenchars] + cmp bx, [scrollchars] + jg .writechar +.continue: + pop dx + pop bx + cmp dl, bl ;if caracter over width of rect + je .newline ; go to next line + push bx + jmp .loop + +.writechar: + mov ah, 0x0e + mov bh, 0x00 + mov cx, 0x01 + int 10h ;write char + jmp .continue + +.stop: + pop cx + ret +.exit: + pop dx + pop bx + pop cx + ret +.newline: + pop cx + push bx + mov dl, cl ;set column + inc dh ;increment row by one, works! + mov ah, 02h ;sets cursor + mov bh, 0h ;page number 0 constant + int 10h + pop bx + push cx + push bx + jmp .loop + + + +print: + lodsb + or al,al + jz .exit + mov ah,0x0e + int 10h + jmp print + .exit: + ret waitforkey: @@ -95,4 +208,14 @@ exit: jmp 0x0:0x1000 bootdev db 0x80 ; Boot device number +description db "Eigengrau challenges the default mode of rituals in the club space through an intervention that involves a collective experience while creating a transcendental oneness for body and soul through help of light, sound, and space." +scroll db 1 +scrollchars dw 0 +writtenchars dw 0 +menuhelp db "F1 Help", 0 +menuselect db " ",0x18,"/",0x19," Select Item",0 +menuexit db 0x0D,0x0A," ESC Exit", 0 +menuenter db " Enter Select",0 + +title db "UPSETTING SETTINGS",0 diff --git a/light.bin b/light.bin index 810677d4e7bfecbf0455fee2e9359334f67aa5f9..b80fc4c908a643b3f41d97722f3f005c6dd56ef3 100644 GIT binary patch literal 643 zcmZutK~ED=5T2IUfKk|kB3{UtawIA@6Eq=^Rf&n(E*{#R9=osIO_tsA_HD%zob*+H zh4CndhHO}<38|@3B-w<>jgtq`R7*TbypWA=fv5-P^5&cGoB3v*7{0w2WNx-5J~tnY zghP?iSnteiSpA)8@wGF3KrZxkNCSfBn<;2+Lv;Coj2(AKkPcxT)-Y1Gs;s*UC-}-* zTH*(++k$r~2r`>PndYPtzKE23ZtKosSA{|`pX;83Z*OIm%Zpuc7=MUc_4i^={EFN0 zr}}=739FG(EQoFK^Z#6X1K>@TBs8eCYN8Kd0EpzH2Hz^vlOnjT;f@@H8%g8M56Wc?} zIiYpipGU7sbSfcp{fddiktCMaPd5%s?DIfWbuEMYI4_^5}rKP)VaCY KhxhR8)!;YBp#tjw literal 156 zcmeAWn_aMl&ESCH$zA>u+x^c9Y}oe9c}FJ4GpCLR&zznl@-RP3M92#PPNn5}oTp8b$y z>%P{rWnZ@5FOs!e=axdbM?SF;kIFsj5}R`iP3IHgd#Tl~8?Bd?4xYOm^4&atJ5=kx zOo-e#zWT2Wf*DmO@ktP2#!SGKlTDh`*HC?krbZ7j^ig^S~;^lI?}WtV5aj!P$t`a;s9IaivfSG|p3r0L#l%2Rnw4UAb z$1mhGArA=g5&VM#Be9`q3;<3;Y$$eg09RBtiF3IU(V5^1MD?VYpeB=hTw(6skOf?T z;28!&2Sx?#25x~!Gn0X)Lq^B(AKUvdTT3yOk8`Yil!=`d(2Sw-(Cg2JcQc#Rq=|SV8_1*BtzbC&3*jM7$4%X~c(+UHE$mfh9nnoobi;8fkPL-`%yg7u$p(<<+Xz~* zdL%=b(9LlROlF~0Jl~N|VTw^x3deQ)QqqvnH3sOg>}+7tU?#e*393TG9#gp`9fPhn zA}0>+f(*3;%HSFt=9qKomv z6er2;gF1H@(@)vloN{U#D3B}MaDC$%-gl|#Z(q5BMU&VUbINw(X)0POSMlx$HYu!b zS0rM#OgU8rC}n?5p<(3d~4Wg0$Ie;_@*q|Fmw|EpvO`Ql2Wh)GLf%w z!g+C0P~+0!(@S7w1*69poU$3lqk#!mLYk^7J_eTPA&2__jxg0A&I@vXHtpVwA5o^_ z)kHijLpC%63`Ac+<2k;nCw~Ljnc0XWCnC{-SZwI{AT-7(iI}?MwWbSn)7BDOH#FlS zwv9rjV4O|Ke;ha$*i%oB^B%MAtMq<70v-X6fJeY1;1Tc$cmzBG9s!SlN5CWC5%36j W1Uv#B0gr%3z$4%h@Cf|x1pWm6g2*TU literal 8192 zcmeH_Piz!b9LL|RxD=3f+1dpRu0NDOO`v~HYASy!7OVkjyQ{e6;xPNRJ9c*7GV`XT z2??7lhpmm?P4v(ZPjX+X&oL55ij+oOM@`|mQ zTZ0ilM4j!v9Ts-)k00+l)jl29W0g?hnk24fwb*NStkz1n^su~UZb$Wu9dRF9sL~}f z7(dhN+>wflEyYHU^_5F1#Eun~U*OLbmN)Ukh2?E+=RPHcWvT64T`Da1@r?V^>{7J& zNaCCDf#Rc1zO}f}a$bwwJGI(*z3uX?H)d}{rJLt(MBTnCgb2s`t50MQ%y7Jn{f{$V z_A=I8>GU#ouGSee6=r9&D)WY;reX5vqVy(Bg0OK+)J*eMrY!vp+WezVxxt} zi;W0}Vq*(`vDg5lr@YqPRwD<>EpA7R43*cptu^vNdA+-~ zM)KtiF8SsU6d~2uP~Vm5=}D7*eT-`AxQe0gF?5;aZKlZ0Y$5nldjLMp<`?ZI%vd(2QCyy~hmC4Uhp_7nC z^W4zx+s`-8z0LD@^L*!65{{5p6AzPF zs>39OG}Cu+P!QM{#h5Ofm7-EU1*(Z)(^SYX)tsuyhER@OAP6}}Cz&xWUPQH6h2v}> z!weWRkUULyK@z2-k+ysed4qjO6=X*BF&ST)RC!kDHBo_@$xwsp9Gc3p{WP{L>uDT5 zvYnthO7mC>R7}9+hNW=Jpxq|6q|k1IG1Q)7md9GvCsb4coWV(oBcdSuJ}acAaCL%$ zrkWfp3qH6h1_#q$F|-w?n~KUT96DoZ&$M!0q{46r)BtWUO%s_^H^q)=B3t3!5Vw;< zy#Q}fEl<2n_5Y4{C-5UdH4KA6PIF}AdVqn%K^Qo#@_$DTcrW;ob(~;cI>X diff --git a/silence.asm b/silence.asm index aef53df..dad2ef9 100644 --- a/silence.asm +++ b/silence.asm @@ -1,4 +1,4 @@ -[org 0x6000] +[org 0x9000] start: mov [bootdev], dl @@ -6,7 +6,7 @@ start: xor al, al ; Clear entire screen xor cx, cx ; Upper left corner CH=row, CL=column mov dx, 184FH ; lower right corner DH=row, DL=column - mov bh, 4Fh ; YellowOnBlue + mov bh, 5Dh ; YellowOnBlue int 10H ; execute interrupt mov al, 182 ; meaning that we're about to load @@ -28,19 +28,170 @@ mov cx, 1 mov dx, 200 int 15h -;.pause1: -; mov cx, 65535 -;.pause2: -; dec cx -; jne .pause2 -; dec bx -; jne .pause1 in al, 61h ; Turn off note (get value from ; port 61h). and al, 11111100b ; Reset bits 1 and 0. out 61h, al ; Send new value. + mov ah, 02h ;top bar setting the position and then write title $ + mov bh, 0h + mov dh, 0h + mov dl, 20h + int 10h + + mov si, title + call print + + + mov ah, 02h ;sets cursor to top to write + mov bh, 0h + mov dh, 17h + mov dl, 2h + int 10h + + mov si, menuexit + call print + + + +main: + mov bx, 1 + mov ah, 06h ;draw rect on background + mov cx, 060Fh + mov dx, 103Bh + mov bh, 70h + int 10h + push dx + push cx + mov si, description + call printinrect + pop cx + pop dx + push dx + push cx + call drawshadow + jmp waitforkey + pop cx + pop dx + + +drawshadow: + push cx + push dx + mov al, dl + mov ah, ch + inc ah + inc al + mov cx, ax + mov bl, dl + mov bh, dh + inc bl + inc bh + mov dx, bx + mov ah, 06h ;draw shadow + mov bh, 0Ch + int 10h + pop dx + pop cx + + mov al, cl + mov ah, dh + inc ah + inc al + mov cx, ax + mov bl, dl + mov bh, dh + inc bl + inc bh + mov dx, bx + mov ah, 06h ;draw shadow + mov bh, 0Ch + int 10h + + ret + + +printinrect: + mov ax, 0 + mov [writtenchars], ax + push cx + mov bx, dx + push bx + mov ah, 02h ;sets cursor to top to write + mov bh, 0h + mov dh, ch + mov dl, cl + int 10h +.loop: + mov ax, [writtenchars] + inc ax + mov [writtenchars], ax + lodsb ; load next char + mov bh, 0 + mov ah, 0x03 + int 10h ;read cursor position + push dx + pop dx + pop bx + cmp dh, bh ;comp for scroll + jg .stop + push bx + push dx + or al,al + jz .exit + mov bx, [writtenchars] + cmp bx, [scrollchars] + jg .writechar +.continue: + pop dx + pop bx + cmp dl, bl ;if caracter over width of rect + je .newline ; go to next line + push bx + jmp .loop + +.writechar: + mov ah, 0x0e + mov bh, 0x00 + mov cx, 0x01 + int 10h ;write char + jmp .continue + +.stop: + pop cx + ret +.exit: + pop dx + pop bx + pop cx + ret +.newline: + pop cx + push bx + mov dl, cl ;set column + inc dh ;increment row by one, works! + mov ah, 02h ;sets cursor + mov bh, 0h ;page number 0 constant + int 10h + pop bx + push cx + push bx + jmp .loop + + + +print: + lodsb + or al,al + jz .exit + mov ah,0x0e + int 10h + jmp print + .exit: + ret + + waitforkey: mov ah, 0x00 int 0x16 @@ -57,4 +208,14 @@ exit: jmp 0x0:0x1000 bootdev db 0x80 ; Boot device number +description db "Instant Warnet confronts the default mode of who is included and who is excluded in contemporary social media spaces through an intervention that uses play and performance to turn the tables on networks of harassment online." +scroll db 1 +scrollchars dw 0 +writtenchars dw 0 +menuhelp db "F1 Help", 0 +menuselect db " ",0x18,"/",0x19," Select Item",0 +menuexit db 0x0D,0x0A," ESC Exit", 0 +menuenter db " Enter Select",0 + +title db "UPSETTING SETTINGS",0 diff --git a/silence.bin b/silence.bin index 9319a66de41a67aa8ccd824884fe5a4f8fac33c1..6328b51ec78bd359aeec2647fecb153249f7be0d 100644 GIT binary patch literal 640 zcmZutL2DCH5T2wMs?@p%t@RS-(6ic`Pz7m;HWxM7iX_3qbN9t8?!LF|zS#EEo@Aq^ z?mrNZ_7KX_Z6lOOL~CK8*jrB?N{FU-vUn+rZ`+6-oXeZ}=KH>xdEVH~l^}DyJ^8tH ze>{8~Db4ln%!V=Co%X(Vrw_=;P?t0zc(Iv+);2_!4#>oDmjvk$)?p1JWy|t=yKqup zUQ5e**6+39T?&HC=7mgaN(t>qDHgVFt@LtGDi;gAGw|)L%nC(s*E@_q#O=m=Z_oP` zcj8Zt{U8&LL`u2jZF@ie-|K7uyg|Rv*i)0K-VbjlQeLBfTY{@01VeIMxpE_3nox_w zZGo?{=uc&{{?b{A?u(0R|4T3$g1jeE`iG@Xxl-zsRBtE#nAk;1rJ(kkt5TT>MkV8@ z6F@Y!e4G;L{?Y02FXfkg2L)g`&s;&6z(>SkRG`LL)!|IIC~6dSS|xQ;pv85Hyo&QR zj)sc{)6BX~btFvxgVBWnX0XIWP|M~HaTd|#nn6sosBRE+ZKBb{+u`-6HK~_gf;!JB z69#7zCj#rPWY{KIJh8W_Q{|3Dm_|`>6m=(|$(%efB~Oav+Vk9bCi5!Rh(lc0l6JCV z8jM~|fs8woh_lqR0sqGMwJWkvsYx|~dATo~KZlr8XE3*5h<};6WW@m!9zIZWb94E7 JcX9Bl@Ehxc0`mX> delta 49 zcmZo*4dm|-3rN_)W^lmp6^+}@2pJ$0(Kqapj1Q-|^ E0M5}94FCWD diff --git a/software.asm b/software.asm index 94ea2ca..522459a 100644 --- a/software.asm +++ b/software.asm @@ -2,6 +2,13 @@ start: mov [bootdev], dl + mov ah, 06h ; Scroll up function + xor al, al ; Clear entire screen + xor cx, cx ; Upper left corner CH=row, CL=column + mov dx, 184FH ; lower right corner DH=row, DL=column + mov bh, 9Eh ; CHANGE BACKGROUND HERE first back then front + int 10H ; execute interrupt + mov al, 182 ; meaning that we're about to load out 43h, al ; prepare speaker for output @@ -13,49 +20,183 @@ start: in al, 61h or al, 00000011b out 61h, al ; Send the new value +; mov bx, 200 ; Pause for duration of note. + +mov al, 0 +mov ah, 86h +mov cx, 1 +mov dx, 200 +int 15h - mov al, 0 - mov ah, 86h - mov cx, 1 - mov dx, 200 - int 15h - in al, 61h ; Turn off note (get value from + in al, 61h ; Turn off note (get value from ; port 61h). - and al, 11111100b ; Reset bits 1 and 0. - out 61h, al ; Send new value. + and al, 11111100b ; Reset bits 1 and 0. + out 61h, al ; Send new value. - mov ah, 06h ; Scroll up function - xor al, al ; Clear entire screen - xor cx, cx ; Upper left corner CH=row, CL=column - mov dx, 184FH ; lower right corner DH=row, DL=column - mov bh, 9Bh ; YellowOnBlue - int 10H ; execute interrupt + mov ah, 02h ;top bar setting the position and then write title $ + mov bh, 0h + mov dh, 0h + mov dl, 20h + int 10h + + mov si, title + call print + + + mov ah, 02h ;sets cursor to top to write + mov bh, 0h + mov dh, 17h + mov dl, 2h + int 10h + + mov si, menuexit + call print + + + +main: + mov bx, 1 + mov ah, 06h ;draw rect on background + mov cx, 060Fh + mov dx, 103Bh + mov bh, 70h ;BACKGROUND OF BOX first back then front + int 10h + push dx + push cx + mov si, description + call printinrect + pop cx + pop dx + push dx + push cx + call drawshadow + jmp waitforkey + pop cx + pop dx + + +drawshadow: + push cx + push dx + mov al, dl + mov ah, ch + inc ah + inc al + mov cx, ax + mov bl, dl + mov bh, dh + inc bl + inc bh + mov dx, bx + mov ah, 06h ;draw shadow + mov bh, 1Ch ;shadow color + int 10h + pop dx + pop cx + + mov al, cl + mov ah, dh + inc ah + inc al + mov cx, ax + mov bl, dl + mov bh, dh + inc bl + inc bh + mov dx, bx + mov ah, 06h ;draw shadow + mov bh, 1Ch ;shadow color + int 10h + + ret + + +printinrect: + mov ax, 0 + mov [writtenchars], ax + push cx + mov bx, dx + push bx + mov ah, 02h ;sets cursor to top to write + mov bh, 0h + mov dh, ch + mov dl, cl + int 10h +.loop: + mov ax, [writtenchars] + inc ax + mov [writtenchars], ax + lodsb ; load next char + mov bh, 0 + mov ah, 0x03 + int 10h ;read cursor position + push dx + pop dx + pop bx + cmp dh, bh ;comp for scroll + jg .stop + push bx + push dx + or al,al + jz .exit + mov bx, [writtenchars] + cmp bx, [scrollchars] + jg .writechar +.continue: + pop dx + pop bx + cmp dl, bl ;if caracter over width of rect + je .newline ; go to next line + push bx + jmp .loop + +.writechar: + mov ah, 0x0e + mov bh, 0x00 + mov cx, 0x01 + int 10h ;write char + jmp .continue + +.stop: + pop cx + ret +.exit: + pop dx + pop bx + pop cx + ret +.newline: + pop cx + push bx + mov dl, cl ;set column + inc dh ;increment row by one, works! + mov ah, 02h ;sets cursor + mov bh, 0h ;page number 0 constant + int 10h + pop bx + push cx + push bx + jmp .loop + - mov ah, 02h ;sets cursor to top to write - mov bh, 0h - mov dh, 2h - mov dl, 2h - int 10h - mov si, description - call print - jmp waitforkey print: - lodsb - or al,al - jz .exit - mov ah,0x0e - int 10h - jmp print - .exit: - ret + lodsb + or al,al + jz .exit + mov ah,0x0e + int 10h + jmp print + .exit: + ret + waitforkey: - mov ah, 0x00 - int 0x16 - cmp ah, 01h - je exit + mov ah, 0x00 + int 0x16 + cmp ah, 01h + je exit jmp waitforkey exit: @@ -66,13 +207,16 @@ exit: mov dl, [bootdev] jmp 0x0:0x1000 -description db "Poetic Software is a project",0 - bootdev db 0x80 ; Boot device number +description db "Poetic Software challenges the default mode of software as a tool where functionality and productivity are predominant through an intervention that involves software as a non-functional, emotional, and cultural object of artistic practice." +scroll db 1 +scrollchars dw 0 +writtenchars dw 0 +menuhelp db "F1 Help", 0 +menuselect db " ",0x18,"/",0x19," Select Item",0 +menuexit db 0x0D,0x0A," ESC Exit", 0 +menuenter db " Enter Select",0 -%assign usedMemory ($-$$) -%assign usableMemory (512*16) -%warning [usedMemory/usableMemory] Bytes used -times (512*16)-($-$$) db 0 ;kernel must have size multiple of 512 so le$ +title db "UPSETTING SETTINGS",0 diff --git a/software.bin b/software.bin index a0baf07a963d94831e50f0710b057578209224b3..b8b331ee22e7891f2675be722dfe23239a91a735 100644 GIT binary patch literal 655 zcmZutL2DC16n;rDRMENztreuaEh9O-C~$);1CQ}FGryrt4&TkMA)!e;Hg*b%?N zR`{v5>m~dvfs)OLP4V;pZ>=?eH%T>B+tDLe@k49{%IlYjblm K_wL~Fsl#sYXF4xlUO018fUgb1-P5)W*xBm}^o_yO3qK6q2qERyJ0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz Hz+VC%b*(*4 diff --git a/voice.asm b/voice.asm index e56a92b..ac94f23 100644 --- a/voice.asm +++ b/voice.asm @@ -1,4 +1,4 @@ -[org 0x5000] +[org 0x4000] start: mov [bootdev], dl @@ -6,7 +6,7 @@ start: xor al, al ; Clear entire screen xor cx, cx ; Upper left corner CH=row, CL=column mov dx, 184FH ; lower right corner DH=row, DL=column - mov bh, 4Fh ; YellowOnBlue + mov bh, 1Ch ; YellowOnBlue int 10H ; execute interrupt mov al, 182 ; meaning that we're about to load @@ -28,19 +28,170 @@ mov cx, 1 mov dx, 200 int 15h -;.pause1: -; mov cx, 65535 -;.pause2: -; dec cx -; jne .pause2 -; dec bx -; jne .pause1 in al, 61h ; Turn off note (get value from ; port 61h). and al, 11111100b ; Reset bits 1 and 0. out 61h, al ; Send new value. + mov ah, 02h ;top bar setting the position and then write title $ + mov bh, 0h + mov dh, 0h + mov dl, 20h + int 10h + + mov si, title + call print + + + mov ah, 02h ;sets cursor to top to write + mov bh, 0h + mov dh, 17h + mov dl, 2h + int 10h + + mov si, menuexit + call print + + + +main: + mov bx, 1 + mov ah, 06h ;draw rect on background + mov cx, 060Fh + mov dx, 103Bh + mov bh, 70h + int 10h + push dx + push cx + mov si, description + call printinrect + pop cx + pop dx + push dx + push cx + call drawshadow + jmp waitforkey + pop cx + pop dx + + +drawshadow: + push cx + push dx + mov al, dl + mov ah, ch + inc ah + inc al + mov cx, ax + mov bl, dl + mov bh, dh + inc bl + inc bh + mov dx, bx + mov ah, 06h ;draw shadow + mov bh, 0Ch + int 10h + pop dx + pop cx + + mov al, cl + mov ah, dh + inc ah + inc al + mov cx, ax + mov bl, dl + mov bh, dh + inc bl + inc bh + mov dx, bx + mov ah, 06h ;draw shadow + mov bh, 0Ch + int 10h + + ret + + +printinrect: + mov ax, 0 + mov [writtenchars], ax + push cx + mov bx, dx + push bx + mov ah, 02h ;sets cursor to top to write + mov bh, 0h + mov dh, ch + mov dl, cl + int 10h +.loop: + mov ax, [writtenchars] + inc ax + mov [writtenchars], ax + lodsb ; load next char + mov bh, 0 + mov ah, 0x03 + int 10h ;read cursor position + push dx + pop dx + pop bx + cmp dh, bh ;comp for scroll + jg .stop + push bx + push dx + or al,al + jz .exit + mov bx, [writtenchars] + cmp bx, [scrollchars] + jg .writechar +.continue: + pop dx + pop bx + cmp dl, bl ;if caracter over width of rect + je .newline ; go to next line + push bx + jmp .loop + +.writechar: + mov ah, 0x0e + mov bh, 0x00 + mov cx, 0x01 + int 10h ;write char + jmp .continue + +.stop: + pop cx + ret +.exit: + pop dx + pop bx + pop cx + ret +.newline: + pop cx + push bx + mov dl, cl ;set column + inc dh ;increment row by one, works! + mov ah, 02h ;sets cursor + mov bh, 0h ;page number 0 constant + int 10h + pop bx + push cx + push bx + jmp .loop + + + +print: + lodsb + or al,al + jz .exit + mov ah,0x0e + int 10h + jmp print + .exit: + ret + + waitforkey: mov ah, 0x00 int 0x16 @@ -57,4 +208,14 @@ exit: jmp 0x0:0x1000 bootdev db 0x80 ; Boot device number +description db "Let's amplify unspeakable things challenges the default mode of authoritative voices, that establish exclusive speech platforms, through an intervention that creates a safe space for excluded voices to be explored, in situated meetings and on an online audio archive." +scroll db 1 +scrollchars dw 0 +writtenchars dw 0 +menuhelp db "F1 Help", 0 +menuselect db " ",0x18,"/",0x19," Select Item",0 +menuexit db 0x0D,0x0A," ESC Exit", 0 +menuenter db " Enter Select",0 + +title db "UPSETTING SETTINGS",0 diff --git a/voice.bin b/voice.bin index 7da6452389bf1f9377752c52d61d4c35ae57d7da..1839d0fed13625ce807b0703818eb3867bb4221d 100644 GIT binary patch literal 683 zcmZut&ubGw6rQ9Qs?@p%treuaL%~Z?dlRZ)w?qvQHQ9Pda+>bGWCu69%kFHbr}iWp z{Rg~?M|%im>9!F{B%-yjQ0%QI4<$rXJXySy#Yq~_gYPo)zWIKr_X!fDwl1Wab5dwWQa-nRXTF;zg&&ziICNY$gjCTtG2<)&%rZY8|gE;WFT;znH3jQof-z3 z6?6rHpkbMM28XJpAy{Rg9@j00amrZ@p=L1^-5J589MI*$h`Bo8vTAs4pCIf})xkC> zFI!G^Ky@syq60O7nH-%Onw(kYsfFqwIR9(z=JwZg>n+14)hE3paP2RX78U+nh nIb=9i$@y~tX=MS@%Z&faO!qe!GRe~?N_ufI^XNVdPlfyev(pf4 delta 49 zcmZ3@8pz)v77(z7&ESCH$zA>u+x;iIpzSiyt#4KhF}ofJ$C52rw`- F007hc6Bqyh