Note on Model I/III LDOS manuals

Tim Mann
tim@tim-mann.org

Corrected 10-16-98
Updated 12-2-98
Updated 1-4-99

A correction to previous information in this space: Mark Fishman recently told me that "at the end Roy did update and print brand-new complete manuals for the operating system(s) and BASIC(s) -- one manual covering both LDOS and LSDOS, and one for both MI/III and M4 BASIC." I don't have copies of those manuals, but I hope to get them eventually.

What I do have is: (1) the complete manual for Model III LDOS version 5.1.x, (2) the update booklet documenting the changes between 5.1 and 5.3.1, and (3) update pages highlighting the changes between 5.3.0 and 5.3.1. Note that item (2) subsumes item (3), but I've supplied both anyway.

The same update documents cover both Model I and Model III. The base manual was slightly different for the two models. Here are some known differences between Model I and Model III LDOS:

- Model I LDOS included the FDUBL/CMD driver for double density support on machines with double density adaptors, and SOLE/CMD to support making bootable double density disks. See the online help.

- A few system files are differently named, such as MOD1/DCT vs. MOD3/DCT (floppy drivers) and RS232R/DVR vs. RS232T/DVR (serial port drivers).

- Model I LDOS has different RAM addresses for a few system functions and memory areas available to programmers. A summary of both Model I and Model III addresses follows. This data was scanned in from a paper copy of the LDOS Quarterly, volume 2 number 1, so it reflects LDOS version 5.1.3.

The LDOS way of checking for Model I vs. III is to test whether the byte at (125H) is 'I'; if so, it's a Model III. The 'I' is part of the ROM's "Model III Basic" signon message.

M E M O R Y    M A P  -  A L P H A B E T I C    L I S T I N G

This  memory map  section  is  provided to  allow quick  lookup  of  a  memory  address
corresponding to  an LDOS  system  label. An  asterisk marks those addresses which  are
different on the (Mod I) and [Mod III].

   @ABORT----(4030),[4030]      @PAUSE----(0060),[0060]      JFCB$-----(4358),[4265]*
   @ADTSK----(4410),[403D]*     @PEOF-----(4448),[4448]      JLDCB$----(43C0),[42C2]*
   @BKSP-----(4445),[4445]      @POSN-----(4442),[4442]      JRET$-----(430C),[4222]*
   @CKDRV----(44B8),[4209]*     @PRINT----(446A),[446A]      KFLAG$----(4423),[429F]*
   @CKEOF----(444B),[4458]*     @PRT------(003B),[003B]      KIDCB$----(4015),[4015]
   @CLOSE----(4428),[4428]      @PUT------(001B),[001B]      KIJCL$----(43BE),[42BE]*
   @CMD------(4400),[4296]*     @RAMDIR---(4396),[4290]*     KISV$-----(43B8),[42B8]*
   @CMNDI----(4405),[4299]*     @READ-----(4436),[4436]      LDRV$-----(4308),[4427]*
   @CTL------(0023),[0023]      @REW------(443F),[443F]      MFLAG$----(442F),[ N/A]*
   @DATE-----(4470),[3033]*     @RMTSK----(4413),[4040]*     MULTEA----(4B6C),[4B6B]*
   @DEBUG----(440D),[440D]      @RPTSK----(4416),[4043]*     OSVER$----(403E),[441F]*
   @DIV------(44C4),[4451]*     @RREAD----(4454),[445E]*     OVRLY$----(430E),[4414]*
   @DODIR----(4463),[4419]*     @RUN------(4433),[4433]      PDRV$-----(4309),[4423]*
   @DOKEY----(44BE),[4285]*     @RWRIT----(4457),[4461]*     PRDCB$----(4025),[4025]
   @DSP------(0033),[0033]      @SKIP-----(4460),[4464]*     PRSV$-----(43BC),[42BC]*
   @DSPLY----(4467),[4467]      @TIME-----(446D),[3036]*     RDSECT----(4777),[4777]
   @DVRHK----(4033),[4033]      @VER------(443C),[443C]      RDSSEC----(4B45),[4B45]
   @ERROR----(4409),[4409]      @WEOF-----(444E),[445B]*     RSELCT----(4759),[4759]
   @EXIT-----(402D),[402D]      @WHERE----(000B),[000B]      S1DCB$----(43D8),[42D4]*
   @FEXT-----(4473),[444B]*     @WRITE----(4439),[4439]      S2DCB$----(43E0),[42DA]*
   @FNAME----(44BB),[4293]*     CFCB$-----(4480),[4485]*     S3DCB$----(43E8),[42E4]*
   @FSPEC----(441C),[441C]      DATE$-----(4044),[421A]*     S4DCB$----(43F0),[42E6]*
   @GET------(0013),[0013]      DAY$------(4047),[4417]*     S5DCB$----(43F8),[ N/A]*
   @ICNFG----(4303),[421D]*     DBGSV$----(405D),[405D]      SBUFF$----(4200),[4300]*
   @INIT-----(4420),[4420]      DCT$------(4700),[4700]      SEEK------(475E),[475E]
   @KBD------(002B),[002B]      DCTBYT----(479C),[479C]      SELECT----(4754),[4754]
   @KEY------(0049),[0049]      DFLAG$----(441F),[4289]*     SFCB$-----(44A0),[42A1]*
   @KEYIN----(0040),[0040]      DRCYL-----(4B65),[4B64]*     SFLAG$----(430F),[442B]*
   @KILL-----(442C),[442C]      DIRRD-----(4B10),[4B10]      SIDCB$----(43C8),[42C8]*
   @KITSK----(4300),[4285]*     DIRWR-----(4B1F),[4B1F]      SODCB$----(43D0),[42CE]*
   @KLTSK----(4419),[4046]*     DIVEA-----(4B7B),[4B7A]*     SVDAT1$---(4306),[442F]*
   @LOAD-----(4430),[4430]      DODCB$----(401D),[401D]      SVDAT2$---(4307),[4457]*
   @LOC------(445A),[446D]*     DOSV$-----(43BA),[42BA]*     TCB$------(4500),[4500]
   @LOF------(445D),[4470]*     GETDCT----(478F),[478F]      TIME$-----(4041),[4217]*
   @LOGER----(447E),[428D]*     HIGH$-----(4049),[4411]*     TIMER$----(4040),[4288]*
   @LOGOT----(447B),[428A]*     INBUF$----(4318),[4225]*     USTOR$----(4DFE),[4DFE]
   @MSG------(4479),[4402]*     INTIM$----(404B),[4473]*     VERSEC----(4772),[4772]
   @MULT-----(44C1),[444E]*     INTMSK$---(404C),[4474]*     WRPROT----(4768),[4768]
   @OPEN-----(4424),[4424]      INTVC$----(404D),[4475]*     WRSECT----(4763),[4763]
   @PARAM----(4476),[4454]*     JDCB$-----(430A),[4220]*     WRTRK     (476D),[476D]