Date : Tue, 07 Aug 1984 06:41:00 MDT (Tue)
From : Richard Conn <RCONN@Simtel20.ARPA>
Subject: [decvax!mcnc!ecsvax!emigh: LDR Problem]
FYI -- This is an answer to that LDR anomaly. Will see that a change
is posted.
Rick
Date: Monday, 6 August 1984 12:10-MDT
From: decvax!mcnc!ecsvax!emigh at Berkeley
To: rconn at SIMTEL20.ARPA
cc: ecsvax!emigh at Berkeley
Re: LDR Problem
Original-From: Ted Emigh <emigh@ecsvax>
Location: Genetics and Statistics, N.C. State University
Address: {decvax akgua unc duke ihnp4}!mcnc!ecsvax!emigh
Arpanet: decvax!mcnc!ecsvax!emigh@BERKELEY.ARPA
References: Msg of 2 Aug 1984 14:06-MDT from decvax!mcnc!ecsvax!emigh
at Berkeley
Rick,
The program LDR.COM does not match LDR.MAC (both on SIMTEL20). I have made
a ZSID listing of LDR.COM,and have printed it next to the LDR.MAC listing
(forgive the difference in mnemonics, I can't locate DDT just now...).
ZSID Disassembly of LDR.MAC from SIMTEL20
LDR.COM from SIMTEL20
;
; Load Data Buffers from Environment
;
setdata:
LD HL,(0754) lhld envptr ; get environment descriptor address
LD (04DC),HL shld envadr
LD DE,0080 lxi d,80H ; pt to Z3TCAP
ADD HL,DE dad d
LD (04E8),HL shld tcapadr
CALL 073F call getrcp ; get RCP data
LD DE,04A6 lxi d,rcpdata ; load
CALL 02BB call sdload
CALL 0701 call getiop ; get IOP data
LD DE,04B2 lxi d,iopdata ; load
CALL 02BB call sdload
CALL 06F0 call getfcp ; get FCP data
LD DE,04BE lxi d,fcpdata ; load
CALL 02BB call sdload
lxi h,ndridat ; init NDR data in case no entry
lxi d,ndrdata
mvi b,9 ; 9 bytes (1-jmp, 5-ID, 2-adr, 1-size)
call moveb
CALL 072E call getndr ; get NDR data
mov a,h ; no NDR data?
ora l
rz
LD DE,04CA lxi d,ndrdata ; load and fall thru to sdload
CALL 02BB call sdload
DEC DE dcx d ; pt to entry count
LD A,(DE) ldax d ; get entry count
PUSH DE push d ; save ptr
LD H,00 mvi h,0 ; HL = value
LD L,A mov l,a
ADD HL,HL dad h ; *2
LD D,H mov d,h ; DE = value * 2
LD E,L mov e,l
ADD HL,HL dad h ; *4
ADD HL,HL dad h ; *8
ADD HL,HL dad h ; *16
ADD HL,DE dad d ; *18
LD A,H mov a,h ; /128
RLCA rlc
AND FE ani 0feh
LD H,L mov h,a
LD A,L mov a,l
RLCA rlc
AND 01 ani 1 ; A = value * 18 / 128
OR H ora h ; +1
INC A inr a ; get ptr
POP DE pop d ; save value
LD (DE),A stax d
RET ret
As you can see, the LDR.COM version does not check for valid Named Directories.
I have used LDR as assembled from LDR.MAC and it is working fine. This
resolves
the problem as far as I am concerned. If you would still like me to send you
the values in my sys.env file I will do so, but I don't think this is necessary.
--Ted--