Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.asm.x86    |    Ahh, the lost art of x86 assembly    |    4,675 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 3,452 of 4,675    |
|    bilsch01 to All    |
|    test    |
|    18 Jul 18 01:34:48    |
      From: king621@nospicedham.comcast.net              bits 16       org 0x7e00              SECTION .data              int13pkt times 16 db 0 ;space for int13/ah42 packet       ms_invdr db 'invalid drive letter',0       ms_inv13 db 'an input field has more than 12 characters',0       ms_inv2b db 'two blank spaces is illegal',0       ms_hi db ' Hello World!',0       ms_badc db 'unrecognized command',0       ms_help db 'clear, copy, date, dir, drive, findbs, findfl, help, hi,       parts, time, txt',0       ms_dt_err db ' no BIOS date/time.',0       ms_txcmds db ' alt-(O)pen alt-(C)lose alt-(S)ave alt-save(A)s       alt-e(X)it',0       ms_f2open db ' name of file to open:',0       ms_f2save db ' name of file to save:',0       ms_fdne db ' file does not exist. Create? y/n:',0       cmd_clear db 'clear',0       cmd_copy db 'copy',0       cmd_date db 'date',0       cmd_dir db 'dir',0       cmd_drive db 'drive',0       cmd_findbs db 'findbs',0       cmd_findfl db 'findfl',0 ;this line breaks it       cmd_help db 'help',0       cmd_hi db 'hi',0       cmd_parts db 'parts',0       cmd_time db 'time',0       cmd_txt db 'txt',0              kbuf times 64 db 0       buf1 times 13 db 0       buf2 times 13 db 0       buf3 times 13 db 0       buf4 times 13 db 0       pbuf times 80 db 0       arg2dne db 0       fname1 times 13 db 0       fname2 times 13 db 0       txoname times 13 db 0              scrbfc dw 0 ;byte count of screen buffer              bgfg db 0x0f ;bg/fg=blk/wht       js2nd dw 0x9e0 ;segment at end of jsec2              ptdat times 2 dw 0 ;partition data              lasdrv db 0 ;drive letter of last drive       curdrv db 0x61 ;drive letter of current drive - init is 'a'       txoflag db 0 ;       bign times 2 dw 0       bslba1 times 2 dw 0 ;32-bit sec# of bs of current drive       bslba2 times 2 dw 0 ;a copy of bslba1       clstr1 dw 0              times 0x600-($-$$) db 'k'              SECTION .text               mov si,0 ;location of this info packet in data seg.        mov word[si],16 ;packet size        mov word[si+2],1 ;# of sectors to load        mov word[si+4],0 ;offset - where to load sectors        mov word[si+6],js2nd ;segment - where to load sectors        mov word[si+8],0 ;starting absolute sector# in a quadword - mbr=0        mov word[si+10],0        mov word[si+12],0        mov word[si+14],0        mov dl,0x80 ;drive number        mov ah,0x42 ;extended read         int 0x13               mov ax,js2nd        mov es,ax        mov di,454 ;point to 32-bit sector # of 1st part.        mov ax,word[es:di]        mov word[ptdat],ax        mov ax,word[es:di+2]        mov word[ptdat+2],ax              mainloop:        mov ah,0        int 0x16 ; wait for keyboard i/p        mov di,ptdat        mov si,0 ;location of this info packet in data seg.        mov word[si],16 ;packet size        mov word[si+2],32 ;# of sectors to load - root dir.        mov word[si+4],0 ;offset - where to load sectors        mov word[si+6],js2nd ;segment - where to load sectors        mov ax,word[ds:di]        mov word[si+8],ax        mov ax,word[ds:di+2]         mov word[si+10],ax        add word[si+8],513 ;points to 1st sector of root dir.        adc word[si+10],0        mov word[si+12],0        mov word[si+14],0        mov dl,0x80 ;drive number        mov ah,0x42 ;extended read         int 0x13        jnc ok        mov cx,2       hxob: ;call with binary in ax, #digits in cx        rol ax,4 ;put hi hex digit on right        push ax ;save rol'd ax        and al,0x0f ;masks digit on right        add al,'0' ;0 thru 9        cmp al,'9'        jbe xo3x        add al,0x7 ;A thru F       xo3x: mov ah,0xe         int 0x10 ;write to screen        pop ax ;rol'd version of ax        dec cx        jnz hxob ;one digit per loop       ok: jmp mainloop              times 0x1A00-($-$$) db 'z' ;0x1A00=13x512       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;              --- SoupGate-Win32 v1.05        * Origin: you cannot sedate... all the things you hate (1:229/2)    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca