þþ]èX;SAVE #D9:FMSBOOT.M65òA‹BOOT RECORDAü †FMSORGX;$X; THE FOLLOWING BYTES ARE STORED$X; ON DISK SECTOR 0 THEY COMPRISE$X; THE BOOT LOAD RECORD.X;8„BFLG ;;BOOT FLAG UNUSED=0B0…BRCNT ;;NO CONSECTIVE BOOT RECORDS TO READL"†BLDADR †FMSORG;;BOOT LOAD ADDRV‡BINTADR ‡DUPINIT;;INIT ADDR`$…BCONT!†XBCONT;;BOOT READ CONT PTjX;t%X; THE FOLLOWING BYTES ARE SET BY ~%X; THE CONSOLE PROCESSOR. THEY AREˆ&X; ACTED UPON DURING FMS INIT ONLY.’&X; THEY ARE PART OF THE BOOT RECORDœX; THUS DEFINING THE DEFAULT¦X;INITIALIZATION PARMS°X;º*†SABYTE ;;MAX # CONCURRENT OPEN FILESÄ3†DRVBYT ;;one bit per drive...03 is two drivesÎ(†SAFBFW ;;STORAGE ALLOCATION DIR SWØ/„SASA †ENDFMS;;STORAGE ALLOCATION START ADDRâX;ì&X; THE FOLLOWING CODE READS THE FMSö&X; AND CONSOLE PROCESSOR (DOS) FROMX; THE DOS.SYS FILE X;†DFSFLG ;;DOS FLAGX;(X; 00 NO DOS FILE2X; 01 128 BYTE SECTOR DISK<'X; NOT USED! 02 256 BYTE SECTOR DISKFX;P.†DFLINK =;;DOS FILE START SECTOR NUMBERZ#†BLDISP };;DISPL TO SECTOR LINKd.†DFLADR †DFMSDH;;ADDR START OF DOS.SYS FILEnX;x †XBCONT‚%†DFSFLG;;GET DOS FLAGŒ!F…BFAIL;;BR IF NO DOS.SYS FILE–X; $ ‰MOVESTART;;MOVE LOAD START ADDRªX;´ Q†DFLINK;;GET 1ST SECTOR #¾ %†DFLINKÈ%„XBC1$…ZBUFP;; MOVE ADDRESS TO DCBÒ &†DCBBUFÜ $…ZBUFPæ&†DCBBUFðX;ú, „BSIO;;GO READ BOOT SECTOR G…BFAILX;"%†BLDISP;;POINT TO LINK ,Q@…ZBUFP7;;GET LINK HI6M>…LMASK;;MASK TO LINK BITS@>;; AND SAVE LINK HIGHJ3T L@…ZBUFP7^ F…BGOODhQ@…ZBUFP7;;GET LINK LOWr5;; SAVE IT|3;; AND GET LENGTH OF SECTOR† Q@…ZBUFP7# ˆINCZBUFP;;GO INCREMENT BUF ADRš7;; GET LINK LOW AGAIN¤?®X;¸A;;RESTORE LINK HIÂ!„XBC1;;GO READ NEXT SECTORÌX;Ö …BFAILQ>À;;SET FOR CARRY SETà;AND P,Y = $80êX;ô …BGOOD ;;SET FOR CARRY CLEARþT??:X;&&X; BUMP ZBUFP POINTER BY BYTE VALUE0X;:'†DINCBPQ>€;; ENTRY POINT TO ADD 128D"ˆINCZBUFP,;; AND A-REG TO ZBUFPN O…ZBUFPX P…ZBUFPb D†:INCZ1l #…ZBUFPv †:INCZ1:€X;Š(X; MOVE START ADDRESS OF DOS.SYS FILE”X; TO ZBUFP POINTERžX;¨‰MOVESTARTQ†DFLADR² P…ZBUFP¼Q†DFLADRÆ P…ZBUFPÐ:ÚX;