--------------- FIDO MESSAGE AREA==> TOPIC: 145 ASSEMBLY LANG. Ref: E5S00022Date: 05/18/97 From: PHIL QUINTON Time: 09:36am \/To: BRIAN MCCLOUD (Read 2 times) Subj: 16.7m 640 x 480 BM> If you've got VESA, you can... function 4F02h, mode 112h... BM> That's probably not the only way, however... probably for BM> drawing the pixels, you'd need to place 3 numbers (R,G,B), BM> and the calculation of when you need to switch banks would be BM> a bit different most likely... How do I get a list of these modes, and how to use them? -=> Phil<=- --- * Origin: Unix isn't an Operating System, It's a way of life! (2:250/607.96) --------------- FIDO MESSAGE AREA==> TOPIC: 145 ASSEMBLY LANG. Ref: E5S00023Date: 05/21/97 From: DAVID SIMAL Time: 09:32am \/To: ALL (Read 2 times) Subj: INT 6 & INT 7 Bonjour All ! Can someone help me understand how works the CPU generated interrupts 06 & 07 (INVALID OPCODE & NO PROCESSOR EXTENSION AVAILIBLE), I heard that it is possible to emulate other instructions/processor using those interrupts, for example, when reprogramming int 06, it is possible, for example, to emulate pentium instructions on a 486, or even MMX instructions on a pentium processor. The int 07 can be used to emulate a math coprocessor when it is not present... Any information or even book reference would be great. Amitis, David. --- GoldED/386 2.50+ * Origin: OVER-BBS, +32-81-732.763, 21h30-6h00 (2:293/3407) --------------- FIDO MESSAGE AREA==> TOPIC: 145 ASSEMBLY LANG. Ref: E5S00024Date: 05/20/97 From: FRDRIC LHOEST Time: 10:47pm \/To: REJEAN LAMBERT (Read 2 times) Subj: Re: DOS in a window truth Turbo Pascal .22:47:0605/20/97 Hi Rejean Lambert, Subject: Re: DOS in a window truth Turbo Pascal . FL>> Does anybody know how to create a MS-DOS window truth Pascal without FL>> destroy the screen ? RL> You have to hook the display interrupt (int 10h) and use Pascal's own RL> routines. In other words, you have to make the program use WRITELN RL> instead of the usual dos call, that way, Pascal will shove the data inside RL> the window, just like it does for your own program. Right! it seems to be that but could you say more ... i don't know how make this :( Maybe you could Netmail me in priviate @2:293/3407.24. I Think that was beter for the other who know already all of this little stuff ! To launch the chat, I want to say : how can I execute an ARJ-DOS call in a window like that without kill that window => ... window(2,10,78,18); {This windows must'n NEVER modifyed} swapvectors; exec('arj.exe','-x file.arj'); {But this call kill it :( } swapvectors; ... So I must hook the display, ok but if you have an idea on how make this I'm listening attentively :)) Yours sincerely, Frdric Lhoest P.S. : Sorry for my bad English but .... I do what I can ;)) =>!<= Fido : 2:293/3407.24 - URL : http://vector.base.org ___ Terminate 4.00/Pro * Origin: OVER BBS Namur, Be, from 21h to 6h : +032 81/73.48.2 (2:293/3407.24) --------------- FIDO MESSAGE AREA==> TOPIC: 145 ASSEMBLY LANG. Ref: E5S00025Date: 05/22/97 From: JAMES VAHN Time: 04:52pm \/To: BARRY BLOCK (Read 2 times) Subj: Re: diffuse.asm From: jvahn@short.circuit.com (James Vahn) Barry Block wrote: > Hello all, I asked for a timer routine with better resolution than 1/18 > sec. mov cx, 5 delay: out 4Fh, al loop delay > In the meantime I rewrote the program and renamed it to something more > appropriate. Anyone want to share a screen clearing routine? This only works properly in the Northern Hemisphere. ;---------------------------------------------------------------- ; Spiral.asm - Author unknown. .model tiny .code public _Spiral start: call _Spiral mov ax,4C00h int 21h _Spiral proc far push ax bx cx dx es ds si di push cs pop ds mov ax,0B800h mov es,ax ;Set ES = Screen mov word ptr ds:[Spiral_Count],0Ch mov word ptr ds:[Starting_Point],0D0h Spiral_Loop: mov ax,ds:[Starting_Point] mov ds:[Step_Count],ax One_Step_Loop: mov word ptr ds:[Horiz_Line_Length],39h mov word ptr ds:[Vert_Line_Length],1 mov di,798h mov ax,ds:[Spiral_Count] mov ds:[Line_Count],ax Move_Horiz_Line_Left: mov cx,ds:[Horiz_Line_Length] dec cx push ds push es pop ds mov si,di add si,2 cld rep movsw pop ds mov cx,ds:[Vert_Line_Length] push ds push es pop ds mov si,di sub si,0A0h mov ax,0A2h cld Move_Vert_Line_Up: movsw sub di,ax sub si,ax loop Move_Vert_Line_Up Move_Horiz_Line_Right: pop ds mov cx,ds:[Horiz_Line_Length] push ds push es pop ds mov si,di sub si,2 std rep movsw pop ds mov cx,ds:[Vert_Line_Length] inc cx push ds push es pop ds mov si,di add si,0a0h mov ax,0A2h std Move_Vert_Line_Down: movsw add di,ax add si,ax loop Move_Vert_Line_Down pop ds add word ptr ds:[Horiz_Line_Length],2 add word ptr ds:[Vert_Line_Length],2 dec word ptr ds:[Line_Count] jnz Move_Horiz_Line_Left dec word ptr ds:[Step_Count] jz Done_One_Spiral jmp One_Step_Loop Done_One_Spiral: sub word ptr ds:[Starting_Point],8 dec word ptr ds:[Spiral_Count] jz Done_Spiral jmp Spiral_Loop Done_Spiral: pop di si ds es dx cx bx ax ret Starting_Point dw ? Spiral_Count dw ? Horiz_Line_Length dw ? Vert_Line_Length dw ? Step_Count dw ? Line_Count dw ? endp _Spiral end start ... The Moon is Full --- ifmail v.2.10-tx8.2 * Origin: (jvahn@short.circuit.com) (1:346/15.1) --------------- FIDO MESSAGE AREA==> TOPIC: 145 ASSEMBLY LANG. Ref: E5S00026Date: 05/22/97 From: BRIAN MCCLOUD Time: 05:40am \/To: DAVID KIRSCHBAUM (Read 2 times) Subj: Bosskey.Asm - sysreq. DK>MB>>From: Mervyn Baldwin DK> > According to my reference ("PC Interrupts" by Ralf Brown & Jim DK> > Kyle), all registers except for CS:IP get destroyed on return DK> > from an int 2Eh... however you could do something like this: DK> > ****** DK> > .DATA DK> > SaveSS dw ? DK> > SaveSP dw ? DK> > SaveBP dw ? DK> > .CODE DK> > SafeInt2Eh: DK> > MOV [SaveSS], SS DK> > MOV [SaveSP], SP DK> > MOV [SaveBP], BP DK> > INT 2Eh DK> > CLI ; make sure the restoration of the registers in DK> > ;uninterrupted DK> > MOV AX, SEG _DATA DK> > MOV DS, AX DK> > MOV SP, [SaveSP] DK> > MOV SS, [SaveSS] DK> > MOV BP, [SaveBP] DK> > STI ; registers restored, so interrupts OK DK> > RET DK> > ****** DK> > Normally you might PUSH registers to preserve them before an DK> > interrupt, but since SS:SP is also destroyed, you have to take DK> > different precautions. DK> > ((Cloud)) DK>To simplify even further, you could have SaveSS, SaveSP, SaveBP all in the DK>Code segment (rather than in the _DATA segment). In your example above, DK>you have NOT saved the caller's DS and have effectively blown it away. DK>Doing it my way, you don't need to touch any segment registers. DK>.CODE DK>SaveSS dw 0 DK>SaveSP dw 0 DK>SaveBP dw 0 DK>SafeInt2Eh: DK> MOV CS:[SaveSS], SS DK> MOV CS:[SaveSP], SP DK> MOV CS:[SaveBP], BP DK> INT 2Eh DK> CLI ; make sure the restoration of the registers is DK>;uninterrupted DK> MOV SP, CS:[SaveSP] DK> MOV SS, CS:[SaveSS] DK> MOV BP, CS:[SaveBP] DK> STI ; registers restored, so interrupts OK DK> RET You still need to restore DS! This part might not need it, but much of the rest of your program will probably need to know where the data segment is... If you're doing this in protected mode, you'd probably get a GPF the next ime you tried to access something in the data segment. There are three ways that the DS register can be restored: 1. The way I showed above, which make your assembler add a reference in the appropriate FIXUPP record so that the place in your code where you specified it will be replaced at runtime by the appropriate value for DS. 2. Declare another code segment variable, SaveDS, and do the save & restore y your method. 3. You can PUSH DS, then save the stack... when the stack is restored, you an pop DS... You could also do similarly for BP... and if you're calling this from a C program, you might want to preserve SI and DI also. ((Cloud)) MauveCloud@juno.com * OLX 2.2 * Corruption. The most infallible symptom of liberty. --- PCBoard (R) v15.3/M 10 * Origin: Next time, Dial The Wrong Number! (209) 943-1880 (1:208/205) --------------- FIDO MESSAGE AREA==> TOPIC: 145 ASSEMBLY LANG. Ref: E5S00027Date: 05/22/97 From: TOM ST DENIS Time: 10:04pm \/To: BARRY BLOCK (Read 2 times) Subj: Re: Timer BB> Hello all, I asked for a timer routine with better resolution than 1/18 sec BB> In the meantime I rewrote the program and renamed it to something more BB> appropriate. Anyone want to share a screen clearing routine? I heard that the keyboard makes a tick every 10 micro secs or something, i aw it on the PMODE page... --- GEcho 1.00 * Origin: 872's Home Bbs (613)831-3390 (1:163/133) --------------- FIDO MESSAGE AREA==> TOPIC: 145 ASSEMBLY LANG. Ref: E5S00028Date: 05/22/97 From: TOM ST DENIS Time: 10:04pm \/To: ALL (Read 2 times) Subj: huffman Does anyone have an ASM huffman (encode decode) routine? Please please please? --- GEcho 1.00 * Origin: 872's Home Bbs (613)831-3390 (1:163/133) --------------- FIDO MESSAGE AREA==> TOPIC: 145 ASSEMBLY LANG. Ref: E5S00029Date: 05/18/97 From: DORAN MOPPERT Time: 03:02am \/To: JAMES VAHN (Read 2 times) Subj: Intel and AT&T JV> .MSG: JV> .string "This program will loop forever\n" JV> .CHK: JV> .string "Shouldn't get here\n" JV> movl $181, %edx /* 181 chars to write, no strlen :-( */ Couldn't you use `movl $.CHK - $.MSG'? Actually, no, stupid question - alignment difficulties ... Can you do the equivalent of sticking in a tasm `msgend equ $ - msg' with gas? ... :\ \_ | __/\|____/\_____/ __\______/ | |\ \_______/\_ --- FMail/386 1.20 * Origin: Comms Barrier BBS +61.3.9585.1112, +61.3.9583.6119 (3:632/533) --------------- FIDO MESSAGE AREA==> TOPIC: 145 ASSEMBLY LANG. Ref: E5S00030Date: 05/18/97 From: DORAN MOPPERT Time: 03:04am \/To: DORAN MOPPERT (Read 2 times) Subj: External Programs DM> cmdtail db ' /t /p',0dh whoops, sorry - first byte should be the length of the string: cmdtail db 6,' /t /p',0dh But Flemming already picked that up =) .. sorry about that. ... : \____ |----' _ _\ \_ _ \_ | |---| \_ _/_ --- FMail/386 1.20 * Origin: Comms Barrier BBS +61.3.9585.1112, +61.3.9583.6119 (3:632/533)