TIP: Click on subject to list as thread! ANSI
echo: 80xxx
to: SYLVAIN LAUZON
from: DENIS BOYLES
date: 1997-03-28 18:15:00
subject: Interrupts

SL>slut Denis!
How dare you call me a slut! :) I imagine you meant to say salut?
SL> Yes, it actually stoped the transfer. But resume when i exit from the TSR
SL> > On the other hand, I my blinky program is installed, and I
SL> > try a download, both go on as normal. The transfer would still take 
place,
SL> > and the LED would blink as well. Though is this is slightly different 
then
SL> > activating a TSR program.
SL> So, could you send your program here that can make a download continue as
SL> normal. None of my batch of tsrs i had allows background transfer.
I posted it to you in another message, but I'll post it again, perhaps you
didn't receive the program. The program just hooks the timer ticker and
toggles the Scroll-Lock LED on/off about every second.
;--------------------------------------------------------------------------
;[BLINKY.ASM] - Public Domain by Denis Boyles
;             ! Arrowsoft Assembler v1.00D (MASM v3.0)
;             ? TSR that blinks ScrollLock LED on/off approx. every second
TIMEOUT     EQU 18                     ;blink timeout, 18/18.2 = approx 1s
LED         EQU 16                     ;Scroll-Lock LED bit
DOS         EQU 21h                    ;DOS services interrupt
PRG SEGMENT
    ASSUME CS:PRG,DS:PRG
    ORG 0100h
MAIN:
    jmp     INIT                       ;jump to install routine
OldTck      dd ?                       ;original vector for timer ticker
count       db TIMEOUT                 ;count down counter
NewTck:                                ;our timer ticker interrupt
    push    AX                          ;save AX to stack
    push    ES                          ;save ES to stack
    mov     AL,CS:[count]               ;AL = current tick count
    or      AL,AL                       ;test for zero?
    jz      NT0                         ;if zero then time to toggle LED
    dec     CS:[count]                  ;otherwise, decrement countdown
    jmp     NT1                         ;jump over toggle code to exit
NT0:                                   ;toggle LED and reset counter
    mov     CS:[count],TIMEOUT          ;set counter back to TIMEOUT value
    xor     AX,AX                       ;zero out AX and use it to
    mov     ES,AX                       ;set ES to access BIOS data
    xor     byte ptr ES:[417h],LED      ;toggle LED via BIOS keyboard byte
NT1:                                   ;exit interrupt handler
    pop     ES                          ;restore ES
    pop     AX                          ;restore AX
    jmp     CS:[OldTck]                 ;chain to previous int via jump
INIT:                                  ;TSR initialization routine
    mov     AX,351Ch                    ;DOS get vector for 1Ch
    int     DOS                         ;call DOS to get ticker vector
    mov     word ptr [OldTck][2],ES     ;save vector segment into memory
    mov     word ptr [OldTck][0],BX     ;save vector offset into memory
    mov     AX,251Ch                    ;DOS set vector for 1Ch
    mov     DX,offset NewTck            ;DS:DX -> new handler
    int     DOS                         ;call DOS to set new handler
    mov     CL,04h                      ;shift count = 4
    mov     DX,offset INIT              ;all code upto INIT is kept resident
    shr     DX,CL                       ;convert to paragraphs via shifting
    inc     DX                          ;plus one more paragraph for safety
    mov     AX,3100h                    ;DOS TSR program with code (0)
    int     DOS                         ;call DOS to TSR program
PRG ENDS
    END MAIN
;--------------------------------------------------------------------------
Using this program as a demo, you should be able to see the LED blink and
the file download. To you it would look like the program is `mult-tasking'
but really one things happening at a time.
SL>Thanks so much for giving ideas!
You're welcome, hope they helped in one way or another.
Cheers,
  Denis Boyles
 * OLX 2.1 TD * Back Up My Hard Drive? I Can't Find The Reverse Switch!
--- Maximus/2 3.01
---------------
* Origin: Frog Hollow Port Moody BC 604-469-0264/0284 (1:153/290)

SOURCE: echomail via exec-pc

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.