[Copyright 1999,2002 Frank Durda IV, All Rights Reserved. Mirroring of any material on this page in any form is expressly prohibited. The official web site for this material is: http://nemesis.lonestar.org Contact this address for use clearances: clearance at nemesis.lonestar.org Comments and queries to this address: web_software_2011 at nemesis.lonestar.org]
MISOSYS EDAS-4.3 04/19/99 21:10:46 CLICK/FLT - LS-DOS 6.3 Page 00001 00001 ;CLICK/ASM - Device Click Filter 00003 ; 00004 ; 00005 IF @MOD4 0048 00006 TONE EQU 48H 0018 00007 LEN EQU 18H 0090 00008 SNDPORT EQU 90H 00009 ENDIF 00010 IF @MOD2 00011 LEN EQU 180H ;Length 00012 SNDPORT EQU 0A0H 00013 ENDIF 00014 ; 0000 00015 *GET SVCMAC:3 ;SVC Macro equivalents 00016 ;SVCMAC/ASM - LS-DOS Version VI 00017 *LIST OFF 00409 *LIST ON 0000 00411 *GET VALUES:3 ;Misc. equates 00412 ;VALUES/ASM - Version 6 00413 *LIST OFF 00440 *LIST ON 0000 00441 *GET BUILDVER:3 ;<631> 00442 ; 00443 ; Buildver/asm is a bit of a kludge since not all utilities can load 00444 ; equates from LDOS60 and still compile. LOWCORE and everybody else 00445 ; relies on this setting, and it eventually ends up in LDOS60/EQU 00446 ; for programs that can use that. 00447 ; FFFF 00448 @BLD631 EQU -1 ;<631>Build 631 distribution (LEVEL 1B) 00449 ; These switches activate patches made since the 1B release. 00450 ; It is important that all earlier patches be enabled when a higher 00451 ; patch is enabled. 00452 ; Patches C thru F were published in TMQ IV.iv, page 32 (NOTE: the 00453 ; patch addresses listed for SPOOL in SPOOL1/FIX are 19H high.) FFFF 00454 @BLD631C EQU -1 ;<631>Apply 1C patches (SETKI) FFFF 00455 @BLD631D EQU -1 ;<631>Apply 1D patches (DIR) FFFF 00456 @BLD631E EQU -1 ;<631>Apply 1E patches (DIR & MEMDISK/DCT) FFFF 00457 @BLD631F EQU -1 ;<631>Apply 1F patches (SPOOL) 00458 ; Patches G and H were published in TMQ V.i, pages 10 and 18/19. FFFF 00459 @BLD631G EQU -1 ;<631>Apply 1G patches (//KEYIN,DIR,DO *) FFFF 00460 @BLD631H EQU -1 ;<631>Apply 1H patches (MEMORY) 00461 ; 00462 ;End of BUILDVER/ASM 0000 00463 *GET COPYCOM:3 ;Copyright messages 00464 ; COPYCOM - File for Copyright COMment block 00465 ; 0000 00466 *GET BUILDVER/ASM:3 00467 ; 00468 ; Buildver/asm is a bit of a kludge since not all utilities can load 00469 ; equates from LDOS60 and still compile. LOWCORE and everybody else 00470 ; relies on this setting, and it eventually ends up in LDOS60/EQU 00471 ; for programs that can use that. 00472 ; FFFF 00473 @BLD631 EQU -1 ;<631>Build 631 distribution (LEVEL 1B) 00474 ; These switches activate patches made since the 1B release. 00475 ; It is important that all earlier patches be enabled when a higher 00476 ; patch is enabled. 00477 ; Patches C thru F were published in TMQ IV.iv, page 32 (NOTE: the 00478 ; patch addresses listed for SPOOL in SPOOL1/FIX are 19H high.) FFFF 00479 @BLD631C EQU -1 ;<631>Apply 1C patches (SETKI) FFFF 00480 @BLD631D EQU -1 ;<631>Apply 1D patches (DIR) FFFF 00481 @BLD631E EQU -1 ;<631>Apply 1E patches (DIR & MEMDISK/DCT) FFFF 00482 @BLD631F EQU -1 ;<631>Apply 1F patches (SPOOL) 00483 ; Patches G and H were published in TMQ V.i, pages 10 and 18/19. FFFF 00484 @BLD631G EQU -1 ;<631>Apply 1G patches (//KEYIN,DIR,DO *) FFFF 00485 @BLD631H EQU -1 ;<631>Apply 1H patches (MEMORY) 00486 ; 00487 ;End of BUILDVER/ASM 00488 IF @BLD631 00490 ELSE 00491 COM '<*(C) 1982,3,4,6 by LSI*>' 00492 ENDIF 00493 ; 2400 00494 ORG 2400H 00495 ; 00496 START 2400 00497 @@CKBRKC 2400+3E6A 00498 LD A,106 2402+EF 00499 RST 40 2403 2804 00500 JR Z,STARTA ;Continue if no BREAK 2405 21FFFF 00501 LD HL,-1 ; set up abort RET 2408 C9 00502 RET 00503 ; 2409 ED730B25 00504 STARTA LD (EXIT+1),SP ;Save stack for error exit 240D CD1724 00505 CALL DOINIT ;Do initialization 2410 CD9624 00506 CALL INSTFLT ;Relocate/install filter 2413 210000 00507 NORMEX LD HL,0 ;Good exit 2416 C9 00508 RET 00509 ; 00510 ; Xfer DCB ptr to IX & stuff addrs' in driver 00511 ; 2417 D5 00512 DOINIT PUSH DE ;DE => DCB+0 2418 DDE1 00513 POP IX ;Xfer to IX 241A ED535F24 00514 LD (DCB),DE ;Xfer into header 00515 ; 00516 ; Sign-on 00517 ; 241E E5 00518 PUSH HL 241F 215125 00519 LD HL,HELLO$ ;Sign on message 2422 CDEC24 00520 CALL DSPLY 00521 ; 00522 ; Check PARMS and if entry from SET command 00523 ; 2425 111125 00524 LD DE,PRMTBL ;Point to parms 2428 E1 00525 POP HL ;Recover cmdline posn 2429 00526 @@PARAM ;Parse the parms 2429+3E11 00527 LD A,17 242B+EF 00528 RST 40 242C C2F224 00529 JP NZ,IOERR ;Exit on parm error 00530 ; 242F 00531 @@FLAGS ;IY => System Flags Base 242F+3E65 00532 LD A,101 2431+EF 00533 RST 40 2432 FDCB025E 00534 BIT 3,(IY+'C'-'A') ;System request? 2436 CAFD24 00535 JP Z,VIASET ;"Install with SET 00536 ; 00537 ; Before anything - Make sure hi-mem is avail 00538 ; 2439 FDCB0246 00539 BIT 0,(IY+CFLAG$) ;High memory available ? 243D C20125 00540 JP NZ,CANT ;No - display error 00541 ; 00542 ; Set up filter for CHAR if entered 00543 ; 2440 110000 00544 CHARPRM LD DE,00 ;Char parm lands here 2443 7A 00545 LD A,D ;Check if entered and 2444 BB 00546 CP E ; is normal character 2445 C8 00547 RET Z ;Done if not entered 2446 FE00 00548 CP 0 ;Check is MSB is altered 2448 3E2C 00549 LD A,44 ;Init "Parameter error 244A C2F224 00550 JP NZ,IOERR ;Bad if so 00551 ; 244D 53 00552 LD D,E ;Set up CP nn 244E 1EFE 00553 LD E,0FEH ;Reverse it and 2450 ED537424 00554 LD (CKCHAR),DE ; put it in the filter 2454 C9 00555 RET 00556 ;*=*=* 00557 ; Actual CLICK filter Code 00558 ;*=*=* 2455 180C 00559 HEADER JR FILTER 2457 0000 00560 OLDHI DW 0 ;HIGH$ before CLICK 2459 05 00561 DB 5,'CLICK' 43 4C 49 43 4B 245F 0000 00562 DCB DW $-$ ;DCB pointing to CLICK 2461 0000 00563 SPARE DW 0 ;System wants it 00564 ; 00565 ; Is there a character here? 00566 ; 2463 DD2A5F24 00567 FILTER LD IX,(DCB) ;P/u DCB address 2467 3806 00568 JR C,NOTCTL ;Go if Get 2469 2804 00569 JR Z,NOTCTL ; or Put 246B 00570 IS_CTL @@CHNIO ;Pass the CTL call 246B+3E14 00571 LD A,20 246D+EF 00572 RST 40 246E C9 00573 RET 246F 00574 NOTCTL @@CHNIO ;Go to next in line 246F+3E14 00575 LD A,20 2471+EF 00576 RST 40 2472 C0 00577 RET NZ ;None - RETurn NZ 00578 ; 00579 ; Generate short Click 00580 ; 2473 F5 00581 SOUND PUSH AF ;Save registers 2474 0000 00582 CKCHAR DW 00 ;Space for a CP instruct 2476 201C 00583 JR NZ,POPAF ; exit if CP above fails 2478 C5 00584 SNDNOW PUSH BC 2479 D5 00585 PUSH DE 00586 IF @MOD2 00587 LD BC,LEN ;Duration 00588 LD A,-1 ;ON value 00589 OUT (SNDPORT),A ;Turn on sound 00590 LD A,16 ;Svc @PAUSE 00591 RST 28H ;Delay 00592 XOR A ;OFF value 00593 OUT (SNDPORT),A ;Turn off sound 00594 ENDIF 00595 ; 00596 IF @MOD4 00597 ; 247A 111848 00598 STFVALS LD DE,TONE<8!LEN ;D = Tone, E = Length 247D 3E00 00599 LD A,0 ;Init on/off toggle 247F 0E90 00600 LD C,SNDPORT ;Point to port 00601 ; 00602 ; ON portion 00603 ; 2481 3C 00604 DURLP INC A ;Hold output high 2482 ED79 00605 OUT (C),A ; for count of (B) 2484 42 00606 LD B,D ;Play tone 2485 10FE 00607 DJNZ $ 00608 ; 00609 ;OFF portion 00610 ; 2487 3D 00611 DEC A ; for count of (B) 2488 ED79 00612 OUT (C),A 248A 42 00613 LD B,D ;Hold output low for 248B 10FE 00614 DJNZ $ 00615 ; 248D 1D 00616 DEC E ;Dec the duration 248E 20F1 00617 JR NZ,DURLP 2490 10FE 00618 DJNZ $ ;Hold for 256 count 00619 ENDIF 00620 ; 2492 D1 00621 POP DE ;Restore regs 2493 C1 00622 POP BC 2494 F1 00623 POPAF POP AF 2495 C9 00624 RET ;And RETurn 00625 ; 0041 00626 LENGTH EQU $-HEADER ;Length of Filter 00627 ; 00628 ; INSTFLT - Relocate & Install Filter 00629 ; 2496 DD360047 00630 INSTFLT LD (IX+0),47H ;Set Filter,Ctl,Get,Put 00631 ; 00632 ; Pick up Old HIGH$ and save in driver 00633 ; 249A 210000 00634 LD HL,0 ;Get HIGH$ 249D 45 00635 LD B,L 249E 00636 @@HIGH$ 249E+3E64 00637 LD A,100 24A0+EF 00638 RST 40 24A1 225724 00639 LD (OLDHI),HL ;Stuff into header 00640 ; 00641 ; Calculate New HIGH$ & stuff into DCB 00642 ; 24A4 014100 00643 LD BC,LENGTH ;Length of driver 24A7 C5 00644 PUSH BC ;Save length 24A8 B7 00645 OR A 24A9 ED42 00646 SBC HL,BC ;HL => New HIGH$ 24AB 00647 @@HIGH$ ;(B=0) set new HIGH$ 24AB+3E64 00648 LD A,100 24AD+EF 00649 RST 40 24AE 23 00650 INC HL ;Pt to driver 24AF DD7501 00651 LD (IX+1),L ;Stuff driver address 24B2 DD7402 00652 LD (IX+2),H ; into DCB 00653 ; 00654 ; Calc offset between source & dest for relo 00655 ; 24B5 115524 00656 LD DE,HEADER ;Start of driver 24B8 E5 00657 PUSH HL ;Save Source & Dest ptrs 24B9 D5 00658 PUSH DE 24BA B7 00659 OR A ;Clear carry 24BB ED52 00660 SBC HL,DE ;Get offset 00661 ; 00662 ; Relocate internal references in driver 00663 ; 24BD DD21DC24 00664 LD IX,RELTBL ;Point to relocation tbl 24C1 44 00665 LD B,H ;Move to BC 24C2 4D 00666 LD C,L 24C3 DD6E00 00667 RLOOP LD L,(IX) ;Get address to change 24C6 DD6601 00668 LD H,(IX+1) 24C9 7C 00669 LD A,H 24CA B5 00670 OR L 24CB 2819 00671 JR Z,RELDUN 24CD 5E 00672 LD E,(HL) ;P/U address 24CE 23 00673 INC HL 24CF 56 00674 LD D,(HL) 24D0 EB 00675 EX DE,HL ;Offset it 24D1 09 00676 ADD HL,BC 24D2 EB 00677 EX DE,HL 24D3 72 00678 LD (HL),D ;Put it back 24D4 2B 00679 DEC HL 24D5 73 00680 LD (HL),E 24D6 DD23 00681 INC IX 24D8 DD23 00682 INC IX 24DA 18E7 00683 JR RLOOP ;Loop till done 00684 ; 00685 ; Relocation Table for Driver 00686 ; 24DC 6524 00687 RELTBL DW FILTER+2,0,0,0,0 0000 0000 0000 0000 00688 ; 00689 ; Transfer Filter code to high memory 00690 ; 24E6 E1 00691 RELDUN POP HL ;HL => Source DE => Dest 24E7 D1 00692 POP DE 24E8 C1 00693 POP BC ;BC = length of filter 24E9 EDB0 00694 LDIR ;Block move 24EB C9 00695 RET ;RETurn 00696 ; 00697 ; DSPLY - Display a string 00698 ; 24EC D5 00699 DSPLY PUSH DE ;Save DE 24ED 00700 @@DSPLY ;Display it 00701 IFEQ 00H,1 00702 LD HL, 00703 ENDIF 24ED+3E0A 00704 LD A,10 24EF+EF 00705 RST 40 24F0 D1 00706 POP DE ; 24F1 C8 00707 RET Z ;Return if good 00708 ; 00709 ; IOERR - Any fatal Errors come here 00710 ; 24F2 6F 00711 IOERR LD L,A ;Xfer error # to HL 24F3 2600 00712 LD H,0 ; 24F5 F6C0 00713 OR 0C0H ;Short msg & RETurn 24F7 4F 00714 LD C,A 24F8 00715 @@ERROR ;Display error 24F8+3E1A 00716 LD A,26 24FA+EF 00717 RST 40 24FB 180D 00718 JR EXIT ;Go to exit routine 00719 ; 00720 ; Error Handler 00721 ; 24FD 213C25 00722 VIASET LD HL,VIASET$ ;"Install with Set 2500 DD 00723 DB 0DDH 2501 212225 00724 CANT LD HL,CANT$ ;"No memory space 00725 ; 2504 00726 @@LOGOT ;Log error 00727 IFEQ 00H,1 00728 LD HL, 00729 ENDIF 2504+3E0C 00730 LD A,12 2506+EF 00731 RST 40 2507 21FFFF 00732 LD HL,-1 ;Set abort code 00733 ; 250A 310000 00734 EXIT LD SP,$-$ ;P/u original SP 250D 00735 @@CKBRKC ;Clear out break 250D+3E6A 00736 LD A,106 250F+EF 00737 RST 40 2510 C9 00738 RET ; and RETurn 00739 ; 2511 43 00740 PRMTBL DB 'CHAR ' 48 41 52 20 20 2517 4124 00741 DW CHARPRM+1 2519 43 00742 DB 'C ' 20 20 20 20 20 251F 4124 00743 DW CHARPRM+1 2521 00 00744 NOP ;End of table 00745 ; 00746 ; 2522 4E 00747 CANT$ DB 'No memory space available',CR 6F 20 6D 65 6D 6F 72 79 20 73 70 61 63 65 20 61 76 61 69 6C 61 62 6C 65 0D 253C 4D 00748 VIASET$ DB 'Must install via SET',CR 75 73 74 20 69 6E 73 74 61 6C 6C 20 76 69 61 20 53 45 54 0D 00749 ; 2551 43 00750 HELLO$ DB 'CLICK' 4C 49 43 4B 2556 00751 *GET CLIENT:3 00752 ;CLIENT/ASM - File to establish sign-on headers 00753 ; and version numbers. 00754 ; 00755 ; EACH STRING SHOULD CONTAIN ONLY 63 CHARACTERS !! 00756 ; 00757 IF @BLD631 00758 ; 12345678901234567890123456789012345678901234567890 2556 20 00759 DB ' - 6.3.1 - Copyright 1982/83/84/86/90 by MISOSYS, ';<631> 2D 20 36 2E 33 2E 31 20 2D 20 43 6F 70 79 72 69 67 68 74 20 31 39 38 32 2F 38 33 2F 38 34 2F 38 36 2F 39 30 20 62 79 20 4D 49 53 4F 53 59 53 2C 20 2588 49 00760 DB 'Inc., ',10 ;<631> 6E 63 2E 2C 20 20 20 20 20 20 20 0A 00761 ELSE 00762 DB ' - 6.3.0 - Copyright 1982/83/84/86 by Logical Syst' 00763 DB 'ems, Inc. ',10 00764 ENDIF 00765 ; 00766 ; DB 'All Rights Reserved. Licensed 1982/83/84 to Tandy ' 00767 ; DB 'Corporation.',10,13 00768 ; 00769 ; DB 'All Rights Reserved. Beta-TEST Level/AD, DO NOT DI' 00770 ; DB 'STRIBUTE !! ',10,13 00771 ; DB 'All Rights reserved by LSI, 8970 N. 55th St. Milwa' 00772 ; DB 'ukee, Wisc. ',10,13 2595 41 00773 DB 'All Rights Reserved. Unauthorized duplication is p' 6C 6C 20 52 69 67 68 74 73 20 52 65 73 65 72 76 65 64 2E 20 55 6E 61 75 74 68 6F 72 69 7A 65 64 20 64 75 70 6C 69 63 61 74 69 6F 6E 20 69 73 20 70 25C7 72 00774 DB 'rohibited. ',10,13 6F 68 69 62 69 74 65 64 2E 20 20 0A 0D 00775 ; 2400 00776 END START 2400 is the transfer address 00000 Total errors
[Copyright 1999,2002 Frank Durda IV, All Rights Reserved. Mirroring of any material on this page in any form is expressly prohibited. The official web site for this material is: http://nemesis.lonestar.org Contact this address for use clearances: clearance at nemesis.lonestar.org Comments and queries to this address: web_software_2011 at nemesis.lonestar.org]