; Program: ZCPR3 -- Rapid Install Program (Z-RIP) ; Author: Paul Pomerleau ; Version: 1.1 ; Date: June 15, 1987 ; Copyright 1986, Paul Pomerleau ; Version 1.1: Made ENV search start at BDOS + made Type 3 ENV's ok. version equ 11 BDOS equ 5 DMA equ 80h ext z3init, getmuser, codend, pafdc entry: jr start defb version TARGET: defb 'Z3ENV' defb 3 ; Type-3 environment envaddr: Z3ENV: dw 0f300h dw entry START: ld hl,HEADER call PRINTHL call FINDZ3 ld hl,(Z3ENV) call Z3INIT ld de,80h ld c,26 call BDOS ld a,(5dh) cp '/' ld hl,HELP jp z,PRINTHL cp ' ' jr z,NOTEMPTY ld hl,5dh ld de,MASK + 1 ld bc,8 ldir NOTEMPTY: call CODEND ld (NEXT),hl ld a,(5ch) ld (MASK),a ld (FCB),a ld a,(6dh) cp '?' jr nz,ONEUSER call GETMUSER ld b,a inc b LOOP: push bc dec b call SUSER call FIND pop bc djnz LOOP STOP: ld hl,CRLF jp PRINTHL ONEUSER: ld a,(5ch + 13) ld b,a call SUSER call FIND jr STOP SUSER: ld hl,USER call PRINTHL ld a,b call pafdc ld hl,COLON call PRINTHL ld e,b ld c,32 jp BDOS FIND: ld de,MASK ld c,17 call BDOS inc a ret z jr FIND2 FINDL: ld de,MASK ld c,18 call BDOS inc a jr z,PROCESS FIND2: dec a add a,a add a,a add a,a add a,a add a,a ld hl,DMA + 1 ld e,a ld d,0 add hl,de ld de,(NEXT) ld bc,11 ldir ld (NEXT),de jr FINDL PROCESS: ld hl,(NEXT) ld (hl),0 call CODEND ld (NEXT),hl CLOOP: ld a,(hl) or a ret z ld de,FCB + 1 ld bc,11 ldir push hl ld h,d ld l,e inc de ld (hl),0 ld bc,22 ldir ld hl,CHECKSTR call PRINTHL ld hl,FCB + 1 call PRINTHL ld de,FCB ld c,15 call BDOS inc a jr z,CONTINUE ld c,20 ld de,FCB call BDOS or a jr nz,CONTINUE ld de,TARGET ld hl,DMA + 3 ld b,5 CHECKL: ld a,(de) inc de cp (hl) inc hl jr nz,CONTINUE djnz CHECKL ld a,(DMA + 8) cp 2 jr z,INTENV ld hl,INSSTR call PRINTHL ld hl,(Z3ENV) ld (DMA + 9),hl ld hl,0 ld (FCB + 33),hl ld c,34 ld de,FCB call BDOS CONTINUE: pop hl jr CLOOP INTENV: ld hl,INTEMSG call PRINTHL jr CONTINUE PRINTHL: ld a,(hl) call ccout inc hl ld a,(hl) or a jr nz,PRINTHL ret CCOUT: push af push bc push de push hl ld hl,(1) ld de,9 add hl,de ld c,a call jphl pop hl pop de pop bc pop af ret JPHL: jp (hl) FINDZ3: ld hl,(6) FLOOP: ld de,103h FLOOP1: inc hl ld a,h or l jr z,NOENV ld a,(de) cp (hl) jr nz,FLOOP1 ld b,4 push hl FLOOP2: inc hl inc de ld a,(de) cp (hl) jr nz,NOMATCH djnz FLOOP2 pop de push de dec de dec de dec de ld hl,1bh add hl,de ld c,(hl) inc hl ld b,(hl) ld a,d cp b jr nz,NOMATCH ld a,e cp c jr nz,NOMATCH pop hl ld (Z3ENV),de ret NOMATCH: pop hl jr FLOOP NOENV: pop hl ld c,9 ld de,INVENV jp 5 HEADER: db 'ZCPR3 -- Rapid Install Program v ',version / 10 + '0' db '.',version mod 10 + '0',13,10,0 INVENV: db 10,'Cannot Find Environment Descriptor.$' HELP: db 10,' Finds and installs ZCPR3 programs on a specified DU or on entire disk',13,10 db 'with information from the ZCPR3 implementation in memory. No .ENV file',13,10 db 'is necessary.',13,10,10 db 'Syntax:',13,10 db ' Z-RIP [DU: or NDR:][AFN]',13,10 db 'or',13,10 db ' Z-RIP D:[AFN] * <-- For whole disk.',0 CRLF: db 13,10,0 USER: db 13,10,'User ',0 COLON: db ':',0 CHECKSTR: db 13,10,' Checking --> ',0 INSSTR: db ' <-- Installed.',0 INTEMSG: db ' <-- Internal ENV: Not Supported.',0 MASK: db 0,'????????COM' ds 24,0 FCB: db 0,' ' ds 24,0 NEXT: dw 0 end