🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.msdos.programmer
1 messages
1 total messages Started by vincent Wed, 04 Nov 1992 18:09
TSR not working
#40
Author: vincent
Date: Wed, 04 Nov 1992 18:09
97 lines
2216 bytes
Ok TSR freaks, why this litle one doesn't work

---------------------  snip snip -------------------------- makefile

CFLAGS = /Fc /Zi /f /Od /Gs /AS /W4 /nologo

main.exe : main.obj
	cl /Zi /Fm main.obj

.c.obj:
	cl /c $(CFLAGS) $(@B).c

---------------------  snip snip --------------------------- main.c

#include	<stdlib.h>
#include	<dos.h>
#include	<bios.h>

#define	CODESEG			_based(_segname("_CODE"))
#define MK_FP(seg,ofs)		((void _far *) ((((long)seg)<<16) + (long)ofs))
#define PARAGRAPHS(x)		((FP_OFF(x) + 15) >> 4)

typedef			void	(interrupt _far *INTVECT) ();

struct {
	INTVECT	old_timer;

	unsigned char _far * CODESEG tsrstack;

	int	oldSP,
		oldSS,
		oldDS,
		ds_save,
		seg_stack,
		off_stack,
		retadd,
		tick_me;
} CODESEG data;

void ctimer (void)
{
	data. tick_me++;
}

void _interrupt _far new_timer (void)
{
	_asm {
		mov	cs:data. oldSS, ss
		mov	cs:data. oldSP, sp
		mov	cs:data. oldDS, ds
				 		 ; Load new stack
		mov	ss, cs:data. seg_stack
		mov	sp, cs:data. off_stack
		mov	ds, cs:data. ds_save

		mov	bp, sp

		call	ctimer

		mov	ss, cs:data. oldSS
		mov	sp, cs:data. oldSP
		mov	ds, cs:data. oldDS

		mov	bp, sp
	}
	_chain_intr (data. old_timer);
}

void main ()
{
	unsigned int memtop, dumy = 0;

	data. tick_me = 0;

	_dos_freemem (*(short _far *) MK_FP (_psp, 0x2c));

	data. tsrstack = malloc (1024);
	data. tsrstack += 1024;

	data. seg_stack = FP_SEG (data. tsrstack);
	data. off_stack = FP_OFF (data. tsrstack);

	_asm mov cs:data. ds_save, ds

	memtop = data. ds_save + PARAGRAPHS (data. tsrstack) - _psp;

	_dos_setblock (memtop, _psp, &dumy);

	data. old_timer = _dos_getvect (0x08);
	_dos_setvect (0x08, new_timer);

	_dos_keep (0, memtop);
}

---------------------------------------------------------------------

vincent@datmuc.dat.de
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads