DeLOOPing ATADisks.Mod in ETH Oberon 2.3.7.
From ETH Oberon 2.3.7,
PROCEDURE GetKernelCHS(d: LONGINT; VAR chs1: CHS); VAR p, t, i : LONGINT; chs: CHS; BEGIN p := Kernel.bt; i := 0; LOOP SYSTEM.GET(p, t); IF t = -1 THEN EXIT (* end *) ELSIF t = 5 THEN (* HD params *) IF i = d THEN chs.cyls := GetPar(p, 0) + 100H*GetPar(p, 1); chs.hds := GetPar(p, 2); chs.spt := GetPar(p, 14); IF chs.cyls * chs.hds * chs.spt > 0 THEN chs1 := chs END END; INC(i) END; SYSTEM.GET(p+4, t); INC(p, t) END END GetKernelCHS; My revision. PROCEDURE GetKernelCHS(d: LONGINT; VAR chs1: CHS); VAR p, t, i : LONGINT; chs: CHS; BEGIN p := Kernel.bt; i := 0; REPEAT SYSTEM.GET(p, t); IF t # -1 THEN IF t = 5 THEN (* HD params *) IF i = d THEN chs.cyls := GetPar(p, 0) + 100H*GetPar(p, 1); chs.hds := GetPar(p, 2); chs.spt := GetPar(p, 14); IF chs.cyls * chs.hds * chs.spt > 0 THEN chs1 := chs END END; INC(i) END; SYSTEM.GET(p+4, t); INC(p, t) END UNTIL t = -1 END GetKernelCHS; Better way? Criticisms? Thx, ... P. -- mobile: +1 778 951 5147 VoIP: +1 604 670 0140 48.7693 N 123.3053 W
Peter Generally okay. Here a perhaps a slightly more readable code… PROCEDURE GetKernelCHS(d: LONGINT; VAR chs1: CHS); VAR p, t, i : LONGINT; chs: CHS; BEGIN p := Kernel.bt; i := 0; SYSTEM.GET(p, t); WHILE t # -1 DO IF t = 5 THEN (* HD params *) IF i = d THEN chs.cyls := GetPar(p, 0) + 100H*GetPar(p, 1); chs.hds := GetPar(p, 2); chs.spt := GetPar(p, 14); IF chs.cyls * chs.hds * chs.spt > 0 THEN chs1 := chs END END; INC(i) END; SYSTEM.GET(p+4, t); INC(p, t); SYSTEM.GET(p, t) END END GetKernelCHS; Br Jörg
Am 14.03.2022 um 17:42 schrieb peter@easthope.ca:
PROCEDURE GetKernelCHS(d: LONGINT; VAR chs1: CHS); VAR p, t, i : LONGINT; chs: CHS; BEGIN p := Kernel.bt; i := 0; REPEAT SYSTEM.GET(p, t); IF t # -1 THEN IF t = 5 THEN (* HD params *) IF i = d THEN chs.cyls := GetPar(p, 0) + 100H*GetPar(p, 1); chs.hds := GetPar(p, 2); chs.spt := GetPar(p, 14); IF chs.cyls * chs.hds * chs.spt > 0 THEN chs1 := chs END END; INC(i) END; SYSTEM.GET(p+4, t); INC(p, t) END UNTIL t = -1 END GetKernelCHS;
participants (2)
-
Jörg -
peter@easthope.ca