IMD 1.18: 30/01/2015 20:03:42 CAL-TEX COMPUTERS, INC. "Big Board II" CBIOS Diskette #0093 Copyright (C) Russell Smith 1982    BB2FORMTCOM3BIOS DOC" DEBLOCK MACDEBLOCK MAC ... :1J =1 enter disk (A,B,C OR D) to be initialized ͨ A8E0A26 disk being initialized .... SW59E6 HEXSW59E6 MACQSYSGEN8 COMXEBEC MAC/ may be in the drives at this time. press any key when ready to continue ...  ="  ( ="  returning to DS60E8 HEXx !"#$%&'()*+,-.DS60E8 MACR/0123456789DS60EA HEXn:;<=>?@ABCDEFGDS60EA MACQHIJKLMNOPQRJ >:J =1 enter physical sector skew (from 1 to 9) ͨ 18:026 sector skew ............... J BIOS $$$CP/M ...  density sectors length (* indicates non-standard format) ------- ------- ------ MACROS MACSMELDING DOC"TUVWXMEMDEF MACYZ[\ONESECT MAC]^=1 initialize both sides of disk (Y/N) ͨ Y(N 26 media type ................ N( DOUBLE SIDED2:1J ) : single  double :&o)^#V|y  * |&h! |bk! :SS60E8 HEXz_`abcdefghijklmnSS60E8 MACRopqrstuvwxySS60EA HEXpz{|}~SS60EA MACQ1+ G4 Cal-Tex Computers 8 inch Disk Formatter 21-Sept-82 G0 This program destroys all pre-recorded inform SINGLE SIDED =1 verify disk after formatting (Y/N) ͨ Y(N 26 read/write verify ......... Y(<2 =1 enter number of format desired (1 to 8) ͨ 189012&o) ^#VS6 <--- format selected ........SW59E4 HEXSW59E4 HEX SW59E4 MACRSW59E6 HEXation on a disk in the process of formatting it. Therefore we recommend that you remove any valuable disks that   NO!" YES!m":A2W =1 press when ready to format disk in drive A: ...  hG( =" Ð (* "L >ͦ >ӊ* "ɊJ*>>2* #" ! ۅ(w* [ " R" Myx! YQ6G 2E:FG(*|`:oG> L >&@.G! V >.2!:Y̆ :J *|`.G>2E>@N -+---------+---------=6 :N(>2Fs 2F:N( s ͦ  =1 FORMATTING:FG :N( BOTTOM GD!G~(uqEu |0{U *** DRIVE NOT READY *** (drive door open? disk turned the wrong way?)w(W *** WRITE PROTECTED *** (placeYQ(##. ͡ m,χ[ G* RB8L >>> = ɷ ͫ X͵ (! YQ,YQ* :E:V >.2*:Y̆ :J :E<2E8*|`:oG>@N * :E:V >.2*:Y̆ :J :E<2E TOP SIDE ..... (press any key to abort)=6 =:$J >BJ v v ! 6 84O* ͧ  ^~(#= N FɱEo(  22N dN N4N  tab over write protect notch in diskette)G(a *** DRIVE MOTOR SPEED OUT OF RANGE *** (rotational period=* ' >N . ͡ m,χ! ! !   N#F#,:F#!G:Ew:FG(  ~#w M8L >+2!,> !,> !, :,!E :-!FG>?2|GGO (*#"12ɯ<2!" " *ͧ `8 *ͧ  h 8OJ   J h y:͖  2ɯ2 ~#N  NPN 2N N 5NPN 2N N SN2N   milliseconds) =1 =3 1 2 3 4 5 6 7=4 0123456789012345:@~ (!= :: x F#: bkwF#~#" *" ! ">ӊ:_! ~>> L > N ۅ2 Oۅ * R8>CۅD0* R8>+* R8[ !R8>ӊJ > J :20>.J  ? > - >- O!i ˀ^#V#(R8<00 @ yJ }0J 'e L > N !,-N 5NPN 2N N sN 2N N (N67890123456789012345678901234567890123456789012345678901234567890=5 ----------+---------+---------+---------+---------+-------- ld be able to assemble it and produce a working system without having to do any patches or funny stuff. The main module 'AUTOBIOS.MAC' has includes for all the other files such as the boot loader, signon message, deblock routines, hard disk driver and system variables EQU's. The following items are the main ones people will be interested in; MSIZE .... memory size in  .... Notes on BIOS/DDINIT/SYSGEN versions released 26-August-82 ... BIOS: This BIOS release should represent what we wilKbytes. use 60k for floppy-only systems and 59k for hard disk versions. USRDRV ... user number (high nybble) and drive nl be calling a 'distribution' version of the source code for the BIOS. It has been cleaned up so that most mere mortals shou umber (low nybble) to log-on after cold start. use 00h unless you are strange. SERIAL ... set to TRUE to cause CONIN to  possible bits are CTS/SYNC/DCD/TBE. (always test TBE, others are optional depending on printer) A new module call printer driver. set to 80h/81h/89h for side A or 82h/83h/88h for side B. The one sector loader contains a short tabired by our SYSGEN parked in memory from locations 900h to 2BFFh. You can save this on a file if desired, and then run SYSGEnable double sided floppies. allocates blocks on other side of disk and doubles directory size DIRSIZ ... number of direu have edited your desired changes in the bios or the equates shown above. A>M80 =AUTOBIOS A>L80 */P:E900 {use serial input port and CONOUT to use built-in crt. Same trick as Bigboard PFM rom's 'S' command, but gets done aued 'MEMDEF' has been added to the CBIOS. This is simply a copy of the monitor rom variables declaration file with the variable of constants for sio initialization of write reg #4,#3,#5 and the ctc. Edit this table to change parity, baudrateN (our version) to put the system on the reserved tracks of a formatted DD disk. The memory layout for the system tracks in ctory entries allocated. we may want to change this for compatibility with other systems. BLS ...... CP/M block size parif 59k MSIZE then use E500 here} *AUTOBIOS *AUTOBIOS/X/N/E #ZSID CPM.COM {assumes you created file by saying 'SAVE 34 tomatically by boot. WINCH .... set to 1 to enable XEBEC drivers to be assembled in with bios. Resuting code is > 1500 bles defined using EQU's instead of DEFS's. The main use of MEMDEF is to allow us make symbolic references to the system vars i etc. We may want to make a fancier way to define these parameters, but this will do for a while. XONXOFF .. set tSYSGEN is as follows; address sector ------ ------ 900-97f ... t0/s1 one sector loader for CP/M cameter (expressed in Kbytes). this should probably not be changed from the 2K value now being used, but we have it jCPM.COM' after running MOVCPM or standard version of SYSGEN} #M980,1F7F,4000 #F100,3FFF,0 #IAUTOBIOS.HEX #ytes long, so requires 59k memsize to run. NFLOPPY .. number of floppys in system. set to 1 or 2 for hard disk sysn the CBIOS cold start initialization. Use this trick to do things like changing the disk step rate, motor turn-off delay, ko TRUE to enable this protocol in printer driver. TXMASK ... set to bits to be tested for printer-ready in list routine. old boot 980-9ff ... t0/s2 signon message A00-15FF ... t0/s3 to 26 BIOS code (1.5 to 2.5 Kbytes) 1600-ust in case. FIVE EIGHT .... floppy disk type being used. LSTDAT LSTCTL LSTBAUD .. sio ports and ctc chanel for serialR2000 {if 59k MSIZE then use 2400 here} #M4000,55FF,1600 You now have a picture of the reserved tracks as requtems or you will not have enough memory for the disk allocation vectors in most cases. DOUBLE ... set to ture to eeyboard fifo size, disk spin-up delay and goodies like that. SYSGEN: Type the following magic incantations after yo 2BFF ... t1/s1 to nn CCP and BDOS portion of CP/M (5.5 Kbytes) 44 sectors if 128 bytes/sector 22 " ECK FOR XLT POINTER IN DE=0 JR Z,STRAN2 ;JUMP IF NO TRANSLATE TABLE USED ADD HL,DE ;ELSE INDEX INTO TABLE BY SECTOR# LD******************************************************* ; ; ; SUBROUTINES FOR RESTORE, SET-TRACK, SET-SECTOR AND ; SET-DMA B Z,PARM10 ;SKIP FLOPPY FORMAT CHECK ON HARD DISK ENDIF XOR A ;SET SECTOR# TO ZERO TO INDICATE LD (HSTSEC),A ; EXPLORATORYC A JR NZ,SDSK2 LD (DPHPTR),HL ;STORE POINTER TO DISK'S DPH ENTRY BIT 0,E ;TEST LOG-ON VECTOR BIT FOR DRIVE RET NZ ;EX " 256 " " 11 " " 512 " " 6 " " 1024 " "  L,(HL) LD H,0 RET ;RETURN PHYSICAL SECTOR# FROM TABLE ; STRAN2: INC HL ;MAKE SECTOR NUMBERS START AT 1 RET PAGE IOS ENTRY POINTS. THESE ONLY STORE THEIR ; RESPECTIVE PARAMETERS AND THEN EXIT WITHOUT DOING ; ANY ACTUAL DISK I/O OPERATIONS. READ OPERATION PARM1: LD A,SIDSEL+OFF OUT (PORT0),A ;MAKE SURE SIDE #0 OF DISK IS SELECTED LD A,(DISK) LD (HSTDSK),A ;STIT IF DRIVE IS LOGGED-ON PUSH HL POP IX BIT 0,(IX+FLAGS) ;TEST DRIVE PRE-SELECTED FLAG RET NZ ;EXIT IF DRIVE FORMAT A ; ; ; MAGIC SELDISK ROUTINE WITH AUTO DISK PARAMETER SELECT ; PORT0 EQU 0C8H ;DISK CONTROL BIT LATCH SIDSEL EQU 1 ;BIT#  ; ; HOME: LD BC,0 SETTRACK: LD (TRACK),BC RET ; ; ; ; SETSECT: LD HL,SECTOR LD (HL),C RET ; ; ; ; SORE UNIT# IN CASE OF ERROR LD C,A CALL MONITR+27 ;SELECT NEW DISK DRIVE JR NZ,PARM2 LD A,(TRACK) LD (HSTTRK),A ;STORE LREADY KNOWN CALL FLUSH ;FINISH ANY DEFERRED DISK OPERATIONS LD A,RESERV LD (TRACK),A ;SEEK DIRECTORY TRACK FOR FORMAT OF SIDE SELECT BIT ON EQU 1000B OFF EQU 0000B ; ; SELDISK: LD HL,0 ;PREP TO CHECK FOR MAX DISK# LD A,C CP NFLOPPY+WIETDMA: LD (POINTR),BC RET ; ; ; ; SECTRAN: LD H,B LD L,C ;GET LOGICAL SECTOR# INTO HL FROM BC LD A,D OR E ;CHTRACK# IN CASE OF ERROR LD C,A CALL MONITR+33 ;SEEK SPECIFIED TEST TRACK JR NZ,PARM2 LD HL,IDBUFF CALL MONITR+42 ;READ;******************************************************** ;* * ;* DISK I/O SUBROUTINES FOR CP/M CBIOS * ;* * ;*CHECK ; ; PARAMS: IF WINCH LD HL,WINSTUFF LD (PRMPTR),HL ;SELECT WINCHESTER DISK PARAMS LD A,(DISK) CP NFLOPPY JPNCH RET NC ;ERROR (HL=0) IF DISK# TOO BIG LD (DISK),A INC A LD BC,DPHSIZ LD HL,DPHTAB-DPHSIZ SDSK2: ADD HL,BC DE  AN ID MARK FROM TEST TRACK JR Z,PARM3 PARM2: CALL REPORT ;DISPLAY ERROR AND ALLOW RECOVERY JR Z,PARM1 ;TRY AGAIN IF NO..4) LD A,(IDBUFF+1) ;GET SIDE# BYTE FROM ID RECORD SRL A ;SHIFT OUT SIDE# BIT IN LSB JR NZ,PARM5 ;JUMP IF UPPER 7 BITS ASIDED #TRACKS ON STACK PARM3A: LD A,SIDSEL+OFF OUT (PORT0),A ;SWITCH BACK TO REGULAR SIDE OF DISK ENDIF LD A,(IDBUFF+3) ;O START OF DPH EX DE,HL LD BC,14 ADD HL,BC ;POINT TO REST OF DPB STUFF NOW EX DE,HL LD BC,15+4 LDIR ;COPY DPB ANDK LD HL,IDTOP CALL MONITR+42 ;ELSE READ AN ID MARK FROM TOP SIDE JR NZ,PARM3A ;JUMP IF NOT FORMATTED ON SECOND SIDE LD HECTORS BY 'BSH' TO GET RR L ; NUMBER OF BLOCKS ON DISK DJNZ PARM8 DEC HL ;RESULT LESS 1 IS 'DSM' VALUE FOR DPB LD (DDST ABORTED LD HL,0 RET ;ELSE RETURN PERM SELECT ERROR ; ; ARRIVE HERE AFTER SUCCESSFULLY READING AN ID RECORD ; PARM3: RE NON-ZERO LD A,(HL) ;ELSE USE STANDARD VALUE FOR 'SPT' JR PARM6 ; FOUND IN PARAMETER TABLE ; PARM4: ADD A,A ;MULTIPLYGET SECTOR LENGTH BYTE FROM ID RECORD AND 00000011B LD (DDSTUFF+17),A ;STORE AS DEBLOCK MASK IN 'DDSTUFF' LD H,0 LD L,A  DEBLOCK PARAMETERS POP IX ;POINT IX TO BASE OF DISK STORAGE AREAS LD HL,DIRBUF ;GET ADDRESS OF DIRECTORY BUFFER LD (IX+8L,IDBUFF LD DE,IDTOP ;ELSE COMPARE ID FIELDS TO EACH OTHER CALL EXOR1 JR NZ,PARM3A ;JUMP IF TRACK NUMBERS NOT IDENTICAL TUFF+7),HL LD A,(DDSTUFF+5) ;GET BLOCK MASK FROM DPB SRL A SRL A SRL A ;SHIFT RIGHT 3 TIMES GIVES EXTENT MASK INC HLD HL,SDSTUFF LD (PRMPTR),HL ;FIRST SELECT SINGLE DENSITY PARAMETERS LD A,(IDBUFF+6) BIT 0,A ;TEST DENSITY BYTE RETURNED  PHYSICAL SPT BY 2,4 OR 8 TO PARM5: DJNZ PARM4 ; TO GET EQUIVALENT 128 BYTE SECTORS PARM6: LD (DDSTUFF+2),A ;STORE LOGICAL SP ADD HL,HL ADD HL,HL ;MULTIPLY LENGTH CODE BY 4 FOR INDEXING LD BC,FRMTAB ADD HL,BC ;ADD BASE ADDRESS OF FORMAT POOP TA),L LD (IX+9),H ;STORE IN 'DIR' POINTER SLOT POP HL LD DE,16 ADD HL,DE ;COMPUTE ADDRESS OF DISK PARM BLOCK LD (IX+10)CALL EXOR1 CP 1 JR NZ,PARM3A ;JUMP IF SIDE NUMBERS NOT COMPLIMENTARY CALL EXOR2 JR NZ,PARM3A ;JUMP IF SECTOR LENGTHS NOT DEC H ;TEST IF 'DSM' IS > 255 JR Z,PARM9 SRL A PARM9: LD (DDSTUFF+6),A ;STORE VALUE FOR 'EXM' PARM10: LD HL,(PRMPTR)BY READID JP Z,PARM10 ;JUMP IF SINGLE DENSITY LD HL,DDSTUFF LD (PRMPTR),HL ;USE DUAL DENSITY DISK PARAMETERS LD HL,NTRT CONST IN 'DDSTUFF' POP DE ;POP TRACKS-PER-DISK PARAM OFF STACK LD HL,0 LD B,A ;PREPARE TO COMPUTE 'DRM' VALUE FOR DPBLE LD DE,DDSTUFF+18 LD BC,3 LDIR ;STORE FORMAT PARAMS IN 'DDSTUFF' INC A LD B,A ;B=SECTOR LENGTH CODE+1 (RANGE 1,L LD (IX+11),H ;STORE IN 'DPB' POINTER SLOT LD DE,15+4+1 ADD HL,DE ;COMPUTE ADDRESS OF CHECK VECTOR LD (IX+12),L LD  IDENTICAL CALL EXOR3 JR NZ,PARM3A ;JUMP IF DENSITIES NOT IDENTICAL LD HL,2*NTRAKS-RESERV EX (SP),HL ;REPLACE DOUBLE  LD DE,(DPHPTR) PUSH DE PUSH DE PUSH DE ;SAVE 3 COPIES OF POINTER TO DISK POOP LD BC,2 LDIR ;COPY 'XLT' ADDRESS TAKS-RESERV PUSH HL ;PUT TRACKS-PER-DISK PARAM ONTO STACK IF DOUBLE LD A,SIDSEL+ON OUT (PORT0),A ;SELECT TOP SIDE OF DISB PARM7: ADD HL,DE DJNZ PARM7 ;GET PRODUCT OF SPT*(NTRAKS-RESERV) LD A,(DDSTUFF+4) LD B,A PARM8: SRL H ;DIVIDE TOTAL S (IX+13),H ;STORE IN 'CKV' POINTER SLOT LD E,(IX+16+11) LD D,(IX+16+12) ;LOAD DE WITH CHECK VECTOR LENGTH ADD HL,DE ;COMPUECTS ;SECTORS PER TRACK DEFB 3 ;BLOCK SHIFT DEFB 00000111B ;BLOCK MASK DEFB 00000000B ;EXTENT MASK DEFW 81 ;MAX BLOCK DEFB 06,12,18,24 DEFB 04,10,16,22 ; ; ; SECTOR DEBLOCK PARAMS FOR 8 INCH DOUBLE DENSITY DISKS ; FRMTAB: DEFB 00000000B 0 ;MAX BLOCK# (DUMMY) DEFW DIRSIZ-1 ;MAX DIRECTORY ENTRY# DEFB HIGH DIRMSK ;ALLOCATION MASK MSB DEFB LOW DIRMSK ;ALLOCATR TRACK DEFB 3 ;BLOCK SHIFT DEFB 00000111B ;BLOCK MASK DEFB 00000000B ;EXTENT MASK DEFW 242 ;MAX BLOCK# DEFW 63 ;MA0000B ;DEBLOCK MASK DEFW 128 ;PHYSICAL SECTOR LENGTH DEFB 28 ;LOGICAL SECTORS PER TRACK DEFB 00000001B DEFW 256 DETE ADDRESS OF ALLOCATION VECTOR LD (IX+14),L LD (IX+15),H ;STORE IN 'ALV' POINTER SLOT POP HL XOR A ;A=0 TO INDICATE PA# DEFW 31 ;MAX DIRECTORY ENTRY# DEFB 10000000B ;ALLOCATION MASK MSB DEFB 00000000B ;' ' LSB DEFW 8 ;CHECK SIZE  ;DEBLOCK MASK DEFW 128 ;PHYSICAL SECTOR LENGTH DEFB 52 ;LOGICAL SECTORS PER TRACK DEFB 00000001B DEFW 256 DEFB 26ION MASK LSB DEFW DIRSIZ/4 ;CHECK VECTOR SIZE DEFW RESERV ;RESERVED TRACKS DEFB 0 ;DEBLOCK SHIFT COUNT (DUMMY) DEFB X DIRECTORY ENTRY# DEFB 11000000B ;ALLOCATION MASK MSB DEFB 00000000B ;' ' LSB DEFW 16 ;CHECK SIZE DEFW RESFB 18*2 DEFB 00000011B DEFW 512 DEFB 9*4 DEFB 00000111B DEFW 1024 DEFB 5*8 ENDIF ; ; ; BASIC DISK PARAMS RAMS FOUND OK RET ;RETURN WITH DPH POINTER IN HL ; ; ; EXOR3: INC HL INC DE EXOR2: INC HL INC DE EXOR1: LD A,(DE)  DEFW RESERV ;RESERVED TRACKS DEFB 0 ;DEBLOCK SHIFT COUNT DEFB 00000000B ;DEBLOCK MASK DEFW 128 ;BYTES PER SECTOR ;*2 DEFB 00000011B DEFW 512 DEFB 15*4 DEFB 00000111B DEFW 1024 DEFB 8*8 ENDIF ; ; IF FIVE ; ; DISK PARA0 ;DEBLOCK MASK (DUMMY) DEFW 0 ;BYTES PER SECTOR (DUMMY) PAGE ;********************************************************ERV ;RESERVED TRACKS DEFB 0 ;DEBLOCK SHIFT COUNT DEFB 00000000B ;DEBLOCK MASK DEFW 128 ;BYTES PER SECTOR ; ; ; 8 IFOR DOUBLE DENSITY FORMATS ; DPBGEN BLS,DIRSIZ ;GENERATE BSH/BLM/DIRMSK CONSTS ; DDSTUFF: DEFW 0 ;NO SECTOR SKEW TABLE  XOR (HL) ;COMPARE ID FIELD BYTES @HL AND @DE INC HL INC DE RET ; PAGE ; IF EIGHT ; ; DISK PARAMS FOR STANDARD S ; ; 5 INCH SECTOR TRANSLATE TABLE (SAME AS XEROX/CROMEMCO/OSBORNE) ; XLTAB: DEFB 01,06,11,16 DEFB 03,08,13,18 DEFB 05MS FOR STANDARD SINGLE DENSITY FORMAT ; 18 SECTORS / 128 BYTES ; SDSTUFF: DEFW XLTAB ;1-IN-5 SECTOR SKEW TABLE DEFW NS ;* * ;* LOGICAL SECTOR DEBLOCKING ROUTINES FOR * ;* CBIOS DISK READ/WRITE FUNCTIONS * ;* * ;***************NCH STANDARD SECTOR TRANSLATE TABLE ; XLTAB: DEFB 01,07,13,19,25 DEFB 05,11,17,23 DEFB 03,09,15,21 DEFB 02,08,14,20,26  DEFW 0 ;SECTORS PER TRACK (DUMMY) DEFB BSHFT ;BLOCK SHIFT DEFB BMASK ;BLOCK MASK DEFB 0 ;EXTENT MASK (DUMMY) DEFWINGLE DENSITY FORMAT ; 26 SECTORS / 128 BYTES ; SDSTUFF: DEFW XLTAB ;1-IN-6 SECTOR SKEW TABLE DEFW NSECTS ;SECTORS PE,10,15 DEFB 02,07,12,17 DEFB 04,09,14 ; ; ; SECTOR DEBLOCK PARAMS FOR 5 INCH DOUBLE DENSITY DISKS ; FRMTAB: DEFB 0000  ***************************************** ; ; WRALL EQU 0 ;WRITE TO ALLOCATED WRDIR EQU 1 ;WRITE TO DIRECTORY WRUAL EQU 2ITES XOR A CALL RW128 ;WRITE 128 BYTE SECTOR DIRECTLY RET ; WRITE1: CALL PHYSECT ;TRANSLATE HOST EQUIV OF SECTOR# T DISK PARAMETERS LD HL,(TRACK) LD (HSTTRK),HL LD A,(DISK) LD (HSTDSK),A CALL READHST ;READ HOST SECTOR INTO DEBLOCK AL3 ; ; ARRIVE HERE ON SUCCESSIVE WRITES TO UNALLOCATED BLOCK ; UNAL2: DEC (HL) ;RCOUNT = RCOUNT-1 CALL HOSTCMP ;TEST IFECTOR DIRECTLY RET ; READ1: CALL PHYSECT ;TRANSLATE SECTOR# TO HOST EQUIV LD A,(WRTACT) OR A JR Z,READ2 ;JUMP IF WREACHED ZERO LD A,(HL) OR A JR NZ,UNAL2 ;JUMP IF CONTINUED WRITE ALLOC: CALL FLUSH ;FINISH OLD WRITE BUSINESS CALL R ;WRITE TO UNALLOCATED ; ; INDEX OFFSETS TO ACCESS DEBLOCK PARAMETERS RELATIVE ; TO BASE ADDRESS OF DPH ENTRY FOR SPECIFIED XOR A LD (RDACT),A ;RESET READ BUFFER ACTIVE FLAG LD A,C ;WRITE TYPE IN C CP WRUAL JR Z,UNALOC ;JUMP IF NEW UNALLOCATBUFFER RET NZ ;EXIT IF DISK ERROR READ4: CALL DEBLOCK ;MOVE 128 BYTES FROM BUFFER XOR A RET ;RETURN WITH A=0 (NO ERRO STILL IN SAME HOST SECTOR JR Z,UNAL4 ;PUT RECORD INTO BUFFER IF NOT FULL CALL WRITEHST ;WRITE HOST SECTOR FROM BUFFER RITE BUFFER ACTIVE CALL FLUSH ;ELSE CLEAR OUT DEFERRED WRITE JR READ3 ; AND THEN READ NEW BUFFER FULL ; READ2: LD A,(READ3 ;READ NEW BUFFER RET NZ CALL WRITEHST RET ; ; START WRITING UNALLOCATED BLOCK BY SETTING PARAMETERS ; UNALOC: CADRIVE ; SPT EQU 16 BLM EQU 19 SHFCNT EQU 31 SECMSK EQU 32 SECLEN EQU 33 FLAGS EQU 35 ; ; ; ; READDB: LD IX,(DPHPTRED BLOCK CP WRDIR JR Z,ALLOC ;JUMP IF DIRECTORY WRITE ; ; CHECK FOR CONTINUED WRITE TO UNALLOCATED BLOCK ; LD A,(SECTORS) ; ; ; ; ; WRITEDB: LD IX,(DPHPTR) ;GET POINTER TO THIS DRIVE'S PARAMETERS XOR A LD (DIR),A ;FLAG AS WRITE OPERARET NZ ;EXIT IF DISK ERROR UNAL3: LD A,(SECTMP) ;ELSE COPY NEW DISK/TRACK/SECTOR LD (HSTSEC),A ; TO HOST DISK PARAMETERS DACT) OR A JR Z,READ3 ;READ INTO BUFFER IF DEBLOCK INACTIVE CALL HOSTCMP ;CHECK IF STILL USING SAME HOST SECTOR JR ZLL FLUSH ;FINISH ANY PREVIOUS DEBLOCKED WRITES LD A,(IX+BLM) LD (RCOUNT),A ;RCOUNT=SECTORS-PER-BLOCK MINUS 1 LD A,(SECTOR) ;GET POINTER TO THIS DRIVE'S PARAMETERS LD A,1 LD (DIR),A ;SET DIRECTION FOR READ LD A,(IX+SHFCNT) OR A JR NZ,REAR) LD HL,NXTSEC CP (HL) JR NZ,ALLOC LD HL,(TRACK) LD DE,(NXTTRK) OR A ;COMPARE NEW SECTOR/TRACK TO PREVIOUSLY SBCTION LD A,(IX+SHFCNT) OR A JR NZ,WRITE1 ;DO DEBLOCKING FOR SECTORS > 128 BYTES CALL FLUSH ;ELSE END ANY DEFERRED WR LD HL,(TRACK) LD (HSTTRK),HL LD A,(DISK) LD (HSTDSK),A LD (HSTDPH),IX ;STORE DPH POINTER FOR CALLS TO 'FLUSH' UNAL4: C,READ4 ;GET RECORD FROM BUFFER IF STILL THERE READ3: LD A,(SECTMP) ;ELSE COPY NEW DISK/TRACK/SECTOR LD (HSTSEC),A ; TO HOS) LD (NXTSEC),A LD HL,(TRACK) ;STORE PARAMS FOR COMPUTATION OF LD (NXTTRK),HL ; SUCCESSIVE SECTOR NUMBERS IN BLOCK JR UND1 ;DO DEBLOCKING IF SECTOR LENGTH > 128 CALL FLUSH ;ELSE CLEAR ANY DEFERRED WRITES LD A,1 CALL RW128 ;READ 128 BYTE S HL,DE ; ANTICIPATED NUMBERS FOR NEXT RECORD JR NZ,ALLOC ;JUMP IF NOT IN CURRENT BLOCK LD HL,RCOUNT ;CHECK IF RCOUNT HAS  ALL DEBLOCK ;MOVE 128 BYTES INTO BUFFER LD HL,NXTSEC INC (HL) ;ADD 1 TO CURRENT DISK ADDRESS TO LD A,(HL) ; GET NEXT SE GOING BACK RET PAGE ;******************************************************** ;* * ;* HOST DISK SELECT/SEEK/READ HOSTCMP: LD A,(SECTMP) LD HL,HSTSEC CP (HL) RET NZ LD HL,(TRACK) LD DE,(HSTTRK) OR A SBC HL,DE RET NZ LECT DISK SIDE ZERO LD A,(HSTTRK) CP NTRAKS ;TEST IF TRACK# IS ON OTHER SIDE JR C,DOFLP3 LD B,SIDSEL+ON ;SELECT OPPOSITEEBLOCK: LD A,(SECTOR) DEC A ;REMOVE SECTOR NUMBER +1 BIAS AND (IX+SECMSK) ;MASK SECTOR# OFF TO GET BUFFER INDEX LD H,0 E ROUTINE ... ; ; CALL WITH IX POINTING TO DISK PARAMETER TABLES ; AND ACC CONTAINING R/W OPERATION INDICATOR. ; ; DOIT: CTOR/TRACK NUMBER IN BLOCK CP (IX+SPT) JR C,UNAL5 JR Z,UNAL5 LD (HL),1 ;RESET TO SECTOR# 1 AND BUMP TRACK# LD HL,(NXT/WRITE ROUTINE * ;* * ;******************************************************** ; ; ; ; ; READHST: LD HL,BIGBUF D A,(DISK) LD HL,HSTDSK CP (HL) RET ; ; ; ; FLUSH: XOR A LD (RDACT),A ;FLAG BUFFERED READ AS INACTIVE LD (RCOUN SIDE SUB NTRAKS ;CONVERT TRACK# TO REAL VALUE DOFLP3: LD C,A LD A,B OUT (PORT0),A ;OUTPUT SIDE SELECT BIT CALL MONITR LD L,A ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD BC,BIGBUF ADD HL,BC ;HL = H LD (RWFLAG),A ;STORE RWFLAG 1=READ 0=WRITE IF WINCH LD A,(HSTDSK) CP NFLOPPY JP NC,DOWINCH ;DO SASI DISK ROUTINE IF TRK) INC HL LD (NXTTRK),HL UNAL5: XOR A RET ;RETURN WITH A=0 (NO ERRORS) ; ; ; TRANSLATE SECTOR# TO HOST DISK EQUIVA LD (HSTPTR),HL LD A,1 LD (RDACT),A CALL DOIT ;READ SECTOR FROM DISK RET Z LD HL,RDACT LD (HL),0 ;CLEAR FLAG IF DT),A ;TERMINATE ANY WRITE TO UNALLOCATED LD A,(WRTACT) OR A RET Z PUSH IX ;SAVE CURRENT DPH POINTER IN IX LD IX,(HS+33 ;SEEK SELECTED TRACK JR Z,DOFLP4 CALL REPORT ;REPORT SEEK ERROR TO CONSOLE JR Z,DOFLP2 RET ;RETURN PERMANENT ERROOST BUFFER ADDRESS LD DE,(POINTR) ;DE = DMA ADDRESS FROM BDOS LD A,(DIR) OR A JR NZ,DEBLK2 ;SKIP IF READ LD A,1 LD (ON HARD DISK ENDIF DOFLOP: LD A,(HSTDSK) LD C,A CALL MONITR+27 ;SELECT SPECIFIED DRIVE JR Z,DOFLP2 CALL REPORT ;REPOLENT ; PHYSECT: LD B,A ;LOAD B WITH SHIFT COUNT (RANGE 1..3) LD A,(SECTOR) DEC A ;REMOVE +1 BIAS FROM SECTOR NUMBERS ISK READ ERROR RET ; ; ; WRITEHST: LD HL,BIGBUF LD (HSTPTR),HL XOR A LD (WRTACT),A CALL DOIT ;WRITE SECTOR TO DTDPH) ;LOAD RIGHT POINTER FOR STUFF IN BUFFER CALL WRITEHST ;WRITE BUFFER ONTO HOST DISK POP IX ;RESTORE DPH POINTER BEFORER IF INDICATED ; DOFLP4: LD HL,(HSTPTR) LD A,(HSTSEC) LD C,A LD A,(RWFLAG) OR A ;TEST DIRECTION 1=READ 0=WRITE JWRTACT),A ;INDICATE BUFFERED WRITE IS ACTIVE EX DE,HL ;SOURCE/DEST SWAP DEBLK2: LD BC,128 LDIR RET ; ; PAGE ; ; RT SELECT ERROR TO CONSOLE JR Z,DOFLOP RET ;RETURN PERMANENT ERROR IF NOT ZERO ; DOFLP2: LD B,SIDSEL+OFF ;DEFAULT TO SELPHSEC2: SRL A DJNZ PHSEC2 INC A ;REINSTATE +1 BIAS TO SECTOR# LD (SECTMP),A ;SAVE FOR BUFFER RANGE TEST RET ; ; ; DISK RET ; ; ; RW128: LD HL,NEW LD DE,HOST LD BC,6 LDIR ;FALL THROUGH INTO 'DOIT' ; ; ... MASTER DISK READ/WRIT  R Z,DOFLP5 CALL MONITR+36 JR DOFLP6 ; DOFLP5: CALL MONITR+39 DOFLP6: RET Z ;RETURN IF READ/WRITE SUCCESSFUL CALL REPORRING INDICATOR) LF EQU 0AH ;LINE FEED CR EQU 0DH ;CARRIAGE RETURN DSKMSG: DEFB CR,LF DEFB 'BIOS error on A: ',NULL OR BYTE EQUAL ZERO RET Z LD C,A ;PRINT CHARACTER IF NOT DOLLAR SIGN CALL OVEC JR PMSG ; ; ; ; PRINT CONTENTS OF A I:1CE700002180F80E02CD24F020572100E8060C0E03E5C5CD24F0C1E120471180AB :1CE71C0000190C10F02180F8CD65EDAF3203003E003204002180F83600SG LD A,(HSTTRK) CALL PUTDEC CALL PMSG LD A,(HSTSEC) CALL PUTDEC LD A,1 OR A RET ; REP5: LD HL,PROMPT CALL PT JR Z,DOFLP4 ;TRY AGAIN IF INDICATED RET ; ; ; ; REPORT: LD E,A ;SAVE PERTINENT ERROR BITS IN E LD A,(HSTDSK) ADD DEFB 'not ready',NULL DEFB 'wrt protect',NULL DEFB 'wrt fault',NULL DEFB 'not found',NULL DEFB 'bad crc',NULL DEFB 'N DECIMAL (RANGE 0..255) ; PUTDEC: LD B,100 CALL PDIGIT ;PRINT HUNDREDS DIGIT LD B,10 CALL PDIGIT ;PRINT TENS DIGIT 1181F853 :1CE7380001DE05EDB021D90006060E81EDB306020E89EDB33E0C3295FF3E01324F :1CE754008CFFC300E80445034105AA47043E3FCD0CF03E07MSG CALL IVEC ;LOOP FOR CONSOLE INPUT CP 'C'-64 JR Z,REP6 XOR A RET ; REP6: XOR A LD (IOBYTE+1),A ;CLEAR AUTO-LOG A,'A' LD (DSKMSG+16),A LD HL,DSKMSG CALL PMSG ;PRINT OUT START OF MESSAGE LD BC,08FFH ;B=LOOPCOUNT C=255 FOR CPIR SCoverrun',NULL DEFB 'drq',NULL DEFB 'busy',NULL DEFB NULL TSMSG: DEFB ' track ',NULL DEFB ' sector ',NULL PROMPT: PNUM: OR '0' LD C,A CALL OVEC RET ; ; PDIGIT: LD C,-1 PDIG1: INC C SUB B JR NC,PDIG1 ADD A,B PUSH AF LD ACD0CF0C303F00000E2 :1CE77000000000000000000000000000000000000D0A2E2E2E2E2043616C2D540D :1CE78C00657820436F6D707574657273203630 BYTE IF CTL-C ABORT INC A RET ;RETURN PERMANENT BIOS ERROR ; ; ; ; CHARACTER STRING OUTPUT ROUTINE. PRINTS ASCII DATAAN LD A,E REP2: RLA JR C,REP3 PUSH AF XOR A CPIR ;SCAN MEMORY LOOKING FOR NULL POP AF DJNZ REP2 REP3: CALL PMS DEFB ' ?','H'-64,NULL ; ; ; ; ; ,C OR A CALL NZ,PNUM ;PRINT NUMERIC CHARACTER IF NON-ZERO POP AF RET ; ; ; ; ; ; NULL EQU 00H ;NULL (END-OF-ST4B2043502F4D2076657273696FFA :1CE7A8006E20322E32202E2E2E2E0D0A2E2E2E2E2E2E2E2E2E2072656C6561730C :1CE7C4006520646174652031352D ; POINTED TO BY HL UNTIL A DOLLAR SIGN IS ENCOUNTERED ; PMSG: LD A,(HL) ;HL POINTS TO ASCII STRING INC HL OR A ;TEST FG ;PRINT ERROR TYPE STRING LD A,E AND 11000000B ;MASK TO NOT-READY AND WRITE-PROTECT JR NZ,REP5 LD HL,TSMSG CALL PM  53657074656D6265722D3832202E2E2E2E2E1F :1CE7E0002E2E2E2E0D0A00900000000000000000000000000000000000000000BE :1CE7FC0000000000C33231EBD1210000471910FD3A33EB67 :1CEA800047CB3CCB1D10FA2B2236EB3A34EBCB3FCB3FCB3F24252802CB3F323571 :1CEA9C00EB2A4DFEED5B4BFED506E2600C923C921000079FE02D03237FE3C019A002166FC093D20FC2263 :1CE9BC004BFECB43C0E5DDE1DDCB2346C0CD82EC3E023235FEAF323AFE3E01D3A96006F292929292929290100F909ED5B38FE3A49FEB720063E44 :1CEC5C00013248FEEB018000EDB0C93A46FE213AFEBEC02A35FEED5B3BFEB7ED7A :1CEC7130E906004E235E237B :1CE8DC005623EDB07EB720F43A0400E60FFE023801AF4F2100D27EFEC32022E9FA :1CE8F8000E01E5C52238FE793234FECD44EBCE323AFE2A3E :1CEB7C0035FE223BFE3A37FE323DFECD9AECC0CD3CECAFC9DD2A4BFEAF3249FE1B :1CEB9800DD7E1FB72008CD82ECAFCDBDECC9CD2EECAF36CE8C398E8C350E9C353E9C356E9C369E9C356E9C353E994 :1CE81800C387E9C333E8C38AE9C38FE9C394E9C346E8C359E8C35AE9C399E9EDF5 :1CE83400D5D5010200EDB0EB010E0009EB011300EDB0DDD2 :1CEAB800E12180F8DD7508DD7409E111100019DD750ADD740B11140019DD750CA5 :1CEAD400DD740DDD :1CE9D800C83A37FE323DFE4FCD1BF020143A35FE323BFE4FCD21F02008214FFE89 :1CE9F400CD2AF02809CD12ED28D7210000C921F0EA224DFE3A55FECB80052C03A37FE213DFEBEC9AF3247FE3245FE3A48FEB7C8DDE5DD2A40FE7B :1CEC9400CDAFECDDE1C92100F9223EFE3E013247FECDC8ECC82147FE3600C9211E1200F118000190C10E93A35FE2D :1CE914003C3235FEC92122E9CD65EDC303F0202063616E6E6F7420626F6F7400E5 :1CE93000030000C303E8030500C247FE79FE02282BFE0107 :1CEBB400281C3A34FE2142FEBE20132A35FEED5B43FEB7ED5220072145FE7EB7A7 :1CEBD0002022CD82ECCD75EBC0CDAFECC9C7396E83196E8DDE5CDA6E9DDE1ED7B96E8C9ED7396E83196E8DDE5CD81 :1CE8500044EBDDE1ED7B96E8C9ED7396E83196E8DDE5CD90EBDDE1ED7B96E8C90C 5E1BDD561C19DD750EDD740FE1AFC9231323131AAE2313C9BE :1CEAF00005EB1A00030700F2003F00C000100002000000800001070D1319050B22 :1CEB0C47CA9DEAE2 :1CEA1000212FEB224DFE214B00E53E09D3C82157FECD2AF02020214FFE1157FE9E :1CEA2C00CDEBEA2015CDEBEAFE01200ECDE9EA2009CDE778 :1CECB00000F9223EFEAF3248FECDC8ECC92134FE113AFE010600EDB0324AFE3A8C :1CECCC003DFE4FCD1BF02806CD12ED28F2C906013A3BFEFE4D3804306DA033800C303F005D2E40000210000023868 :1CE94C00FE800000C306F0C309F079C30CF03E10D381DB81E60CFE0C3EFFC8AFD6 :1CE96800C9CD5AE9BD82ECDD7E133245FE3A34FE3242FE92 :1CEBEC002A35FE2243FE180A35CD67EC281ACDAFECC03A46FE323AFE2A35FE2205 :1CEC08003BFE3A37FE323DFED :1CE86C000000000000000000000000000000000000000000000000000000000090 :1CE8880000000000000000000000000018080000318000CD82EC2100F00111703090F1502080E141A060C1218040A1016008000340100013403F2 :1CEB280000023C0700044000000000040F0000007F00C0002000020000000000DEA2004219800E33E01C2 :1CEA4800D3C83A52FEE6033240EB26006F2929011FEB091141EB010300EDB03C32 :1CEA6400473A50FECB3F20047E18038710FD0609D64D4F6B :1CECE80078D3C8CD21F02806CD12ED28E5C92A3EFE3A3AFE4F3A4AFEB72805CDF5 :1CED040024F01803CD27F0C8CD12ED28E5C95F3A3DFE728FA79D380DB81CB47C8DB80CBBFFE13C0DB81CB4728FA99 :1CE98400DB80C9010000ED4335FEC92134FE71C9ED4338FEC960697AB32805192E :1CE9A00D2240FECD3CEC2142FE347EDDBE10380B28093641 :1CEC2400012A43FE232243FEAFC9473A34FE3DCB3F10FC3C3246FEC93A34FE3D40 :1CEC4000DDA6202D224BFEDF :1CE8A400AF3237FE3C3235FECDD1E920682110FD7EFE1B3860FE2C3006463E2C25 :1CE8C000901803062CAF2100D2F5CDF8E8C10405C4F8E824 :1CEB4400DD2A4BFE3E013249FEDD7E1FB72009CD82EC3E01CDBDECC9CD2EEC3A79 :1CEB600048FEB72805CD82EC180B3A47FEB72805CD67EC28163A46F  C641329FED218FEDCD650E :1CED2000ED01FF087B173807F5AFEDB1F110F6CD65ED7BE6C0201921E8EDCD6537 :1CED3C00ED3A3BFECD6FEDCD65ED3A3AFE00000000000051 :1CEFC0000000000000000000000000000000000000000000000000000000000035 :1CEFDC0000000000000000000000000000000000000000000000000000000000000000000000000000016 :1CEEFC0000000000000000000000000000000000000000000000000000000000FA :1CEF18000000000000000000000000000000000000000073 :1CF19C000000000000000000000000000000000000000000000000000000000057 :1CF1B80000000000000000F6 :1CEE1C0000000000000000000000000000000000000000000000000000000000DA :1CEE3800000000000000000000000000000000000000000000000F0BC000000000000000000000000000000000000000000000000000000000038 :1CF0D80000000000000000000000000000000000000000000000000000000CD6FED3E01B7C921FBEDCD65EDCD09BB :1CED5800E8FE032802AFC9AF3204003CC97E23B7C84FCD0CE818F60664CD80ED48 :1CED7400060ACD80EDF6304F000000000000000000000019 :1CEFF80000000000000000000000000000000000000000000000000000000000FD :1CF01400000000000000000000000000000000000000000000000000000000000000000000000000000DD :1CEF340000000000000000000000000000000000000000000000000000000000C1 :1CE00000000000000000000000000000000000000000003B :1CF1D400000000000000000000000000000000000000000000000000000000001F :1CF1F00000000000000000BE :1CEE540000000000000000000000000000000000000000000000000000000000A2 :1CEE7000000000000000000000000000000000000000001C :1CF0F4000000000000000000000000000000000000000000000000000000000000 :1CF110000000000000000000000000000000000000000000000CD0CE8C90EFF0C9030FC80F579B7C479EDF1C90DCF :1CED90000A42494F53206572726F72206F6E20413A2020006E6F74207265616401 :1CEDAC0079007700000000000000000000000000000000E0 :1CF0300000000000000000000000000000000000000000000000000000000000C4 :1CF04C0000000000000000F500000000000000000000000000000000000000000000000000000000000A5 :1CEF6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003 :1CF20C0000000000000000000000000000000000000000000000000000000000E6 :100000000000000000000086 :1CEE8C00000000000000000000000000000000000000000000000000000000006A :1CEEA80000000000000000000000000000000000000000E3 :1CF12C0000000000000000000000000000000000000000000000000000000000C7 :1CF1480000000000000000000000000000000000072742070726F7465637400777274206661756C74006E6F74204A :1CEDC800666F756E640062616420637263006F76657272756E0064727100627565 :1CED000000000000000000000000000000000000000000A8 :1CF06800000000000000000000000000000000000000000000000000000000008C :1CF0840000000089 :1CEF8800000000000000000000000000000000000000000000000000000000006D :1CEFA40000000000000000000000000000000000000000000000CF2280000000000000000000000000000000000000000000000000000000000CA :1CF24400000000000000000000000000000000000000000000000000000000000000000000000000000000000004E :1CEEC4000000000000000000000000000000000000000000000000000000000032 :1CEEE00000000000000000000000000000000000000000AB :1CF16400000000000000000000000000000000000000000000000000000000008F :1CF1800000000000000000000000000E400737900002020747261636B20002020736563746F722000203F0800005B :1CEE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070 :1CF0A0000000000000000000000000000000000000000000000000000000000054 :1C 0000AE :1CF260000000000000000000000000000000000000000000000000000000000092 :1CF27C00000000000000000000000000000000000000000000:1CF5000000000000000000000000000000000000000000000000000000000000EF :1CF51C00000000000000000000000000000000000000000000000000000000000000000000000000000D0 :1CF43C0000000000000000000000000000000000000000000000000000000000B4 :1CF45800000000000000000000000000000000000000002E :1CF6DC000000000000000000000000000000000000000000000000000000000012 :1CF6F8000000000000000000000000000000000000000000000000000000000000000000000000000000000000095 :1CF378000000000000000000000000000000000000000000000000000000000079 :0000000000000000000000000000000000000000000000F3 :1CF6180000000000000000000000000000000000000000000000000000000000D6 :1CF634000000000000000076 :1CF29800000000000000000000000000000000000000000000000000000000005A :1CF2B40000000000000000000000000000000000000000D3 :1CF5380000000000000000000000000000000000000000000000000000000000B7 :1CF5540000000000000000000000000000000000000000000000000000000000000000000000000000098 :1CF47400000000000000000000000000000000000000000000000000000000007C :1CF4900000000000000000000000000000000000000000F6 :1CF7140000000000000000000000000000000000000000000000000000000000D9 :1CF7300000000000000000000001CF39400000000000000000000000000000000000000000000000000000000005D :1CF3B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA :1CF65000000000000000000000000000000000000000000000000000000000009E 0000000000000000000000003E :1CF2D0000000000000000000000000000000000000000000000000000000000022 :1CF2EC00000000000000000000000000000000000000009B :1CF57000000000000000000000000000000000000000000000000000000000007F :1CF58C0000000000000000000000000000000000000000000000000000000000000000000000000000060 :1CF4AC000000000000000000000000000000000000000000000000000000000044 :1CF4C80000000000000000000000000000000000000000BD :1CF74C0000000000000000000000000000000000000000000000000000000000A1 :1CF768000000000000000041 :1CF3CC000000000000000000000000000000000000000000000000000000000025 :1CF3E80000000000000000000000000000000000000000000 :1CF66C000000000000000000000000000000000000000000000000000000000082 :1CF688000000000000000000000000000000000000000000000000000000000000000000000000000000000000006 :1CF3080000000000000000000000000000000000000000000000000000000000E9 :1CF324000000000000000000000000000000000000000063 :1CF5A8000000000000000000000000000000000000000000000000000000000047 :1CF5C40000000000000000000000000000000000000000000000000000000000000000000000000000028 :1CF4E400000000000000000000000000000000000000000000000000000000000C 0000000000000000000000000000000000000000000000085 :1CF784000000000000000000000000000000000000000000000000000000000069 :1CF7A0000000000000000009 :1CF4040000000000000000000000000000000000000000000000000000000000EC :1CF420000000000000000000000000000000000000000066 :1CF6A400000000000000000000000000000000000000000000000000000000004A :1CF6C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000CD :1CF3400000000000000000000000000000000000000000000000000000000000B1 :1CF35C00000000000000000000000000000000000000002B :1CF5E000000000000000000000000000000000000000000000000000000000000F :1CF5FC000000000000 0000000000000000000000000000000000000000000000000000000004D :1CF7BC0000000000000000000000000000000000000000000000000000000000310000000000000000000000000000000000000000000000000AA :1CFA5C00000000000000000000000000000000000000000000000000000000008E :1CFA70000000008B :1CF97C00000000000000000000000000000000000000000000000000000000006F :1CF9980000000000000000000000000000000000000000E8 :1CFC1C0000000000000000000000000000000000000000000000000000000000CC :1CFC38000000000000000000000000000000000000000000000000000000000000000000000000000000000000050 :1CF8B8000000000000000000000000000000000000000000000000000000000034 :1CF8D40000000000000000000000000000000000000000AD :1CFB58000000000000000000000000000000000000000000000000000000000091 :1CFB74000000000000000000 :1CF7D8000000000000000000000000000000000000000000000000000000000015 :1CF7F4000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000072 :1CFA940000000000000000000000000000000000000000000000000000000000000000000000000000053 :1CF9B4000000000000000000000000000000000000000000000000000000000037 :1CF9D00000000000000000000000000000000000000000B0 :1CFC54000000000000000000000000000000000000000000000000000000000094 :1CFC70000000000000000000000000000000000000000000000000000000000000000000000000000000000000018 :1CF8F00000000000000000000000000000000000000000000000000000000000FC :1CF90C000000000000000000000000000000000000000075 :1CFB90000000000000000000000000000000000000000000000000000000000059 :1CFBAC0000000000000000F9 :1CF8100000000000000000000000000000000000000000000000000000000000DC :1CF82C000000000000000000000000000000000000000056 :1CFAB000000000000000000000000000000000000000000000000000000000003A :1CFACC000000000000000000000000000000000000000000000000000000000000000000000000000001B :1CF9EC0000000000000000000000000000000000000000000000000000000000FF :1CFA08000000000000000000000000000000000000000078 :1CFC8C00000000000000000000000000000000000000000000000000000000005C :1CFCA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000DF :1CF9280000000000000000000000000000000000000000000000000000000000C000000000000000000000000000000000000000000000000003D :1CFBC8000000000000000000000000000000000000000000000000000000000021 :1CFB000000000000000000C0 :1CF8480000000000000000000000000000000000000000000000000000000000A4 :1CF86400000000000000000000000000000000000000001E :1CFAE8000000000000000000000000000000000000000000000000000000000002 :1CFB0400000000000000000000000000000000000000000000000000000000000000000000000000000E2 :1CFA240000000000000000000000000000000000000000000000000000000000C6 :1CFA40000000000000000000000000000000000000000040 :1CFCC4000000000000000000000000000000000000000000000000000000000024 :1CFCE0000000000000000003 :1CF9440000000000000000000000000000000000000000000000000000000000A7 :1CF9600000000000000000000000000000000000000000000000000E4000000000000000000000000000000000000000000000000000000000005 :1CFC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000088 :1CF88000000000000000000000000000000000000000000000000000000000006C :1CF89C0000000000000000000000000000000000000000E5 :1CFB200000000000000000000000000000000000000000000000000000000000C9 :1CFB3C0000000000000000000000000000 0000000000000000000000000000000000000000008 :1CFCFC0000000000000000000000000000000000000000000000000000000000EC :1CFD180000000 ;* DOUBLE DENSITY CBIOS FOR BIGBOARD-II * ;* * ;* COPYRIGHT (C) 1982 BY RUSSELL SMITH * ;* 818 WEST HICKORYFEBC00000000000000000000000000000000000000000000000000000000002A :1CFED800000000000000000000000000000000000000000000000000000000 ;NUMBER OF WINCHESTERS (0..1) IN SYSTEM NFLOPPY EQU 2 ;NUMBER OF FLOPPYS (1..4) IN SYSTEM DOUBLE EQU TRUE ;SINGLE/DOUBLE 00000000000000000000000B :1CFDF80000000000000000000000000000000000000000000000000000000000EF :1CFE14000000000000000000000000004)-200H ; 2 pages lower for DR:C MOVCPM CCP EQU 3400H+BASE ;CONSOLE COMMAND PROCESSOR BDOS EQU 3C06H+BASE ;OPERATING SYSTEM 000000000000000000000000000000000000000000000000000CF :1CFD340000000000000000000000000000000000000000000000000000000000B3 :1CF * ;* DENTON, TEXAS 76201 * ;* * ;* LAST EDIT DATE: 21-AUGUST-82 * ;* * ;************************0000E :1CFEF40000000000000000000000000000000000000000000000000000000000F2 :0DFF100000000000000000000000000000E4 :00000001FF SIDED DRIVE ENABLE FIVE EQU FALSE EIGHT EQU TRUE ;SELECT 8 INCH FLOPPYS ; ; ; ; ... DEFINE TRACK/SECTOR PARAMS FOR STANDA00000000000000000000000000000000D2 :1CFE300000000000000000000000000000000000000000000000000000000000B6 :1CFE4C0000000000000000ENTRY POINT DBBUG EQU 46D2H+BASE ;DEBLOCK BUG LOCATION IN BDOS CBIOS EQU 4A00H+BASE ;BASE OF CUSTOM BIOS CPMSIZE EQU (CBIOS-CD50000000000000000000000000000000000000000000000000000000000097 :1CFD6C00000000000000000000000000000000000000000000000000000000******************************** ; ASEG .SFCOND ;DON'T LIST FALSE CONDITIONALS .Z80 ;USE ZILOG MNEMONICS ; TRUE EQU000E :1CFEF40000000000000000000000000000000000000000000000000000000000F2 :0DFF100000000000000000000000000000E4 :00000001FF RD FLOPPYS ... ; ; IF FIVE NSECTS EQU 18 ;SINGLE DENSITY SECTORS PER TRACK NTRAKS EQU 40 ;NUMBER OF TRACKS PER SURFACE 0000000000000000000000000000000000000000009A :1CFE6800000000000000000000000000000000000000000000000000000000007E :1CFE84000000CP)/128 ;NUMBER OF RECORDS NEEDED FOR CCP+BDOS MONITR EQU 0F000H ;BASE OF SYSTEM MONITOR SYSRAM EQU 0FF00H ;BASE OF SYSTE007B :1CFD8800000000000000000000000000000000000000000000000000000000005F :1CFDA40000000000000000000000000000000000000000000000 1 FALSE EQU 0 ; IOBYTE EQU 0003H ;INTEL CONFIGURATION BYTE USRDRV EQU 00H ;USER/DRIVE TO LOG ON AFTER COLDSTART SERIAL E;******************************************************** ;* * ;* -- CUSTOM BIOS FOR CP/M VERSION 2.2 -- * ;* *RESERV EQU 3 ;NUMBER OF RESERVED TRACKS BLS EQU 2 ;DOUBLE DENSITY BLOCKSIZE IN KBYTES IF DOUBLE ALLMAX EQU ((5*NTRAKS*2)/B000000000000000000000000000000000000000000000000000062 :1CFEA0000000000000000000000000000000000000000000000000000000000046 :1CM VARIABLES SCRATCH EQU 0F880H ;RAM AREA FOR BIOS/CPM BUFFERS ; ; ; ... DEFINE HOW MANY DRIVES IN SYSTEM ... ; WINCH EQU 00000000000043 :1CFDC0000000000000000000000000000000000000000000000000000000000027 :1CFDDC000000000000000000000000000000000000QU FALSE ;DISABLE SIO/CRT CONSOLE COMBINATION ; MSIZE EQU 60 ;MEMORY SIZE IN KBYTES (RANGE 20..60) BASE EQU ((MSIZE-20)*102 LS)/8 DIRSIZ EQU 64 ELSE ALLMAX EQU ((5*NTRAKS)/BLS)/8 DIRSIZ EQU 64 ENDIF ENDIF ; IF EIGHT NSECTS EQU 26 ;SINGLE OR SAME AS CONOUT JP CONIN ;READER VECTOR SAME AS CONIN JP HOME JP SELENTRY ;'SELDISK' WITH LOCAL STACK JP SETTRACK JSIGNON MESSAGE FOR SELECTED MEMORY SIZE CPM ... ; M1 EQU (MSIZE / 10) OR '0' ;TENS DIGIT OF MSIZE IN ASCII M2 EQU (MSIZE MOD ; ; ; ... WARM BOOT ROUTINE ... ; WBOOT: LD SP,0080H CALL FLUSH ;FINISH ANY DEFERRED DISK I/O WBOOT2: LD HL,DPHTAB ;SEL A CONTROL PORT# LSTBAUD EQU 89H ;SIO CHANNEL A BAUDRATE CTC PORT# XONXOFF EQU TRUE ;ENABLE XON-XOFF HANDSHAKE CTS EQU; ; ; ; ... COLD BOOT ROUTINE ... ; BOOT: DEFB 0,0,0,0 ;PUT EXTRA COLDSTART INITIALIZATION DEFB 0,0,0,0 ; CODE HERE IDENSITY SECTORS PER TRACK NTRAKS EQU 77 ;NUMBER OF TRACKS PER SURFACE RESERV EQU 2 ;NUMBER OF RESERVED TRACKS BLS EQU 2 ;DP SETSECT JP SETDMA JP RDENTRY ;'READDB' WITH LOCAL STACK JP WRTENTRY ;'WRITEDB' WITH LOCAL STACK JP LISTST JP SECTRA10) OR '0' ;ONES DIGIT ; DEFB CR,LF DEFB '.... Cal-Tex Computers ',M1,M2,'K CP/M version 2.2 ....' DEFB CR,LF DEFB '...T PARAM POINTER FOR DRIVE ZERO LD (DPHPTR),HL ; FORMAT DESCRIPTOR STUFF XOR A LD (DISK),A INC A LD (TRACK),A CALL PA 00100000B ;CLEAR-TO-SEND BIT POSITION IN SIO RR0 SYNC EQU 00010000B ;SYNC/HUNT BIT DCD EQU 00001000B ;DATA-CARRIER-DETECT BITF NEEDED. BE SURE TO TAKE DEFB 0,0,0,0 ; UP AT LEAST 40 BYTES OF MEMORY IN ANY DEFB 0,0,0,0 ; CASE TO MAKE ROOM FOR THE BIOUBLE DENSITY BLOCKSIZE IN KBYTES IF DOUBLE ALLMAX EQU ((9*NTRAKS*2)/BLS)/8 DIRSIZ EQU 128 ELSE ALLMAX EQU ((9*NTRAKS)/BLN ; ; ; ; ... ENTRY POINTS FOR COMPLEX DISK ROUTINES ... ; SELENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL SELD...... release date 15-September-82 .........' DEFB CR,LF DEFB NULL ; PAGE ; ; ; ... BIOS CODE STARTS HERE WITH JUMP VRAMS ;SELECT A: AND FIND TRACK #1 FORMAT JR NZ,BOMB ;EXIT IF PERMANENT ERROR LD HL,DPHTAB+SPT ;GET LOGICAL SECTORS-PER-T TBE EQU 00000100B ;TRANSMIT-BUFFER-EMPTY BIT TXMASK EQU DCD+TBE ;LOOP UNTIL DCD AND TBE BITS ARE TRUE ; ; ; PAGE OROS DEFB 0,0,0,0 ; SELECT/READ/WRITE LOCAL STACK AREA DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0S)/8 DIRSIZ EQU 128 ENDIF ENDIF ; ; ; .XLIST INCLUDE MACROS.MAC ;ASSEMBLE WITH MACRO DEFINITIONS .LIST ; ; ; ..ISK POP IX LD SP,(SPSAVE) RET ; ; ; RDENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL READDB POP IX LD SP,ECTORS ... ; ORG CBIOS ; JP BOOT JP WBOOT JP CONST IVEC: JP CONIN OVEC: JP CONOUT JP LIST JP CONOUT ;PUNCH VECTRACK PARAM LD A,(HL) CP NSECTS+1 JR C,BOMB ;ERROR IF TRACK IS SINGLE DENSITY CP CPMSIZE JR NC,WBOOT3 ;JUMP IF CCP+BDOG CBIOS-256 .PHASE 0080H INCLUDE ONESECT.MAC ;ONE SECTOR LOADER .DEPHASE ; ; PAGE ORG CBIOS-128 ; ; ; ... CREATE ,0 JR WBOOT2 BIOSTK EQU $ ;BIOS STACK OVERLAYS COLDSTART CODE ; SPSAVE: DEFS 2 ;USER SP SAVE FOR COMPLEX BIOS ENTRYS ; . EQUATES FOR PRINTER DRIVER PORTS/HANDSHAKE MODE ... ; LSTDAT EQU 80H ;SIO CHANNEL A DATA PORT# LSTCTL EQU 81H ;SIO CHANNE(SPSAVE) RET ; ; ; WRTENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL WRITEDB POP IX LD SP,(SPSAVE) RET ;  S FITS ON ONE TRACK LD B,(HL) ;LOAD B WITH # OF SECTORS ON TRACK #1 LD A,CPMSIZE SUB B ;COMPUTE # OF EXTRA SECTORS FRO DEFB 3 ;BDOS VECTOR DEFW 0005H JP BDOS DEFB 3 ;BREAKPOINT VECTOR DEFW 0038H JP MONITR+3 DEFB 5 ;CP/M 2.2 R NUMBER FOR READ CALL READDB ;LOAD NEXT 128 BYTES OF CP/M POP BC POP HL JR NZ,BOMB ;EXIT IF PERMANENT ERROR LD DE,1NZ LIST2: IN A,(LSTCTL) BIT 0,A JR Z,LIST2 ;LOOP TILL NEXT HANDSHAKE CHARACTER IN A,(LSTDAT) ;INPUT AND DISCARD 'XON FOR END OF TABLE JR NZ,GOCPM2 LD A,(IOBYTE+1) ;DO AUTO LOG-ON THING THAT PEOPLE LIKE AND 00001111B CP NFLOPPY+WINCH L) AND TXMASK ;DISCARD BITS NOT BEING TESTED CP TXMASK LD A,255 RET Z ;RETURN WITH A=255 IF PRINTER READY XOR A M TRACK #2 JR WBOOT4 ; WBOOT3: LD B,CPMSIZE ;GET ALL OF CP/M FROM TRACK #1 XOR A ;READ ZERO SECTORS FROM TRACK #2 WBOOT4PATCH 01 3/31/81 DEFW DBBUG NOP NOP LD HL,0 DEFB 2 ;DEFAULT DISK I/O POINTER DEFW POINTR DEFW 0080H DEFB 028 ADD HL,DE INC C DJNZ RTRK2 ;BUMP SECTOR# AND LOAD ADDRESS TILL B=0 LD A,(TRACK) INC A ;BUMP TRACK# AFTER LAST S' CHARACTER ENDIF RET ; ; ; INCLUDE DEBLOCK.MAC ;DEBLOCKING DISK DRIVERS ; IF WINCH INCLUDE XEBEC.MAC ;DISK DRIV JR C,GOCPM3 XOR A ;LOG-ON A: IF DRIVE# IS ILLEGALY LARGE GOCPM3: LD C,A LD HL,CCP LD A,(HL) ;PEEK AT FIRST OPCODE IN CRET ;ELSE RETURN WITH A=0 ; ; ; LIST: CALL LISTST OR A JR Z,LIST ;LOOP TILL SIO CAN SEND A CHARACTER LD A,C O: LD HL,CCP PUSH AF CALL RTRACK ;READ CCP+BDOS FROM DOUBLE DENSITY POP BC INC B DEC B CALL NZ,RTRACK ;CONDITIONAL R ;END OF TABLE ; ; PAGE ; ; ... CHARACTER I/O ROUTINES FOR BIOS ... ; ; CONST: JP MONITR+6 ;MONITOR CONSOLE STATUS ENTECTOR IS READ LD (TRACK),A RET ; ; BOMB: LD HL,DEAD CALL PMSG JP MONITR+3 ; DEAD: DEFB ' cannot boot' DEFB NULL ERS FOR XEBEC CONTROLLER ENDIF ; ; IF $ GE MONITR .PRINTX /OVERLAYING SYSTEM MONITOR/ ENDIF ; BIOSLEN EQU (($ AND -1CP CP 0C3H JR NZ,BOMB ;ABORT IF NOT A JUMP INSTRUCTION JP (HL) ;ELSE JUMP INTO CCP TO START CPM ; ; ; ; RTRACK: LUT (LSTDAT),A ;OUTPUT ASCII TO SIO IF XONXOFF IN A,(LSTCTL) BIT 0,A ;TEST SIO RX DATA AVAILABLE RET Z ;EXIT IF NO INEAD FROM TRACK #2 GOCPM: LD HL,MEMTAB ;PREPARE TO STORE VECTORS & BDOS PATCH LD B,0 GOCPM2: LD C,(HL) ;BC=BYTECOUNT INCRY POINT ; ; CONIN: JP MONITR+9 ;MONITOR CONSOLE INPUT ENTRY POINT ; ; CONOUT: LD A,C JP MONITR+12 ;MONITOR ; ; ; ... ASSORTED CONSTANTS AND WHERE TO PLUG THEM IN ... ; MEMTAB: DEFB 3 ;WARMSTART VECTOR DEFW 0000H JP CBIOS+3 28)+128)-CBIOS ;LENGTH OF CBIOS MOD 128 ; PAGE ;******************************************************** ;* * ;* DD C,1 ;READ TRACK FROM LOGICAL SECTOR #1 RTRK2: PUSH HL PUSH BC LD (POINTR),HL LD A,C LD (SECTOR),A ;SET LOGICAL SECTOPUT FROM PRINTER IN A,(LSTDAT) ;ELSE GET CHARACTER AND TEST FOR RES 7,A ; 'XOFF' CHARACTER (CONTROL-S) CP 'S'-64 RET  HL LD E,(HL) INC HL LD D,(HL) ;DE=DESTINATION POINTER INC HL LDIR ;COPY POOP INTO MEMORY LD A,(HL) OR A ;TEST CONSOLE OUTPUT ENTRY POINT ; ; ; LISTST: LD A,00010000B OUT (LSTCTL),A ;DO SIO CLEAR STATUS/INTERRUPT CMD IN A,(LSTCT ISK I/O BUFFERS FOR BDOS FILE HANDLER * ;* * ;******************************************************** ; ; ; ORG SDE #1 SCRLEN EQU $-SCRATCH ; ; IF $ GE SYSRAM .PRINTX /BIOS OVERLAYING SYSTEM VARIABLES/ ENDIF ; ; .XLIST ;TURNS 1 ;NEXT SECTOR NUMBER NXTTRK: DEFS 2 ;NEXT TRACK NUMBER ; RCOUNT: DEFS 1 ;UNALLOCATED RECORD COUNT SECTMP: DEFS 1 ;HOS:1CE900002180F80E02CD24F020572100EA060C0E03E5C5CD24F0C1E120471180A7 :1CE91C0000190C10F02180F8CD65EFAF3203003E003204002180F83600 DEFS 15 ;DISK PARAMETER BLOCK DEFS 4 ;DEBLOCK PARAMETERS DEFS 1 ;DEBLOCK FLAGS DEFS MAXBLK/8 ;ALLOCATION VECTOR CRATCH DIRBUF: DEFS 128 ;SCRATCH DIRECTORY BUFFER BIGBUF: DEFS 1024 ;HOST SECTOR BUFFER FOR DEBLOCKING ; ; ; DPH MACRO OFF LISTING .PHASE SYSRAM INCLUDE MEMDEF.MAC ;ASSEMBLE SYSTEM VARIABLES IN CASE THEY .DEPHASE ; ARE REFERENCED ANYWHERE T EQUIVALENT OF SECTOR# RDACT: DEFS 1 ;READ BUFFER ACTIVE FLAG WRTACT: DEFS 1 ;WRITE BUFFER ACTIVE FLAG DIR: DEFS 1 ;DIR F1181F84F :1CE9380001DE05EDB021D90006060E81EDB306020E89EDB33E0C3295FF3E01324D :1CE954008CFFC300EA0445034105AA47043E3FCD0CF03E07ENDIF ; ; ; NEW EQU $ SECTOR: DEFS 1 ;BIOS SECTOR NUMBER TRACK: DEFS 2 ;BIOS TRACK NUMBER DISK: DEFS 1 ;BIOS DISK NUMB LOCAL BASE BASE: DEFS 16 ;;DISK PARAMETER HEADER DEFS 15 ;;DISK PARAMETER BLOCK DEFS 4 ;;DEBLOCK PARAMETERS DEFS 1 IN CBIOS ; ; END OR DEFERRED RD/WRT (1=READ) RWFLAG: DEFS 1 ;DIR FOR HOST RD/WRT (1=READ) ; ; DPHPTR: DEFS 2 ;POINTER TO DPH ENTRY PRMPTR:CD0CF0C303F00000DE :1CE97000000000000000000000000000000000000D0A2E2E2E2E2043616C2D540B :1CE98C00657820436F6D707574657273203630ER POINTR: DEFS 2 ;BIOS DMA POINTER ; ; HOST EQU $ HSTSEC: DEFS 1 ;HOST SECTOR NUMBER HSTTRK: DEFS 2 ;HOST TRACK NUMBER ;;DEBLOCK FLAGS DEFS DIRSIZ/4 ;;CHECK VECTOR DEFS ALLMAX ;;ALLOCATION VECTOR ENDM ; ; ; DPHTAB EQU $ REPT NFLOPPY  DEFS 2 ;POINTER TO DISK PARAMS IDBUFF: DEFS 8 ;BUFFER FOR ID RECORDS ON SIDE #0 IDTOP: DEFS 8 ;BUFFER FOR ID RECORDS ON SI4B2043502F4D2076657273696FF8 :1CE9A8006E20322E32202E2E2E2E0D0A2E2E2E2E2E2E2E2E2E2072656C6561730A :1CE9C4006520646174652031352D HSTDSK: DEFS 1 ;HOST DISK NUMBER HSTPTR: DEFS 2 ; HSTDPH: DEFS 2 ;HOST DISK PARAMETER POINTER ; NEXT EQU $ NXTSEC: DEF ;CREATE FLOPPY DISK DATA AREAS DPH ENDM DPHSIZ EQU ($-DPHTAB)/NFLOPPY ; ; IF WINCH DEFS 16 ;DISK PARAMETER HEADER 53657074656D6265722D3832202E2E2E2E2E1D :1CE9E0002E2E2E2E0D0A00900000000000000000000000000000000000000000BC :1CE9FC0000000000C33231EDD1210000471910FD3A33ED61 :1CEC800047CB3CCB1D10FA2B2236ED3A34EDCB3FCB3FCB3F24252802CB3F32356B :1CEC9C00ED2A4DFEED5B4BFED506E2600C923C921000079FE02D03237FE3C019A002166FC093D20FC2261 :1CEBBC004BFECB43C0E5DDE1DDCB2346C0CD82EE3E023235FEAF323AFE3E01D3A56006F292929292929290100F909ED5B38FE3A49FEB720063E42 :1CEE5C00013248FEEB018000EDB0C93A46FE213AFEBEC02A35FEED5B3BFEB7ED78 :1CEE7130EB06004E235E2371 :1CEADC005623EDB07EB720F43A0400E60FFE023801AF4F2100D47EFEC32022E9F6 :1CEAF8000E01E5C52238FE793234FECD44EDCE323AFE2A38 :1CED7C0035FE223BFE3A37FE323DFECD9AEEC0CD3CEEAFC9DD2A4BFEAF3249FE15 :1CED9800DD7E1FB72008CD82EEAFCDBDEEC9CD2EEEAF36CEAC398EAC350EBC353EBC356EBC369EBC356EBC353EB82 :1CEA1800C387EBC333EAC38AEBC38FEBC394EBC346EAC359EAC35AEBC399EBEDE1 :1CEA3400D5D5010200EDB0EB010E0009EB011300EDB0DDCE :1CECB800E12180F8DD7508DD7409E111100019DD750ADD740B11140019DD750CA3 :1CECD400DD740DDD :1CEBD800C83A37FE323DFE4FCD1BF020143A35FE323BFE4FCD21F02008214FFE87 :1CEBF400CD2AF02809CD12EF28D7210000C921F0EC224DFE3A55FECB80052C03A37FE213DFEBEC9AF3247FE3245FE3A48FEB7C8DDE5DD2A40FE79 :1CEE9400CDAFEEDDE1C92100F9223EFE3E013247FECDC8EEC82147FE3600C9211E1200F118000190C10E93A35FE29 :1CEB14003C3235FEC92122EBCD65EFC303F0202063616E6E6F7420626F6F7400DF :1CEB3000030000C303EA030500C247FE79FE02282BFE01FF :1CEDB400281C3A34FE2142FEBE20132A35FEED5B43FEB7ED5220072145FE7EB7A5 :1CEDD0002022CD82EECD75EDC0CDAFEEC9C7396EA3196EADDE5CDA6EBDDE1ED7B96EAC9ED7396EA3196EADDE5CD73 :1CEA500044EDDDE1ED7B96EAC9ED7396EA3196EADDE5CD90EDDDE1ED7B96EAC9FE 5E1BDD561C19DD750EDD740FE1AFC9231323131AAE2313C9BC :1CECF00005ED1A00030700F2003F00C000100002000000800001070D1319050B1E :1CED0C47CA9DECDA :1CEC1000212FED224DFE214B00E53E09D3C82157FECD2AF02020214FFE1157FE9A :1CEC2C00CDEBEC2015CDEBECFE01200ECDE9EC2009CDE772 :1CEEB00000F9223EFEAF3248FECDC8EEC92134FE113AFE010600EDB0324AFE3A88 :1CEECC003DFE4FCD1BF02806CD12EF28F2C906013A3BFEFE4D3804306DC033800C303F005D2E60000210000023860 :1CEB4C00FE800000C306F0C309F079C30CF03E10D381DB81E60CFE0C3EFFC8AFD4 :1CEB6800C9CD5AEBBD82EEDD7E133245FE3A34FE3242FE88 :1CEDEC002A35FE2243FE180A35CD67EE281ACDAFEEC03A46FE323AFE2A35FE22FF :1CEE08003BFE3A37FE323DFED :1CEA6C00000000000000000000000000000000000000000000000000000000008E :1CEA880000000000000000000000000018080000318000CD82EE2100F00111703090F1502080E141A060C1218040A1016008000340100013403F0 :1CED280000023C0700044000000000040F0000007F00C0002000020000000000DEC2004219800E33E01B8 :1CEC4800D3C83A52FEE6033240ED26006F2929011FED091141ED010300EDB03C2A :1CEC6400473A50FECB3F20047E18038710FD0609D64D4F67 :1CEEE80078D3C8CD21F02806CD12EF28E5C92A3EFE3A3AFE4F3A4AFEB72805CDF1 :1CEF040024F01803CD27F0C8CD12EF28E5C95F3A3DFE728FA79D380DB81CB47C8DB80CBBFFE13C0DB81CB4728FA95 :1CEB8400DB80C9010000ED4335FEC92134FE71C9ED4338FEC960697AB32805192C :1CEBA00D2240FECD3CEE2142FE347EDDBE10380B2809363D :1CEE2400012A43FE232243FEAFC9473A34FE3DCB3F10FC3C3246FEC93A34FE3D3E :1CEE4000DDA6202D224BFEDB :1CEAA400AF3237FE3C3235FECDD1EB20682110FD7EFE1B3860FE2C3006463E2C21 :1CEAC000901803062CAF2100D4F5CDF8EAC10405C4F8EA22 :1CED4400DD2A4BFE3E013249FEDD7E1FB72009CD82EE3E01CDBDEEC9CD2EEE3A71 :1CED600048FEB72805CD82EE180B3A47FEB72805CD67EE28163A46F C641329FEF218FEFCD6506 :1CEF2000EF01FF087B173807F5AFEDB1F110F6CD65EF7BE6C0201921E8EFCD652F :1CEF3C00EF3A3BFECD6FEFCD65EF3A3AFE0000000000004F :1CF1C0000000000000000000000000000000000000000000000000000000000033 :1CF1DC0000000000000000000000000000000000000000000000000000000000000000000000000000014 :1CF0FC0000000000000000000000000000000000000000000000000000000000F8 :1CF118000000000000000000000000000000000000000071 :1CF39C000000000000000000000000000000000000000000000000000000000055 :1CF3B80000000000000000F4 :1CF01C0000000000000000000000000000000000000000000000000000000000D8 :1CF03800000000000000000000000000000000000000000000000F2BC000000000000000000000000000000000000000000000000000000000036 :1CF2D80000000000000000000000000000000000000000000000000000000CD6FEF3E01B7C921FBEFCD65EFCD09AD :1CEF5800EAFE032802AFC9AF3204003CC97E23B7C84FCD0CEA18F60664CD80EF40 :1CEF7400060ACD80EFF6304F000000000000000000000017 :1CF1F80000000000000000000000000000000000000000000000000000000000FB :1CF21400000000000000000000000000000000000000000000000000000000000000000000000000000DB :1CF1340000000000000000000000000000000000000000000000000000000000BF :1CF000000000000000000000000000000000000000000039 :1CF3D400000000000000000000000000000000000000000000000000000000001D :1CF3F00000000000000000BC :1CF0540000000000000000000000000000000000000000000000000000000000A0 :1CF07000000000000000000000000000000000000000001A :1CF2F40000000000000000000000000000000000000000000000000000000000FE :1CF310000000000000000000000000000000000000000000000CD0CEAC90EFF0C9030FC80F579B7C479EFF1C90DC7 :1CEF90000A42494F53206572726F72206F6E20413A2020006E6F742072656164FF :1CEFAC0079007700000000000000000000000000000000DE :1CF2300000000000000000000000000000000000000000000000000000000000C2 :1CF24C00000000000000001500000000000000000000000000000000000000000000000000000000000A3 :1CF16C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 :1CF40C0000000000000000000000000000000000000000000000000000000000E4 :100000000000000000000084 :1CF08C000000000000000000000000000000000000000000000000000000000068 :1CF0A80000000000000000000000000000000000000000E1 :1CF32C0000000000000000000000000000000000000000000000000000000000C5 :1CF3480000000000000000000000000000000000072742070726F7465637400777274206661756C74006E6F742048 :1CEFC800666F756E640062616420637263006F76657272756E0064727100627563 :1CEF000000000000000000000000000000000000000000A6 :1CF26800000000000000000000000000000000000000000000000000000000008A :1CF2840000000087 :1CF18800000000000000000000000000000000000000000000000000000000006B :1CF1A40000000000000000000000000000000000000000000000CF4280000000000000000000000000000000000000000000000000000000000C8 :1CF44400000000000000000000000000000000000000000000000000000000000000000000000000000000000004C :1CF0C4000000000000000000000000000000000000000000000000000000000030 :1CF0E00000000000000000000000000000000000000000A9 :1CF36400000000000000000000000000000000000000000000000000000000008D :1CF3800000000000000000000000000E400737900002020747261636B20002020736563746F722000203F08000059 :1CF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006E :1CF2A0000000000000000000000000000000000000000000000000000000000052 :1C 0000AC :1CF460000000000000000000000000000000000000000000000000000000000090 :1CF47C00000000000000000000000000000000000000000000:1CF7000000000000000000000000000000000000000000000000000000000000ED :1CF71C00000000000000000000000000000000000000000000000000000000000000000000000000000CE :1CF63C0000000000000000000000000000000000000000000000000000000000B2 :1CF65800000000000000000000000000000000000000002C :1CF8DC000000000000000000000000000000000000000000000000000000000010 :1CF8F8000000000000000000000000000000000000000000000000000000000000000000000000000000000000093 :1CF578000000000000000000000000000000000000000000000000000000000077 :0000000000000000000000000000000000000000000000F1 :1CF8180000000000000000000000000000000000000000000000000000000000D4 :1CF834000000000000000074 :1CF498000000000000000000000000000000000000000000000000000000000058 :1CF4B40000000000000000000000000000000000000000D1 :1CF7380000000000000000000000000000000000000000000000000000000000B5 :1CF7540000000000000000000000000000000000000000000000000000000000000000000000000000096 :1CF67400000000000000000000000000000000000000000000000000000000007A :1CF6900000000000000000000000000000000000000000F4 :1CF9140000000000000000000000000000000000000000000000000000000000D7 :1CF9300000000000000000000001CF59400000000000000000000000000000000000000000000000000000000005B :1CF5B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8 :1CF85000000000000000000000000000000000000000000000000000000000009C 0000000000000000000000003C :1CF4D0000000000000000000000000000000000000000000000000000000000020 :1CF4EC000000000000000000000000000000000000000099 :1CF77000000000000000000000000000000000000000000000000000000000007D :1CF78C000000000000000000000000000000000000000000000000000000000000000000000000000005E :1CF6AC000000000000000000000000000000000000000000000000000000000042 :1CF6C80000000000000000000000000000000000000000BB :1CF94C00000000000000000000000000000000000000000000000000000000009F :1CF96800000000000000003F :1CF5CC000000000000000000000000000000000000000000000000000000000023 :1CF5E80000000000000000000000000000000000000000000 :1CF86C000000000000000000000000000000000000000000000000000000000080 :1CF888000000000000000000000000000000000000000000000000000000000000000000000000000000000000004 :1CF5080000000000000000000000000000000000000000000000000000000000E7 :1CF524000000000000000000000000000000000000000061 :1CF7A8000000000000000000000000000000000000000000000000000000000045 :1CF7C40000000000000000000000000000000000000000000000000000000000000000000000000000026 :1CF6E400000000000000000000000000000000000000000000000000000000000A 0000000000000000000000000000000000000000000000083 :1CF984000000000000000000000000000000000000000000000000000000000067 :1CF9A0000000000000000007 :1CF6040000000000000000000000000000000000000000000000000000000000EA :1CF620000000000000000000000000000000000000000064 :1CF8A4000000000000000000000000000000000000000000000000000000000048 :1CF8C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000CB :1CF5400000000000000000000000000000000000000000000000000000000000AF :1CF55C000000000000000000000000000000000000000029 :1CF7E000000000000000000000000000000000000000000000000000000000000D :1CF7FC000000000000 0000000000000000000000000000000000000000000000000000000004B :1CF9BC00000000000000000000000000000000000000000000000000000000002F0000000000000000000000000000000000000000000000000A8 :1CFC5C00000000000000000000000000000000000000000000000000000000008C :1CFC700000000089 :1CFB7C00000000000000000000000000000000000000000000000000000000006D :1CFB980000000000000000000000000000000000000000E6 :1CFE1C0000000000000000000000000000000000000000000000000000000000CA :1CFE3800000000000000000000000000000000000000000000000000000000000000000000000000000000000004E :1CFAB8000000000000000000000000000000000000000000000000000000000032 :1CFAD40000000000000000000000000000000000000000AB :1CFD5800000000000000000000000000000000000000000000000000000000008F :1CFD74000000000000000000 :1CF9D8000000000000000000000000000000000000000000000000000000000013 :1CF9F4000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000070 :1CFC940000000000000000000000000000000000000000000000000000000000000000000000000000051 :1CFBB4000000000000000000000000000000000000000000000000000000000035 :1CFBD00000000000000000000000000000000000000000AE :1CFE54000000000000000000000000000000000000000000000000000000000092 :1CFE70000000000000000000000000000000000000000000000000000000000000000000000000000000000000016 :1CFAF00000000000000000000000000000000000000000000000000000000000FA :1CFB0C000000000000000000000000000000000000000073 :1CFD90000000000000000000000000000000000000000000000000000000000057 :1CFDAC0000000000000000F7 :1CFA100000000000000000000000000000000000000000000000000000000000DA :1CFA2C000000000000000000000000000000000000000054 :1CFCB0000000000000000000000000000000000000000000000000000000000038 :1CFCCC0000000000000000000000000000000000000000000000000000000000000000000000000000019 :1CFBEC0000000000000000000000000000000000000000000000000000000000FD :1CFC08000000000000000000000000000000000000000076 :1CFE8C00000000000000000000000000000000000000000000000000000000005A :1CFEA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD :1CFB280000000000000000000000000000000000000000000000000000000000C000000000000000000000000000000000000000000000000003B :1CFDC800000000000000000000000000000000000000000000000000000000001F :1CFD000000000000000000BE :1CFA480000000000000000000000000000000000000000000000000000000000A2 :1CFA6400000000000000000000000000000000000000001C :1CFCE8000000000000000000000000000000000000000000000000000000000000 :1CFD0400000000000000000000000000000000000000000000000000000000000000000000000000000E0 :1CFC240000000000000000000000000000000000000000000000000000000000C4 :1CFC4000000000000000000000000000000000000000003E :1CFEC4000000000000000000000000000000000000000000000000000000000022 :1CFEE0000000000000000001 :1CFB440000000000000000000000000000000000000000000000000000000000A5 :1CFB600000000000000000000000000000000000000000000000000E4000000000000000000000000000000000000000000000000000000000003 :1CFE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000086 :1CFA8000000000000000000000000000000000000000000000000000000000006A :1CFA9C0000000000000000000000000000000000000000E3 :1CFD200000000000000000000000000000000000000000000000000000000000C7 :1CFD3C0000000000000000000000000000 0000000000000000000000000000000000000000006 :1CFEFC0000000000000000000000000000000000000000000000000000000000EA :05FF180000000A FOR BIOS/CPM BUFFERS ; ; ; ... DEFINE HOW MANY DRIVES IN SYSTEM ... ; WINCH EQU 0 ;NUMBER OF WINCHESTERS (0..1) IN SYSTEQU FALSE ;DISABLE SIO/CRT CONSOLE COMBINATION ; MSIZE EQU 60 ;MEMORY SIZE IN KBYTES (RANGE 20..60) BASE EQU (MSIZE-20)*1024AKE MODE ... ; LSTDAT EQU 80H ;SIO CHANNEL A DATA PORT# LSTCTL EQU 81H ;SIO CHANNEL A CONTROL PORT# LSTBAUD EQU 89H ;SIO  ;* DOUBLE DENSITY CBIOS FOR BIGBOARD-II * ;* * ;* COPYRIGHT (C) 1982 BY RUSSELL SMITH * ;* 818 WEST HICKORY(5*NTRAKS)/BLS)/8 DIRSIZ EQU 64 ENDIF ENDIF ; IF EIGHT NSECTS EQU 26 ;SINGLE DENSITY SECTORS PER TRACK NTRAKS EQU 77 00000E4 :00000001FF 00000000000000000006 :1CFEFC0000000000000000000000000000000000000000000000000000000000EA :05FF180000000M NFLOPPY EQU 2 ;NUMBER OF FLOPPYS (1..4) IN SYSTEM DOUBLE EQU TRUE ;SINGLE/DOUBLE SIDED DRIVE ENABLE FIVE EQU FALSE EIGHT CCP EQU 3400H+BASE ;CONSOLE COMMAND PROCESSOR BDOS EQU 3C06H+BASE ;OPERATING SYSTEM ENTRY POINT DBBUG EQU 46D2H+BASE ;DEBLOCCHANNEL A BAUDRATE CTC PORT# XONXOFF EQU TRUE ;ENABLE XON-XOFF HANDSHAKE CTS EQU 00100000B ;CLEAR-TO-SEND BIT POSITION IN * ;* DENTON, TEXAS 76201 * ;* * ;* LAST EDIT DATE: 21-AUGUST-82 * ;* * ;************************ ;NUMBER OF TRACKS PER SURFACE RESERV EQU 2 ;NUMBER OF RESERVED TRACKS BLS EQU 2 ;DOUBLE DENSITY BLOCKSIZE IN KBYTES IF DO EQU TRUE ;SELECT 8 INCH FLOPPYS ; ; ; ; ... DEFINE TRACK/SECTOR PARAMS FOR STANDARD FLOPPYS ... ; ; IF FIVE NSECTS EQK BUG LOCATION IN BDOS CBIOS EQU 4A00H+BASE ;BASE OF CUSTOM BIOS CPMSIZE EQU (CBIOS-CCP)/128 ;NUMBER OF RECORDS NEEDED FOR CCP SIO RR0 SYNC EQU 00010000B ;SYNC/HUNT BIT DCD EQU 00001000B ;DATA-CARRIER-DETECT BIT TBE EQU 00000100B ;TRANSMIT-BUFFER-EMPT******************************** ; ASEG .SFCOND ;DON'T LIST FALSE CONDITIONALS .Z80 ;USE ZILOG MNEMONICS ; TRUE EQUUBLE ALLMAX EQU ((9*NTRAKS*2)/BLS)/8 DIRSIZ EQU 128 ELSE ALLMAX EQU ((9*NTRAKS)/BLS)/8 DIRSIZ EQU 128 ENDIF ENDIF ; U 18 ;SINGLE DENSITY SECTORS PER TRACK NTRAKS EQU 40 ;NUMBER OF TRACKS PER SURFACE RESERV EQU 3 ;NUMBER OF RESERVED TRACKS +BDOS MONITR EQU 0F000H ;BASE OF SYSTEM MONITOR SYSRAM EQU 0FF00H ;BASE OF SYSTEM VARIABLES SCRATCH EQU 0F880H ;RAM AREY BIT TXMASK EQU DCD+TBE ;LOOP UNTIL DCD AND TBE BITS ARE TRUE ; ; ; PAGE ORG CBIOS-256 .PHASE 0080H INCLUDE ONES 1 FALSE EQU 0 ; IOBYTE EQU 0003H ;INTEL CONFIGURATION BYTE USRDRV EQU 00H ;USER/DRIVE TO LOG ON AFTER COLDSTART SERIAL E; ; .XLIST INCLUDE MACROS.MAC ;ASSEMBLE WITH MACRO DEFINITIONS .LIST ; ; ; ... EQUATES FOR PRINTER DRIVER PORTS/HANDSH;******************************************************** ;* * ;* -- CUSTOM BIOS FOR CP/M VERSION 2.2 -- * ;* * BLS EQU 2 ;DOUBLE DENSITY BLOCKSIZE IN KBYTES IF DOUBLE ALLMAX EQU ((5*NTRAKS*2)/BLS)/8 DIRSIZ EQU 64 ELSE ALLMAX EQU ( ECT.MAC ;ONE SECTOR LOADER .DEPHASE ; ; PAGE ORG CBIOS-128 ; ; ; ... CREATE SIGNON MESSAGE FOR SELECTED MEMORY SIZE C OVERLAYS COLDSTART CODE ; SPSAVE: DEFS 2 ;USER SP SAVE FOR COMPLEX BIOS ENTRYS ; ; ; ; ... WARM BOOT ROUTINE ... ; WBOSPSAVE),SP LD SP,BIOSTK PUSH IX CALL WRITEDB POP IX LD SP,(SPSAVE) RET ; ; ; ; ; ... COLD BOOT ROUTINE ... ; =DESTINATION POINTER INC HL LDIR ;COPY POOP INTO MEMORY LD A,(HL) OR A ;TEST FOR END OF TABLE JR NZ,GOCPM2 LD ATOR SAME AS CONIN JP HOME JP SELENTRY ;'SELDISK' WITH LOCAL STACK JP SETTRACK JP SETSECT JP SETDMA JP RDENTRY ;'REAB WITH # OF SECTORS ON TRACK #1 LD A,CPMSIZE SUB B ;COMPUTE # OF EXTRA SECTORS FROM TRACK #2 JR WBOOT4 ; WBOOT3: LD B,CPM ... ; M1 EQU (MSIZE / 10) OR '0' ;TENS DIGIT OF MSIZE IN ASCII M2 EQU (MSIZE MOD 10) OR '0' ;ONES DIGIT ; DEFB CR,LF OT: LD SP,0080H CALL FLUSH ;FINISH ANY DEFERRED DISK I/O WBOOT2: LD HL,DPHTAB ;SET PARAM POINTER FOR DRIVE ZERO LD (DPHPBOOT: DEFB 0,0,0,0 ;PUT EXTRA COLDSTART INITIALIZATION DEFB 0,0,0,0 ; CODE HERE IF NEEDED. BE SURE TO TAKE DEFB 0,0,0,0 ,(IOBYTE+1) ;DO AUTO LOG-ON THING THAT PEOPLE LIKE AND 00001111B CP NFLOPPY+WINCH JR C,GOCPM3 XOR A ;LOG-ON A: IF DRIVEDDB' WITH LOCAL STACK JP WRTENTRY ;'WRITEDB' WITH LOCAL STACK JP LISTST JP SECTRAN ; ; ; ; ... ENTRY POINTS FOR COMPLEPMSIZE ;GET ALL OF CP/M FROM TRACK #1 XOR A ;READ ZERO SECTORS FROM TRACK #2 WBOOT4: LD HL,CCP PUSH AF CALL RTRACK ;READEFB '.... Cal-Tex Computers ',M1,M2,'K CP/M version 2.2 ....' DEFB CR,LF DEFB '......... release date 15-September-82 .....TR),HL ; FORMAT DESCRIPTOR STUFF XOR A LD (DISK),A INC A LD (TRACK),A CALL PARAMS ;SELECT A: AND FIND TRACK #1 FORMAT ; UP AT LEAST 40 BYTES OF MEMORY IN ANY DEFB 0,0,0,0 ; CASE TO MAKE ROOM FOR THE BIOS DEFB 0,0,0,0 ; SELECT/READ/WRITE LO# IS ILLEGALY LARGE GOCPM3: LD C,A LD HL,CCP LD A,(HL) ;PEEK AT FIRST OPCODE IN CCP CP 0C3H JR NZ,BOMB ;ABORT IF NOT X DISK ROUTINES ... ; SELENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL SELDISK POP IX LD SP,(SPSAVE) RET ; ;D CCP+BDOS FROM DOUBLE DENSITY POP BC INC B DEC B CALL NZ,RTRACK ;CONDITIONAL READ FROM TRACK #2 GOCPM: LD HL,MEMTAB ....' DEFB CR,LF DEFB NULL ; PAGE ; ; ; ... BIOS CODE STARTS HERE WITH JUMP VECTORS ... ; ORG CBIOS ; JP BOOT  JR NZ,BOMB ;EXIT IF PERMANENT ERROR LD HL,DPHTAB+SPT ;GET LOGICAL SECTORS-PER-TRACK PARAM LD A,(HL) CP NSECTS+1 JRCAL STACK AREA DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 JR WBOOT2 BIOSTK EQU $ ;BIOS STACKA JUMP INSTRUCTION JP (HL) ;ELSE JUMP INTO CCP TO START CPM ; ; ; ; RTRACK: LD C,1 ;READ TRACK FROM LOGICAL SECTOR #1 ; RDENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL READDB POP IX LD SP,(SPSAVE) RET ; ; ; WRTENTRY: LD (;PREPARE TO STORE VECTORS & BDOS PATCH LD B,0 GOCPM2: LD C,(HL) ;BC=BYTECOUNT INC HL LD E,(HL) INC HL LD D,(HL) ;DEJP WBOOT JP CONST IVEC: JP CONIN OVEC: JP CONOUT JP LIST JP CONOUT ;PUNCH VECTOR SAME AS CONOUT JP CONIN ;READER VEC C,BOMB ;ERROR IF TRACK IS SINGLE DENSITY CP CPMSIZE JR NC,WBOOT3 ;JUMP IF CCP+BDOS FITS ON ONE TRACK LD B,(HL) ;LOAD   RTRK2: PUSH HL PUSH BC LD (POINTR),HL LD A,C LD (SECTOR),A ;SET LOGICAL SECTOR NUMBER FOR READ CALL READDB ;LOAD NEGET CHARACTER AND TEST FOR RES 7,A ; 'XOFF' CHARACTER (CONTROL-S) CP 'S'-64 RET NZ LIST2: IN A,(LSTCTL) BIT 0,A JRTST: LD A,00010000B OUT (LSTCTL),A ;DO SIO CLEAR STATUS/INTERRUPT CMD IN A,(LSTCTL) AND TXMASK ;DISCARD BITS NOT BEING NDM DPHSIZ EQU ($-DPHTAB)/NFLOPPY ; ; IF WINCH DEFS 16 ;DISK PARAMETER HEADER DEFS 15 ;DISK PARAMETER BLOCK DEFS P BDOS DEFB 3 ;BREAKPOINT VECTOR DEFW 0038H JP MONITR+3 DEFB 5 ;CP/M 2.2 PATCH 01 3/31/81 DEFW DBBUG NOP NO ;* * ;******************************************************** ; ; ; ORG SCRATCH DIRBUF: DEFS 128 ;SCRATCH DIREXT 128 BYTES OF CP/M POP BC POP HL JR NZ,BOMB ;EXIT IF PERMANENT ERROR LD DE,128 ADD HL,DE INC C DJNZ RTRK2 ;BUM Z,LIST2 ;LOOP TILL NEXT HANDSHAKE CHARACTER IN A,(LSTDAT) ;INPUT AND DISCARD 'XON' CHARACTER ENDIF RET ; ; ; INTESTED CP TXMASK LD A,255 RET Z ;RETURN WITH A=255 IF PRINTER READY XOR A RET ;ELSE RETURN WITH A=0 ; ; ; LIS4 ;DEBLOCK PARAMETERS DEFS 1 ;DEBLOCK FLAGS DEFS MAXBLK/8 ;ALLOCATION VECTOR ENDIF ; ; ; NEW EQU $ SECTOR: DEFS 1P LD HL,0 DEFB 2 ;DEFAULT DISK I/O POINTER DEFW POINTR DEFW 0080H DEFB 0 ;END OF TABLE ; ; PAGE ; ; ... CHCTORY BUFFER BIGBUF: DEFS 1024 ;HOST SECTOR BUFFER FOR DEBLOCKING ; ; ; DPH MACRO LOCAL BASE BASE: DEFS 16 ;;DISK PARAP SECTOR# AND LOAD ADDRESS TILL B=0 LD A,(TRACK) INC A ;BUMP TRACK# AFTER LAST SECTOR IS READ LD (TRACK),A RET ; ; CLUDE DEBLOCK.MAC ;DEBLOCKING DISK DRIVERS ; IF WINCH INCLUDE XEBEC.MAC ;DISK DRIVERS FOR XEBEC CONTROLLER ENDIF ; ; T: CALL LISTST OR A JR Z,LIST ;LOOP TILL SIO CAN SEND A CHARACTER LD A,C OUT (LSTDAT),A ;OUTPUT ASCII TO SIO IF ;BIOS SECTOR NUMBER TRACK: DEFS 2 ;BIOS TRACK NUMBER DISK: DEFS 1 ;BIOS DISK NUMBER POINTR: DEFS 2 ;BIOS DMA POINTER ; ARACTER I/O ROUTINES FOR BIOS ... ; ; CONST: JP MONITR+6 ;MONITOR CONSOLE STATUS ENTRY POINT ; ; CONIN: JP MONITR+9 METER HEADER DEFS 15 ;;DISK PARAMETER BLOCK DEFS 4 ;;DEBLOCK PARAMETERS DEFS 1 ;;DEBLOCK FLAGS DEFS DIRSIZ/4 ;;CHECK  BOMB: LD HL,DEAD CALL PMSG JP MONITR+3 ; DEAD: DEFB ' cannot boot' DEFB NULL ; ; ; ... ASSORTED CONSTANTS AND WHEREIF $ GE MONITR .PRINTX /OVERLAYING SYSTEM MONITOR/ ENDIF ; BIOSLEN EQU (($ AND -128)+128)-CBIOS ;LENGTH OF CBIOS MOD 128 XONXOFF IN A,(LSTCTL) BIT 0,A ;TEST SIO RX DATA AVAILABLE RET Z ;EXIT IF NO INPUT FROM PRINTER IN A,(LSTDAT) ;ELSE  ; HOST EQU $ HSTSEC: DEFS 1 ;HOST SECTOR NUMBER HSTTRK: DEFS 2 ;HOST TRACK NUMBER HSTDSK: DEFS 1 ;HOST DISK NUMBER HSTP ;MONITOR CONSOLE INPUT ENTRY POINT ; ; CONOUT: LD A,C JP MONITR+12 ;MONITOR CONSOLE OUTPUT ENTRY POINT ; ; ; LISVECTOR DEFS ALLMAX ;;ALLOCATION VECTOR ENDM ; ; ; DPHTAB EQU $ REPT NFLOPPY ;CREATE FLOPPY DISK DATA AREAS DPH E TO PLUG THEM IN ... ; MEMTAB: DEFB 3 ;WARMSTART VECTOR DEFW 0000H JP CBIOS+3 DEFB 3 ;BDOS VECTOR DEFW 0005H J ; PAGE ;******************************************************** ;* * ;* DISK I/O BUFFERS FOR BDOS FILE HANDLER *  TR: DEFS 2 ; HSTDPH: DEFS 2 ;HOST DISK PARAMETER POINTER ; NEXT EQU $ NXTSEC: DEFS 1 ;NEXT SECTOR NUMBER NXTTRK: DEFS 2  Th diskett yo hav receive i single-density I contain sourc an he file fo th CB$ GE SYSRAM .PRINTX /BIOS OVERLAYING SYSTEM VARIABLES/ ENDIF ; ; .XLIST ;TURN OFF LISTING .PHASE SYSRAM INCLUDE MEEXITM ENDIF DIRMSK DEFL (DIRMSK SHR 1) OR 8000H ;GENERATE DIRECTORY MASK IF DTEMP GT ((BSIZE*1024)/32) DTEMP DEFL DTEMP- ;NEXT TRACK NUMBER ; RCOUNT: DEFS 1 ;UNALLOCATED RECORD COUNT SECTMP: DEFS 1 ;HOST EQUIVALENT OF SECTOR# RDACT: DEFS 1 ;; ; ... MACRO DEFINITIONS FOR DISK PARAMETER GENERATION ... ; DPBGEN MACRO BSIZE,DSIZE ;PASS BLOCK SIZE (IN KBYTES) AND .XLIO fo th Cal-Te "Bi Boar II i si guises Tw fo 60 CP/ syste wit a man a fou single-MDEF.MAC ;ASSEMBLE SYSTEM VARIABLES IN CASE THEY .DEPHASE ; ARE REFERENCED ANYWHERE IN CBIOS ; ; END ((BSIZE*1024)/32) ELSE DTEMP DEFL 0 ENDIF ENDM .LIST ENDM ; READ BUFFER ACTIVE FLAG WRTACT: DEFS 1 ;WRITE BUFFER ACTIVE FLAG DIR: DEFS 1 ;DIR FOR DEFERRED RD/WRT (1=READ) RWFLAG: DEFSIST ; DIRECTORY SIZE (IN DIRECTORY ENTRIES) BTEMP DEFL (BSIZE*1024)/128 ;NUMBER OF 128 BYTE RECORDS/BLOCK BSHFT DEFL 0 side 8 floppies tw fo 60 syste wit a man a tw double-side 8 floppies an tw fo 59ˠ CP/͠ sys 1 ;DIR FOR HOST RD/WRT (1=READ) ; ; DPHPTR: DEFS 2 ;POINTER TO DPH ENTRY PRMPTR: DEFS 2 ;POINTER TO DISK PARAMS IDBUFF:BMASK DEFL 0 REPT 16 IF BTEMP EQ 1 EXITM ENDIF BSHFT DEFL BSHFT+1 ;GENERATE BLOCK SHIFT CONSTANT BMASK DEFL (BMAte wit a man a tw 8 floppie an singl 5.25 har disk Th firs pai ar name SS60E an S DEFS 8 ;BUFFER FOR ID RECORDS ON SIDE #0 IDTOP: DEFS 8 ;BUFFER FOR ID RECORDS ON SIDE #1 SCRLEN EQU $-SCRATCH ; ; IF SK SHL 1) OR 1 ;GENERATE BLOCK MASK BTEMP DEFL BTEMP/2 ENDM DTEMP DEFL DSIZE DIRMSK DEFL 0 REPT 16 IF DTEMP EQ 0  S60E8 th secon DS60E am DS60E8 an th thir SW59E an SW59E4 Ther ar pair o file because operating system on the distribution diskette though it may have had patches made to itans a sector was read with a bad crc '3' means a sector could not be found '?' means a seek erT, SID, or ZSID by typing -C. You may wish to SAVŠ thi "Bi Boar II CP/ i a appropriatel name fil ra name BB2FORMT.CO include o th diskett yo hav received Us ske o fo single-densit diskettes#M980,1F7F,4000 ;move the ccp & bdos to 4000 #F100,3FFF,0 ;zero RAM from 0100 up to 4000  th MOVCP͠ utilit include wit CP/͠ distribute b Digita Research Computer o Garlan Texa require cod. BExitin fro MOVCP an SAVEin th syste. We recom- mend the names "CPM59K.COM" anror 2 Creat .CO fil containin 59 o 60 versio o you ow copy of CP/M by:  for for possible use later. 5 Ru th system-copying utility named SYSGEN include o th  ske o fo double-densit ones Whil formattin diskette th progra wil displa on o th  #Iss60ea.HEX ;load our boot & cbios at 0900 #R2000 ;USE 2000 FOR "60EA" FILES,  locate 20 he byte lowe tha normal To create a system disk for your "Big Board II": d "CPM60K.COM". Do not give the files names that imply they are specifically for "Big Boa A) Running MOVCPM as described on pages 30 and 31 of the Digital Research manual titled "An Introduction t CBIOS distribution diskette and follow the instructions that appear on the screen. Be certain any diskette youfollowin symbol pe track: '.' means the track was formatted without verification '+' mean2200 FOR "60E8" FILES, 2400 FOR "59E6" FIL1 Provid yoursel wit severa double-densit diskette wit single-densit trac zeroe b purchas o brd II" for they do not contain our CBIOS. 3) Use DDT, SID, or ZSID to load your CP/M and the appropriate o CP/M Features and Facilities." The copy of MOVCPM used must be the one that came with th write the system to is a double density one with a single density track zero. *******s the track was formatted and verified as correct '1' means the drivve became not ready '2' meES, AND 2600 FOR "59E4" FILES. #M4000,55FF,160 ;move the ccp & bdos back down 4) Exit from DD bootin CP/ fo th origina "Bi Board on you "Bi Boar II an runnin th formattin prog .HEX file of our CBIOS as follows: A>ddt cpm60k.com ;load the cp/m.com file at 0980  ********************************************************* 900-97f ... t0/s1 one-sector boot 980-9ff ...IOA RX INTERRUPT DEFS 2 ;SIOA SPECIAL RX CONDITION INTERRUPT CTCAV: DEFS 2 ;CTCA0 INTERRUPT (KBD STROBE) DEFS 2 DEFS KVEC: DEFS 2 ;ONE-SECOND INTERRUPT MONVEC: DEFS 2 ;EXTENDED MONITOR CRTVEC: DEFS 2 ;CRT OUTPUT DRIVER ; ; ; CLOCK-TIMER  ;MAX FIFO SIZE PARAM ; ; CONNUM: DEFS 1 ;CURRENT CONSOLE DEVICE# (0,1 OR 2) SIOADR: DEFS 1 ;CONSOLE SIO CONTROL/DATA PORT t0/s2 signon message A00-15FF ... t0/s3 to 26 BIOS code (1.5 to 2.5 Kbytes) 1600-2BFF ... t1/s1 2 DEFS 2 ;CTCA3 INTERRUPT (CRT VERT SYNC) CTCBV: DEFS 2 DEFS 2 DEFS 2 ;CTCB2 INTERRUPT (MILLISECOND TIMER) DEFS 2 ;******************************************************** ;* * ;* * ;********************************************INTERRUPT VARIABLES TOD EQU $ SECS: DEFS 1 ;CLOCK SECONDS MINS: DEFS 1 ; MINUTES HRS: DEFS 1 ; HOURS DAY: DE NUMBER DEFS 1 ; ; CONFIG: DEFS 1 ;STDBB AND D/S BITS FOR MONITOR DSCOPY: DEFS 1 ;CONTROL BYTE FOR D/S BANK SWITCH BIT to nn CCP and BDOS portion of CP/M (5.5 Kbytes) 44 sectors if 128 bytes/sector 22 " " 256 " ;CTCB3 INTERRUPT (CLOCK TICK) DMAVEC: DEFS 2 ;DMA READY INTERRUPT DEFS 2 ;DMA MATCH INTERRUPT DEFS 2 ;DMA END-OF-BLOCK************ ; ; SIOVEC: DEFS 2 ;SIOB TX INTERRUPT DEFS 2 ;SIOB EXTERNAL/STATUS INTERRUPT DEFS 2 ;SIOB RX INTERRUPT FS 1 ;CALENDAR DAY MONTH: DEFS 1 ; MONTH YEAR: DEFS 1 ; YEAR ; TICKS: DEFS 2 ;CLOCK TICK INTERRUPT COUNTER NTICKS: STDCPY: DEFS 1 ;CONTROL BYTE FOR STD BANK SWITCH BIT ; ; ; VECTORS FOR EXTRA FUNCTIONS IN KBD/SIO/TIMER INTERRUPTS ; AND FO " 11 " " 512 " " 6 " " 1024 " "  INTERRUPT DEFS 2 ;DMA MATCH/END INTERRUPT DEFS 64 ;EXTRA INTERRUPT VECTORS ; ; ; KEYBOARD DATA INPUT FIFO VARIABLES DEFS 2 ;SIOB SPECIAL RX CONDITION INTERRUPT DEFS 2 ;SIOA TX INTERRUPT DEFS 2 ;SIOA EXTERNAL/STATUS INTERRUPT DEFS 2 ;SDEFS 1 ;NUMBER OF TICKS PER SECOND TIKCNT: DEFS 1 ;PRESCALER FOR 1 SECOND TIMER ; ; ; DISK I/O DRIVER VARIABLES CURDSK:R EXTENDED MONITOR AND CRTOUT ROUTINES. ; KBDVEC: DEFS 2 ;PARALLEL KEYBOARD RDAVEC: DEFS 2 ;SIO RECEIVED DATA INTERRUPT TI FIFCNT: DEFS 1 ;FIFO DATA COUNTER FIFIN: DEFS 1 ;FIFO INPUT POINTER FIFOUT: DEFS 1 ;FIFO OUTPUT POINTER FIFSIZ: DEFS 1   DEFS 1 ;CURRENTLY SELECTED DISK# CURTRK: DEFS 1 ;TRACK POSITION OF SELECTED DRIVE TRKTAB: DEFS 4 ;HEAD POSITIONS FOR 4 DRIDEFS 1 ;CURSOR-MOVE REQUEST FLAG CURSOR: DEFS 2 ;OFFSET (0..2047) TO CURSOR LOCATION OLDCSR: DEFS 2 ;POINTER TO CURSOR IN AFS 1 ;... LAST CTCA1 COUNT ; ; ; ; CRT OUTPUT DRIVER VARIABLES RC EQU $ ;ROW/COLUMN FOR CRT CURSOR LOCATION ROW: DEFS ,A ENDIF IF SERIAL LD HL,(MONITR+16) ;PATCH MONITOR CONOUT VECTOR TO LD (MONITR+13),HL ; DIRECT OUTPUT TO BUILT-IN CRT DWRITE RETRY COUNT FNDTRY: DEFS 1 ;SEEK RETRY COUNT ERRTYP: DEFS 1 ;ERROR STATUS FOR READ/WRITE ROUTINES IOPTR: DEFS 2 ;DISECT: LD HL,DIRBUF LD C,2 CALL MONITR+36 ;READ SIGNON MESSAGE INTO TEMP BUFFER JR NZ,BTERR LD HL,CBIOS LD B,BIOSLEN/1VES DEFS 4 ;DENSITY CONTROL BITS FOR 4 DRIVES SPEED: DEFS 1 ;SEEK SPEED FOR 1771 COMMANDS SETTLE: DEFS 1 ;HEAD SETTLING TTTR MEMORY CRTFLG: DEFS 1 ;CRT PARAMETER BITS ; ; ; ; ; FREE MEMORY LIST POINTER FREPTR: DEFS 2 ; ; 1 COL: DEFS 1 BLANK: DEFS 1 ;CHARACTER USED FOR BLANK FILL ATTRIB: DEFS 1 ;CURRENT CHARACTER ATTRIBUTE BITS GMODE: DEFS 1 RIVER ENDIF LD HL,DIRBUF CALL PMSG ;OUTPUT SIGNON MSG PARKED IN 'DIRBUF' XOR A LD (IOBYTE),A ;CLEAR IOBYTE LD A,USRK I/O BUFFER POINTER SELCPY: DEFS 1 ;COPY OF DATA IN SELECT/MUX OUTPUTS STPVEC: DEFS 2 ;VECTOR FOR STEP FINITE STATE MACHINE28 LD C,3 OSEC2: PUSH HL ;SAVE PARAMETERS PUSH BC CALL MONITR+36 ;CALL MONITOR DISK READ ROUTINE POP BC POP HL JR IME BLKSIZ: DEFS 2 ;MAX DMA BLOCK SIZE FOR READ/WRITE NSTOP: DEFS 1 ;NUMBER OF INDEX PULSES TILL DISK STOP NREVS: DEFS 1 ; ;CURRENT DISPLAY MODE BITS ESCVEC: DEFS 2 ;POINTER FOR LEAD-IN SEQUENCE ROUTINES ROWTMP: DEFS 1 SCROLL: DEFS 1 ;SCROLL REQDRV LD (IOBYTE+1),A ;SET DEFAULT DRIVE/USER FOR COLDSTART LD HL,SCRATCH LD (HL),0 LD DE,SCRATCH+1 LD BC,SCRLEN-1 LDI STPCMD: DEFS 1 ;... 179X STEP COMMAND BYTE STPCNT: DEFS 1 ;... LOOP COUNT STPDLY: DEFS 1 ;... DELAY COUNT INUSE: DEFS 1 NZ,BTERR LD DE,128 ADD HL,DE INC C DJNZ OSEC2 ;REPEAT UNTIL 12 SECTOR BIOS READ IN ; ; ... PUT COLDSTART INIT HERE TONUMBER OF INDEX PULSES BEFORE READY DSKTYP: DEFS 1 ;DISK TYPE / DENSITY INDICATOR MAXRWT: DEFS 1 ;MAXIMUM RETRY NUMBER FOR D;******************************************************** ;* * ;* ONE-SECTOR LOADER FOR FIRST STAGE DD BOOT * ;* UEST FLAG START: DEFS 2 ;CONTENTS OF 6845 START ADDRESS REG NEWLIN: DEFS 2 ;RELATIVE ADDR OF NEW LINE AFTER SCROLL MOVECS: R ;ZERO-OUT SCRATCH MEMORY FOR BIOS LD HL,LSTINIT LD B,6 LD C,LSTCTL OTIR ;SET PRINTER PARITY/LENGTH/STOP BITS LD  ;DISKS IN-USE FLAG FOR BACKGROUND DSKCNT: DEFS 1 ;... DISK TURN-OFF COUNTER RDYCNT: DEFS 1 ;... NOT-READY TIMER OLDCTC: DE CONSERVE BIOS SPACE .. ; IF WINCH LD A,RST+ON OUT (SASI+1),A ;RESET SASI BUS CONTROLLER(S) LD A,RST+OFF OUT (SASI+1)ISK I/O CURSEC: DEFS 1 ;SECTOR# FOR READ/WRITE SECTOR CMDTYP: DEFS 1 ;COMMAND BYTE FOR READS/WRITES RWTRY: DEFS 1 ;READ/* ;******************************************************** ; ; ; ... READ CBIOS FROM SINGLE DENSITY TRACK ZERO ... ; ONES B,2 LD C,LSTBAUD OTIR ;SET PRINTER BAUDRATE LD A,12 LD (NREVS),A ;MAKE DRIVE READY WAIT 12 REVOLUTIONS LD A,1 LD ( :1CE86C000000000000000000000000000000000000000000000000000000000090 :1CE8880000000000000000000000000018080000318000CD52EC2100F4B2043502F4D2076657273696FFA :1CE7A8006E20322E32202E2E2E2E0D0A2E2E2E2E2E2E2E2E2072656C65617365D5 :1CE7C40020646174652031352D538710FD3201EBD1210033 :1CEA480000471910FD3A03EB47CB3CCB1D10FA2B2206EB3A04EBCB3FCB3FCB3F58 :1CEA640024252802CB3F3205EB2AD5FEED5BITR+12 JP MONITR+3 ;JUMP BACK TO MONITOR ROM ; ; ; 728FA79D380DB81CB47C8DB80CBBFFE13C0DB81CB4728FA99 :1CE98400DB80C9010000ED43BDFEC921BCFE71C9ED43C0FEC960697AB328051996 :1CE9A00TRKTAB+4),A ;SET DRIVE ZERO TO DOUBLE DENSITY JP CBIOS ;EXECUTE BIOS COLDSTART ROUTINE ; ; ; LSTINIT: ;SERIAL PRINTER ID22D3FE87 :1CE8A400AF32BFFE3C32BDFECDD1E920682110FD7EFE1B3860FE2C3006463E2C15 :1CE8C000901803062CAF2100D2F5CDF8E8C10405C4F8E82657074656D6265722D3832202E2E2E2E2E2E56 :1CE7E0002E2E2E2E0D0A00900000000000000000000000000000000000000000BE :1CE7FC0000000000C3D3FED5D5D5010200EDB0EB010E00C8 :1CEA800009EB011300EDB0DDE12180F8DD7508DD7409E111100019DD750ADD7402 :1CEA9C000B11140019DD750CDD:1CE700002180F80E02CD24F020572100E8060C0E03E5C5CD24F0C1E120471180AB :1CE71C0000190C10F02180F8CD35EDAF3203003E003204002180F8360006E2600C923C921000079FE04D032BFFE3C016F002191FC093D20FC22D9 :1CE9BC00D3FECB43C0E5DDE1DDCB2346C0CD52EC3E0232BDFEAF32C2FE3E01D341NIT CONSTANTS DEFB 4 DEFB 01000101B ;16X CLOCK / 1 STOP BIT / ODD PARITY DEFB 3 DEFB 01000001B ;RX 7 BIT CHARACTERS DE130E906004E235E237B :1CE8DC005623EDB07EB720F43A0400E60FFE043801AF4F2100D27EFEC32022E9F8 :1CE8F8000E01E5C522C0FE7932BCFECD14EBC6CE8C398E8C350E9C353E9C356E9C369E9C356E9C353E994 :1CE81800C387E9C333E8C38AE9C38FE9C394E9C346E8C359E8C35AE9C399E9EDF5 :1CE83400740DDD5E1BDD561C19DD750EDD740FE1AFC9235F :1CEAB8001323131AAE2313C9D5EA1A00030700F2003F00C00010000200000080CC :1CEAD4000001070D1181F883 :1CE73800016606EDB021D90006060E81EDB306020E89EDB33E0C3295FF3E0132C6 :1CE754008CFFC300E80445034105AA47043E3FCD0CF03E07 :1CE9D800C83ABFFE32C5FE4FCD1BF020143ABDFE32C3FE4FCD21F0200821D7FEE1 :1CE9F400CD2AF02809CDE2EC28D7210000C921C0EA22D5FE3ADDFECBFB 5 DEFB 10101010B ;TX 7 BIT CHARACTERS / DTR AND RTS HIGH DEFB 01000111B ;PROGRAM CTC AND LOAD TIME CONST DEFB 4 ;DIV1E1200F118000190C10E93ABDFEC5 :1CE914003C32BDFEC92122E9CD35EDC303F0202063616E6E6F7420626F6F74008D :1CE93000030000C303E8030500C7396E83196E8DDE5CDA6E9DDE1ED7B96E8C9ED7396E83196E8DDE5CD81 :1CE8500014EBDDE1ED7B96E8C9ED7396E83196E8DDE5CD60EBDDE1ED7B96E8C96C 1319050B111703090F1502080E141A060C1218040A101600C7 :1CEAF000800034010001340300023C0700044000000000040F0000007F00C00042 :1CEB0CCD0CF0C303F00000E2 :1CE77000000000000000000000000000000000000D0A2E2E2E2E2043616C2D540D :1CE78C00657820436F6D70757465727320363047CA6DEA63 :1CEA100021FFEA22D5FE214B00E53ADAFEE6033210EB26006F292901EFEA091197 :1CEA2C0011EB010300EDB03C473AD8FECB3F20047E1803IDE BY 4 GIVES 9600 BAUD ; ; ; BTERR: LD A,'?' CALL MONITR+12 ;OUTPUT ERROR INDICATION TO CONSOLE LD A,'G'-64 CALL MON306DA033800C303F005D2E4000021000002C0E0 :1CE94C00FE800000C306F0C309F079C30CF03E10D381DB81E60CFE0C3EFFC8AFD6 :1CE96800C9CD5AE9B  002000020000000000DD2AD3FE3E0132D1FEDD7E1FB72009CD52EC3E010F :1CEB2800CD8DECC9CDFEEB3AD0FEB72805CD52EC180B3ACFFEB72805CD37EC28E7271006275737900002020747261636B20002020736563746F00 :1CEDC800722000203F0800D6000000000000000000000000000000000000000060 :1CED3AC5FEC64173 :1CECE800326FED215FEDCD35ED01FF087B173807F5AFEDB1F110F6CD35ED7BE6C4 :1CED0400C0201921B8EDCD35ED3AC3FECD3FEDCD35ED0089 :1CEF8800000000000000000000000000000000000000000000000000000000006D :1CEFA40000000000000000000000000000000000000000000000DA62026006F292929292929290100F909ED5BC096 :1CEC2400FE3AD1FEB720063E0132D0FEEB018000EDB0C93ACEFE21C2FEBEC02A50 :1CEC4000BDFEED500000000000000000000000000000004E :1CEEC4000000000000000000000000000000000000000000000000000000000032 :1CEEE000000000000000000F :1CEB4400163ACEFE32C2FE2ABDFE22C3FE3ABFFE32C5FECD6AECC0CD0CECAFC9D3 :1CEB6000DD2AD3FEAF32D1FEDD7E1FB72008CD52ECAFCD8DECC9CDFE4000000000000000000000000000000000000000000000000000000000013 :1CEE000000000000000000000000000000000000000000000000000000000003AC2FECD3FED3E01B7C9B0 :1CED200021CBEDCD35EDCD09E8FE032802AFC9AF3204003CC97E23B7C84FCD0C7C :1CED3C00E818F60664CD50ED060ACD50ED00000000000051 :1CEFC0000000000000000000000000000000000000000000000000000000000035 :1CEFDC000000000000000000000000000000000000BC3FEB7ED52C03ABFFE21C5FEBEC9AF32CFFE32CDFE3AD0FE29 :1CEC5C00B7C8DDE5DD2AC8FECD7FECDDE1C92100F922C6FE3E0132CFFECD98EC40 :1CEC70000000000000000000000000000000000000000016 :1CEEFC0000000000000000000000000000000000000000000000000000000000FA :1CEF180000000EEBAF32CF89 :1CEB7C00FE79FE02282BFE01281C3ABCFE21CAFEBE20132ABDFEED5BCBFEB7ED08 :1CEB980052200721CDFE7EB72022CD52ECCD45EBC0CD70F6 :1CEE1C0000000000000000000000000000000000000000000000000000000000DA :1CEE3800000000000000000000000000000000000000000000000F6304FCD0CE8C90EFF0C9030FC80F5EE :1CED580079B7C449EDF1C90D0A42494F53206572726F72206F6E20413A20200055 :1CED74006E6F742072656164000000000000000000000019 :1CEFF80000000000000000000000000000000000000000000000000000000000FD :1CF01400000000000000000000000000800C821CFFE3600C92100F922C6FEAF32D0FECD98ECC921BCFE11C2FE0155 :1CEC94000600EDB032D2FE3AC5FE4FCD1BF02806CDE2EC28F2C906013AC3FEFE000000000000000000000000000000000000000000000000000DD :1CEF340000000000000000000000000000000000000000000000000000000000C1 :1CEFECC9CD52ECDD7E133211 :1CEBB400CDFE3ABCFE32CAFE2ABDFE22CBFE180A35CD37EC281ACD7FECC03ACE33 :1CEBD000FE32C2FE2ABDFE22C3FE3ABFFE300000000000BE :1CEE540000000000000000000000000000000000000000000000000000000000A2 :1CEE70000000000000000000000000000000000000079007772742070726F74656374007772742066613B :1CED9000756C74006E6F7420666F756E640062616420637263006F766572727563 :1CEDAC006E006400000000000000000000000000000000E0 :1CF0300000000000000000000000000000000000000000000000000000000000C4 :1CF04C0000000000000000EF :1CECB0004D38040609D64D4F78D3C8CD21F02806CDE2EC28E5C92AC6FE3AC2FEC6 :1CECCC004F3AD2FEB72805CD24F01803CD27F0C8CDE2EC28E5C95FF500000000000000000000000000000000000000000000000000000000000A5 :1CEF6C000000000000000000000000000000000000000000000000000000002C5FEDD22C8FECD0CEC21CAFE347E60 :1CEBEC00DDBE10380B280936012ACBFE2322CBFEAFC9473ABCFE3DCB3F10FC3C74 :1CEC080032CEFEC93ABCFE3DD00000000000000000000086 :1CEE8C00000000000000000000000000000000000000000000000000000000006A :1CEEA8000000000000000000000000000! 000000000000000000000000000000000000000000A8 :1CF06800000000000000000000000000000000000000000000000000000000008C :1CF084000000000000000000000000000000000000000006 :1CF3080000000000000000000000000000000000000000000000000000000000E9 :1CF32400000000000000CF2280000000000000000000000000000000000000000000000000000000000CA :1CF244000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028 :1CF4E400000000000000000000000000000000000000000000000000000000000C 00000000000000000000000AB :1CF16400000000000000000000000000000000000000000000000000000000008F :1CF180000000000000000000000000000000000000000009 :1CF4040000000000000000000000000000000000000000000000000000000000EC :1CF420000000000000000000000000000000000000000000000000000000000000000000000000000000000000070 :1CF0A0000000000000000000000000000000000000000000000000000000000054 :1C00000000000000000000000000000000000000000000CD :1CF3400000000000000000000000000000000000000000000000000000000000B1 :1CF35C00000000AE :1CF260000000000000000000000000000000000000000000000000000000000092 :1CF27C00000000000000000000000000000000000000000000:1CF5000000000000000000000000000000000000000000000000000000000000EF :1CF51C000000000000000000000000000000000000000000000000000000000000000000000000000000000000073 :1CF19C000000000000000000000000000000000000000000000000000000000057 :1CF1B80000000000000000000000000000000000000000D0 :1CF43C0000000000000000000000000000000000000000000000000000000000B4 :1CF45800000000000000000000000F0BC000000000000000000000000000000000000000000000000000000000038 :1CF0D8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095 :1CF378000000000000000000000000000000000000000000000000000000000079 :0000000000000076 :1CF29800000000000000000000000000000000000000000000000000000000005A :1CF2B40000000000000000000000000000000000000000D3 :1CF5380000000000000000000000000000000000000000000000000000000000B7 :1CF55400000000000000000000000000000000000000000000000000000000000000000000000000000000000003B :1CF1D400000000000000000000000000000000000000000000000000000000001F :1CF1F0000000000000000000000000000000000000000098 :1CF47400000000000000000000000000000000000000000000000000000000007C :1CF49000000000000000001C :1CF0F4000000000000000000000000000000000000000000000000000000000000 :1CF1100000000000000000000000000000000000000000000001CF39400000000000000000000000000000000000000000000000000000000005D :1CF3B0000000000000000000000000000000000000000000000000000000000000000000000000000003E :1CF2D0000000000000000000000000000000000000000000000000000000000022 :1CF2EC00000000000000000000000000000000000000009B :1CF57000000000000000000000000000000000000000000000000000000000007F :1CF58C000000000000000000000000000000000000000000000000000000000000000000000000000000000000003 :1CF20C0000000000000000000000000000000000000000000000000000000000E6 :100000000000000000000000000000000000000000000060 :1CF4AC000000000000000000000000000000000000000000000000000000000044 :1CF4C80000000000000000E3 :1CF12C0000000000000000000000000000000000000000000000000000000000C7 :1CF148000000000000000000000000000000000000000041 :1CF3CC000000000000000000000000000000000000000000000000000000000025 :1CF3E80000000000000000000000000000000000000000000" 0000000000000000000000000063 :1CF5A8000000000000000000000000000000000000000000000000000000000047 :1CF5C40000000000000000000000000000000000000000C0 :1CF8480000000000000000000000000000000000000000000000000000000000A4 :1CF8640000000000000000000000000000000000000000000000000000000000000000000000000000085 :1CF784000000000000000000000000000000000000000000000000000000000069 :1CF7A00000000000000000000000000000000000000000E2 :1CFA240000000000000000000000000000000000000000000000000000000000C6 :1CFA40000000000000000066 :1CF6A400000000000000000000000000000000000000000000000000000000004A :1CF6C0000000000000000000000000000000000000000003 :1CF9440000000000000000000000000000000000000000000000000000000000A7 :1CF96000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B :1CF5E000000000000000000000000000000000000000000000000000000000000F :1CF5FC000000000000000000000000000000000000000088 :1CF88000000000000000000000000000000000000000000000000000000000006C :1CF89C000000000000000000000000000000000000000000000000000000000000000000000000000004D :1CF7BC0000000000000000000000000000000000000000000000000000000000310000000000000000000000000000000000000000000000000AA :1CFA5C00000000000000000000000000000000000000000000000000000000008E :1CFA7000000000000000002E :1CF6DC000000000000000000000000000000000000000000000000000000000012 :1CF6F800000000000000000000000000000000000000008B :1CF97C00000000000000000000000000000000000000000000000000000000006F :1CF9980000000000000000000000000000000000000000000000000000000000000000000000000000000000000F3 :1CF6180000000000000000000000000000000000000000000000000000000000D6 :1CF634000000000000000000000000000000000000000050 :1CF8B8000000000000000000000000000000000000000000000000000000000034 :1CF8D40000000000 :1CF7D8000000000000000000000000000000000000000000000000000000000015 :1CF7F4000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000072 :1CFA940000000000000000000000000000000000000000000000000000000000000000000000000000000000000F6 :1CF7140000000000000000000000000000000000000000000000000000000000D9 :1CF730000000000000000000000000000000000000000053 :1CF9B4000000000000000000000000000000000000000000000000000000000037 :1CF9D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA :1CF65000000000000000000000000000000000000000000000000000000000009E 00000000000000000000000000000000000000000000000018 :1CF8F00000000000000000000000000000000000000000000000000000000000FC :1CF90C00000000F9 :1CF8100000000000000000000000000000000000000000000000000000000000DC :1CF82C000000000000000000000000000000000000000056 :1CFAB000000000000000000000000000000000000000000000000000000000003A :1CFACC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000BD :1CF74C0000000000000000000000000000000000000000000000000000000000A1 :1CF76800000000000000000000000000000000000000001B :1CF9EC0000000000000000000000000000000000000000000000000000000000FF :1CFA080000000000000000000 :1CF66C000000000000000000000000000000000000000000000000000000000082 :1CF6880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DF :1CF9280000000000000000000000000000000000000000000000000000000000C# 00000000001E :1CFAE8000000000000000000000000000000000000000000000000000000000002 :1CFB0400000000000000000000000000000000000000007B :1CFD8800000000000000000000000000000000000000000000000000000000005F :1CFDA40000000000000000000000000000000000000000000000000000000000000000000000000000040 :1CFCC4000000000000000000000000000000000000000000000000000000000024 :1CFCE000000000000000000000000000000000000000009D :1CFF64000000000000000000000000000000000000000000000000000000000081 :1CFF800000000000000000000000000E4000000000000000000000000000000000000000000000000000000000005 :1CFC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062 :1CFEA0000000000000000000000000000000000000000000000000000000000046 :1C00000000000000000000E5 :1CFB200000000000000000000000000000000000000000000000000000000000C9 :1CFB3C000000000000000000000000000000000000000043 :1CFDC0000000000000000000000000000000000000000000000000000000000027 :1CFDDC0000000000000000000000000000000000000000000000000000000000000000000000000000008 :1CFCFC0000000000000000000000000000000000000000000000000000000000EC :1CFD18000000000000000000000000000000000000000065 :09FF9C000000000000000000005C :00000001FF 000000000081 :1CFF8000000000000000000000000000E8 :1CFC1C0000000000000000000000000000000000000000000000000000000000CC :1CFC3800000000000000000000000000000000000000000000000FEBC00000000000000000000000000000000000000000000000000000000002A :1CFED80000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD :1CFB58000000000000000000000000000000000000000000000000000000000091 :1CFB7400000000000000000000000000000000000000000B :1CFDF80000000000000000000000000000000000000000000000000000000000EF :1CFE1400000000000000000000000000000000000000000000000000000000000000000000000000000CF :1CFD340000000000000000000000000000000000000000000000000000000000B3 :1CF00000000000B0 :1CFC54000000000000000000000000000000000000000000000000000000000094 :1CFC7000000000000000000000000000000000000000000E :1CFEF40000000000000000000000000000000000000000000000000000000000F2 :1CFF10000000000000000000000000000000000000000000000000000000000000000000000000000000000000075 :1CFB90000000000000000000000000000000000000000000000000000000000059 :1CFBAC0000000000000000000000000000000000000000D2 :1CFE300000000000000000000000000000000000000000000000000000000000B6 :1CFE4C0000000000000000D50000000000000000000000000000000000000000000000000000000000097 :1CFD6C0000000000000000000000000000000000000000000000000000000000000000000000000000078 :1CFC8C00000000000000000000000000000000000000000000000000000000005C :1CFCA80000000000000000000000000000000000000000D5 :1CFF2C0000000000000000000000000000000000000000000000000000000000B9 :1CFF4800000000000000000000000000000000000000000000000000000000000000000000000000000000000003D :1CFBC8000000000000000000000000000000000000000000000000000000000021 :1CFB0000000000000000000000000000000000000000009A :1CFE6800000000000000000000000000000000000000000000000000000000007E :1CFE84000000$ STEM VARIABLES SCRATCH EQU 0F880H ;RAM AREA FOR BIOS/CPM BUFFERS ; ; ; ... DEFINE HOW MANY DRIVES IN SYSTEM ... ; WINCH EQU FALSE ;DISABLE SIO/CRT CONSOLE COMBINATION ; MSIZE EQU 60 ;MEMORY SIZE IN KBYTES (RANGE 20..60) BASE EQU ((MSIZE-20)*102; ... EQUATES FOR PRINTER DRIVER PORTS/HANDSHAKE MODE ... ; LSTDAT EQU 80H ;SIO CHANNEL A DATA PORT# LSTCTL EQU 81H ;SIO CH ;* DOUBLE DENSITY CBIOS FOR BIGBOARD-II * ;* * ;* COPYRIGHT (C) 1982 BY RUSSELL SMITH * ;* 818 WEST HICKORY2)/BLS)/8 DIRSIZ EQU 64 ELSE ALLMAX EQU ((5*NTRAKS)/BLS)/8 DIRSIZ EQU 64 ENDIF ENDIF ; IF EIGHT NSECTS EQU 26 ;SINQU 0 ;NUMBER OF WINCHESTERS (0..1) IN SYSTEM NFLOPPY EQU 4 ;NUMBER OF FLOPPYS (1..4) IN SYSTEM DOUBLE EQU FALSE ;SINGLE/DOU4)-200H ; 2 pages lower for DR:C MOVCPM CCP EQU 3400H+BASE ;CONSOLE COMMAND PROCESSOR BDOS EQU 3C06H+BASE ;OPERATING SYSTANNEL A CONTROL PORT# LSTBAUD EQU 89H ;SIO CHANNEL A BAUDRATE CTC PORT# XONXOFF EQU TRUE ;ENABLE XON-XOFF HANDSHAKE CTS * ;* DENTON, TEXAS 76201 * ;* * ;* LAST EDIT DATE: 21-AUGUST-82 * ;* * ;************************GLE DENSITY SECTORS PER TRACK NTRAKS EQU 77 ;NUMBER OF TRACKS PER SURFACE RESERV EQU 2 ;NUMBER OF RESERVED TRACKS BLS EQU 2BLE SIDED DRIVE ENABLE FIVE EQU FALSE EIGHT EQU TRUE ;SELECT 8 INCH FLOPPYS ; ; ; ; ... DEFINE TRACK/SECTOR PARAMS FOR STEM ENTRY POINT DBBUG EQU 46D2H+BASE ;DEBLOCK BUG LOCATION IN BDOS CBIOS EQU 4A00H+BASE ;BASE OF CUSTOM BIOS CPMSIZE EQU (CBIO EQU 00100000B ;CLEAR-TO-SEND BIT POSITION IN SIO RR0 SYNC EQU 00010000B ;SYNC/HUNT BIT DCD EQU 00001000B ;DATA-CARRIER-DETECT******************************** ; ASEG .SFCOND ;DON'T LIST FALSE CONDITIONALS .Z80 ;USE ZILOG MNEMONICS ; TRUE EQU ;DOUBLE DENSITY BLOCKSIZE IN KBYTES IF DOUBLE ALLMAX EQU ((9*NTRAKS*2)/BLS)/8 DIRSIZ EQU 128 ELSE ALLMAX EQU ((9*NTRAKSANDARD FLOPPYS ... ; ; IF FIVE NSECTS EQU 18 ;SINGLE DENSITY SECTORS PER TRACK NTRAKS EQU 40 ;NUMBER OF TRACKS PER SURFAS-CCP)/128 ;NUMBER OF RECORDS NEEDED FOR CCP+BDOS MONITR EQU 0F000H ;BASE OF SYSTEM MONITOR SYSRAM EQU 0FF00H ;BASE OF SY BIT TBE EQU 00000100B ;TRANSMIT-BUFFER-EMPTY BIT TXMASK EQU DCD+TBE ;LOOP UNTIL DCD AND TBE BITS ARE TRUE ; ; ; PAGE  1 FALSE EQU 0 ; IOBYTE EQU 0003H ;INTEL CONFIGURATION BYTE USRDRV EQU 00H ;USER/DRIVE TO LOG ON AFTER COLDSTART SERIAL E)/BLS)/8 DIRSIZ EQU 128 ENDIF ENDIF ; ; ; .XLIST INCLUDE MACROS.MAC ;ASSEMBLE WITH MACRO DEFINITIONS .LIST ; ; ;******************************************************** ;* * ;* -- CUSTOM BIOS FOR CP/M VERSION 2.2 -- * ;* *CE RESERV EQU 3 ;NUMBER OF RESERVED TRACKS BLS EQU 2 ;DOUBLE DENSITY BLOCKSIZE IN KBYTES IF DOUBLE ALLMAX EQU ((5*NTRAKS*%  ORG CBIOS-256 .PHASE 0080H INCLUDE ONESECT.MAC ;ONE SECTOR LOADER .DEPHASE ; ; PAGE ORG CBIOS-128 ; ; ; ... CRE,0,0,0 JR WBOOT2 BIOSTK EQU $ ;BIOS STACK OVERLAYS COLDSTART CODE ; SPSAVE: DEFS 2 ;USER SP SAVE FOR COMPLEX BIOS ENTRYS  SP,(SPSAVE) RET ; ; ; WRTENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL WRITEDB POP IX LD SP,(SPSAVE) RET  INC HL LD E,(HL) INC HL LD D,(HL) ;DE=DESTINATION POINTER INC HL LDIR ;COPY POOP INTO MEMORY LD A,(HL) OR A ;VECTOR SAME AS CONOUT JP CONIN ;READER VECTOR SAME AS CONIN JP HOME JP SELENTRY ;'SELDISK' WITH LOCAL STACK JP SETTRACK+BDOS FITS ON ONE TRACK LD B,(HL) ;LOAD B WITH # OF SECTORS ON TRACK #1 LD A,CPMSIZE SUB B ;COMPUTE # OF EXTRA SECTORSATE SIGNON MESSAGE FOR SELECTED MEMORY SIZE CPM ... ; M1 EQU (MSIZE / 10) OR '0' ;TENS DIGIT OF MSIZE IN ASCII M2 EQU (MSIZE  ; ; ; ; ... WARM BOOT ROUTINE ... ; WBOOT: LD SP,0080H CALL FLUSH ;FINISH ANY DEFERRED DISK I/O WBOOT2: LD HL,DPHTAB ; ; ; ; ; ... COLD BOOT ROUTINE ... ; BOOT: DEFB 0,0,0,0 ;PUT EXTRA COLDSTART INITIALIZATION DEFB 0,0,0,0 ; CODE HETEST FOR END OF TABLE JR NZ,GOCPM2 LD A,(IOBYTE+1) ;DO AUTO LOG-ON THING THAT PEOPLE LIKE AND 00001111B CP NFLOPPY+WIN JP SETSECT JP SETDMA JP RDENTRY ;'READDB' WITH LOCAL STACK JP WRTENTRY ;'WRITEDB' WITH LOCAL STACK JP LISTST JP SE FROM TRACK #2 JR WBOOT4 ; WBOOT3: LD B,CPMSIZE ;GET ALL OF CP/M FROM TRACK #1 XOR A ;READ ZERO SECTORS FROM TRACK #2 WBMOD 10) OR '0' ;ONES DIGIT ; DEFB CR,LF DEFB '.... Cal-Tex Computers ',M1,M2,'K CP/M version 2.2 ....' DEFB CR,LF DEFB  ;SET PARAM POINTER FOR DRIVE ZERO LD (DPHPTR),HL ; FORMAT DESCRIPTOR STUFF XOR A LD (DISK),A INC A LD (TRACK),A CALRE IF NEEDED. BE SURE TO TAKE DEFB 0,0,0,0 ; UP AT LEAST 40 BYTES OF MEMORY IN ANY DEFB 0,0,0,0 ; CASE TO MAKE ROOM FOR THCH JR C,GOCPM3 XOR A ;LOG-ON A: IF DRIVE# IS ILLEGALY LARGE GOCPM3: LD C,A LD HL,CCP LD A,(HL) ;PEEK AT FIRST OPCODE CTRAN ; ; ; ; ... ENTRY POINTS FOR COMPLEX DISK ROUTINES ... ; SELENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL OOT4: LD HL,CCP PUSH AF CALL RTRACK ;READ CCP+BDOS FROM DOUBLE DENSITY POP BC INC B DEC B CALL NZ,RTRACK ;CONDITION'........ release date 15-September-82 ..........' DEFB CR,LF DEFB NULL ; PAGE ; ; ; ... BIOS CODE STARTS HERE WITH JUL PARAMS ;SELECT A: AND FIND TRACK #1 FORMAT JR NZ,BOMB ;EXIT IF PERMANENT ERROR LD HL,DPHTAB+SPT ;GET LOGICAL SECTORS-PE BIOS DEFB 0,0,0,0 ; SELECT/READ/WRITE LOCAL STACK AREA DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0IN CCP CP 0C3H JR NZ,BOMB ;ABORT IF NOT A JUMP INSTRUCTION JP (HL) ;ELSE JUMP INTO CCP TO START CPM ; ; ; ; RTRACK:SELDISK POP IX LD SP,(SPSAVE) RET ; ; ; RDENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL READDB POP IX LDAL READ FROM TRACK #2 GOCPM: LD HL,MEMTAB ;PREPARE TO STORE VECTORS & BDOS PATCH LD B,0 GOCPM2: LD C,(HL) ;BC=BYTECOUNT MP VECTORS ... ; ORG CBIOS ; JP BOOT JP WBOOT JP CONST IVEC: JP CONIN OVEC: JP CONOUT JP LIST JP CONOUT ;PUNCH ER-TRACK PARAM LD A,(HL) CP NSECTS+1 JR C,BOMB ;ERROR IF TRACK IS SINGLE DENSITY CP CPMSIZE JR NC,WBOOT3 ;JUMP IF CCP&  LD C,1 ;READ TRACK FROM LOGICAL SECTOR #1 RTRK2: PUSH HL PUSH BC LD (POINTR),HL LD A,C LD (SECTOR),A ;SET LOGICAL SO INPUT FROM PRINTER IN A,(LSTDAT) ;ELSE GET CHARACTER AND TEST FOR RES 7,A ; 'XOFF' CHARACTER (CONTROL-S) CP 'S'-64 ITOR CONSOLE OUTPUT ENTRY POINT ; ; ; LISTST: LD A,00010000B OUT (LSTCTL),A ;DO SIO CLEAR STATUS/INTERRUPT CMD IN A,(LPPY ;CREATE FLOPPY DISK DATA AREAS DPH ENDM DPHSIZ EQU ($-DPHTAB)/NFLOPPY ; ; IF WINCH DEFS 16 ;DISK PARAMETER HES+3 DEFB 3 ;BDOS VECTOR DEFW 0005H JP BDOS DEFB 3 ;BREAKPOINT VECTOR DEFW 0038H JP MONITR+3 DEFB 5 ;CP/M ;* DISK I/O BUFFERS FOR BDOS FILE HANDLER * ;* * ;******************************************************** ; ; ; OECTOR NUMBER FOR READ CALL READDB ;LOAD NEXT 128 BYTES OF CP/M POP BC POP HL JR NZ,BOMB ;EXIT IF PERMANENT ERROR LD RET NZ LIST2: IN A,(LSTCTL) BIT 0,A JR Z,LIST2 ;LOOP TILL NEXT HANDSHAKE CHARACTER IN A,(LSTDAT) ;INPUT AND DISCARD STCTL) AND TXMASK ;DISCARD BITS NOT BEING TESTED CP TXMASK LD A,255 RET Z ;RETURN WITH A=255 IF PRINTER READY XOR ADER DEFS 15 ;DISK PARAMETER BLOCK DEFS 4 ;DEBLOCK PARAMETERS DEFS 1 ;DEBLOCK FLAGS DEFS MAXBLK/8 ;ALLOCATION VECTOR 2.2 PATCH 01 3/31/81 DEFW DBBUG NOP NOP LD HL,0 DEFB 2 ;DEFAULT DISK I/O POINTER DEFW POINTR DEFW 0080H DERG SCRATCH DIRBUF: DEFS 128 ;SCRATCH DIRECTORY BUFFER BIGBUF: DEFS 1024 ;HOST SECTOR BUFFER FOR DEBLOCKING ; ; ; DPH MDE,128 ADD HL,DE INC C DJNZ RTRK2 ;BUMP SECTOR# AND LOAD ADDRESS TILL B=0 LD A,(TRACK) INC A ;BUMP TRACK# AFTER LA'XON' CHARACTER ENDIF RET ; ; ; INCLUDE DEBLOCK.MAC ;DEBLOCKING DISK DRIVERS ; IF WINCH INCLUDE XEBEC.MAC ;DISK A RET ;ELSE RETURN WITH A=0 ; ; ; LIST: CALL LISTST OR A JR Z,LIST ;LOOP TILL SIO CAN SEND A CHARACTER LD A,C ENDIF ; ; ; NEW EQU $ SECTOR: DEFS 1 ;BIOS SECTOR NUMBER TRACK: DEFS 2 ;BIOS TRACK NUMBER DISK: DEFS 1 ;BIOS DISK FB 0 ;END OF TABLE ; ; PAGE ; ; ... CHARACTER I/O ROUTINES FOR BIOS ... ; ; CONST: JP MONITR+6 ;MONITOR CONSOLE STATUSACRO LOCAL BASE BASE: DEFS 16 ;;DISK PARAMETER HEADER DEFS 15 ;;DISK PARAMETER BLOCK DEFS 4 ;;DEBLOCK PARAMETERS DEFST SECTOR IS READ LD (TRACK),A RET ; ; BOMB: LD HL,DEAD CALL PMSG JP MONITR+3 ; DEAD: DEFB ' cannot boot' DEFB NDRIVERS FOR XEBEC CONTROLLER ENDIF ; ; IF $ GE MONITR .PRINTX /OVERLAYING SYSTEM MONITOR/ ENDIF ; BIOSLEN EQU (($ AN OUT (LSTDAT),A ;OUTPUT ASCII TO SIO IF XONXOFF IN A,(LSTCTL) BIT 0,A ;TEST SIO RX DATA AVAILABLE RET Z ;EXIT IF NNUMBER POINTR: DEFS 2 ;BIOS DMA POINTER ; ; HOST EQU $ HSTSEC: DEFS 1 ;HOST SECTOR NUMBER HSTTRK: DEFS 2 ;HOST TRACK NU ENTRY POINT ; ; CONIN: JP MONITR+9 ;MONITOR CONSOLE INPUT ENTRY POINT ; ; CONOUT: LD A,C JP MONITR+12 ;MONS 1 ;;DEBLOCK FLAGS DEFS DIRSIZ/4 ;;CHECK VECTOR DEFS ALLMAX ;;ALLOCATION VECTOR ENDM ; ; ; DPHTAB EQU $ REPT NFLOULL ; ; ; ... ASSORTED CONSTANTS AND WHERE TO PLUG THEM IN ... ; MEMTAB: DEFB 3 ;WARMSTART VECTOR DEFW 0000H JP CBIOD -128)+128)-CBIOS ;LENGTH OF CBIOS MOD 128 ; PAGE ;******************************************************** ;* * ' MBER HSTDSK: DEFS 1 ;HOST DISK NUMBER HSTPTR: DEFS 2 ; HSTDPH: DEFS 2 ;HOST DISK PARAMETER POINTER ; NEXT EQU $ NXTSEC:D22D3FE83 :1CEAA400AF32BFFE3C32BDFECDD1EB20682110FD7EFE1B3860FE2C3006463E2C11 :1CEAC000901803062CAF2100D4F5CDF8EAC10405C4F8EA2N SIDE #1 SCRLEN EQU $-SCRATCH ; ; IF $ GE SYSRAM .PRINTX /BIOS OVERLAYING SYSTEM VARIABLES/ ENDIF ; ; .XLIST ;53657074656D6265722D3832202E2E2E2E2E1D :1CE9E0002E2E2E2E0D0A00900000000000000000000000000000000000000000BC :1CE9FC0000000000C3 DEFS 1 ;NEXT SECTOR NUMBER NXTTRK: DEFS 2 ;NEXT TRACK NUMBER ; RCOUNT: DEFS 1 ;UNALLOCATED RECORD COUNT SECTMP: DEFS 1 :1CE900002180F80E02CD24F020572100EA060C0E03E5C5CD24F0C1E120471180A7 :1CE91C0000190C10F02180F8CD35EFAF3203003E003204002180F83600130EB06004E235E2371 :1CEADC005623EDB07EB720F43A0400E60FFE043801AF4F2100D47EFEC32022E9F4 :1CEAF8000E01E5C522C0FE7932BCFECD14EDCTURN OFF LISTING .PHASE SYSRAM INCLUDE MEMDEF.MAC ;ASSEMBLE SYSTEM VARIABLES IN CASE THEY .DEPHASE ; ARE REFERENCED ANYWH6CEAC398EAC350EBC353EBC356EBC369EBC356EBC353EB82 :1CEA1800C387EBC333EAC38AEBC38FEBC394EBC346EAC359EAC35AEBC399EBEDE1 :1CEA3400;HOST EQUIVALENT OF SECTOR# RDACT: DEFS 1 ;READ BUFFER ACTIVE FLAG WRTACT: DEFS 1 ;WRITE BUFFER ACTIVE FLAG DIR: DEFS 1 ;D1181F87F :1CE93800016606EDB021D90006060E81EDB306020E89EDB33E0C3295FF3E0132C4 :1CE954008CFFC300EA0445034105AA47043E3FCD0CF03E071E1200F118000190C10E93ABDFEC1 :1CEB14003C32BDFEC92122EBCD35EFC303F0202063616E6E6F7420626F6F740087 :1CEB3000030000C303EA030500CERE IN CBIOS ; ; END 7396EA3196EADDE5CDA6EBDDE1ED7B96EAC9ED7396EA3196EADDE5CD73 :1CEA500014EDDDE1ED7B96EAC9ED7396EA3196EADDE5CD60EDDDE1ED7B96EAC95E IR FOR DEFERRED RD/WRT (1=READ) RWFLAG: DEFS 1 ;DIR FOR HOST RD/WRT (1=READ) ; ; DPHPTR: DEFS 2 ;POINTER TO DPH ENTRY PRMCD0CF0C303F00000DE :1CE97000000000000000000000000000000000000D0A2E2E2E2E2043616C2D540B :1CE98C00657820436F6D707574657273203630306DC033800C303F005D2E6000021000002C0D8 :1CEB4C00FE800000C306F0C309F079C30CF03E10D381DB81E60CFE0C3EFFC8AFD4 :1CEB6800C9CD5AEBB :1CEA6C00000000000000000000000000000000000000000000000000000000008E :1CEA880000000000000000000000000018080000318000CD52EE2100FPTR: DEFS 2 ;POINTER TO DISK PARAMS IDBUFF: DEFS 8 ;BUFFER FOR ID RECORDS ON SIDE #0 IDTOP: DEFS 8 ;BUFFER FOR ID RECORDS O4B2043502F4D2076657273696FF8 :1CE9A8006E20322E32202E2E2E2E0D0A2E2E2E2E2E2E2E2E2E2072656C6561730A :1CE9C4006520646174652031352D( 728FA79D380DB81CB47C8DB80CBBFFE13C0DB81CB4728FA95 :1CEB8400DB80C9010000ED43BDFEC921BCFE71C9ED43C0FEC960697AB328051994 :1CEBA00DA62026006F292929292929290100F909ED5BC094 :1CEE2400FE3AD1FEB720063E0132D0FEEB018000EDB0C93ACEFE21C2FEBEC02A4E :1CEE4000BDFEED55 :1CED4400163ACEFE32C2FE2ABDFE22C3FE3ABFFE32C5FECD6AEEC0CD0CEEAFC9CD :1CED6000DD2AD3FEAF32D1FEDD7E1FB72008CD52EEAFCD8DEEC9CDFE4000000000000000000000000000000000000000000000000000000000011 :1CF000000000000000000000000000000000000000000000000000000000000D3FED5D5D5010200EDB0EB010E00C4 :1CEC800009EB011300EDB0DDE12180F8DD7508DD7409E111100019DD750ADD7400 :1CEC9C000B11140019DD750CDD3AC2FECD3FEF3E01B7C9A4 :1CEF200021CBEFCD35EFCD09EAFE032802AFC9AF3204003CC97E23B7C84FCD0C74 :1CEF3C00EA18F60664CD50EF060ACD50EF06E2600C923C921000079FE04D032BFFE3C016F002191FC093D20FC22D7 :1CEBBC00D3FECB43C0E5DDE1DDCB2346C0CD52EE3E0232BDFEAF32C2FE3E01D33DBC3FEB7ED52C03ABFFE21C5FEBEC9AF32CFFE32CDFE3AD0FE27 :1CEE5C00B7C8DDE5DD2AC8FECD7FEEDDE1C92100F922C6FE3E0132CFFECD98EE3A :1CEE7EEDAF32CF81 :1CED7C00FE79FE02282BFE01281C3ABCFE21CAFEBE20132ABDFEED5BCBFEB7ED06 :1CED980052200721CDFE7EB72022CD52EECD45EDC0CD70F4 :1CF01C0000000000000000000000000000000000000000000000000000000000D8 :1CF03800000000000000000000000000000000000000000000000740DDD5E1BDD561C19DD750EDD740FE1AFC9235D :1CECB8001323131AAE2313C9D5EC1A00030700F2003F00C00010000200000080C8 :1CECD4000001070DF6304FCD0CEAC90EFF0C9030FC80F5E4 :1CEF580079B7C449EFF1C90D0A42494F53206572726F72206F6E20413A20200051 :1CEF74006E6F742072656164 :1CEBD800C83ABFFE32C5FE4FCD1BF020143ABDFE32C3FE4FCD21F0200821D7FEDF :1CEBF400CD2AF02809CDE2EE28D7210000C921C0EC22D5FE3ADDFECB800C821CFFE3600C92100F922C6FEAF32D0FECD98EEC921BCFE11C2FE0151 :1CEE94000600EDB032D2FE3AC5FE4FCD1BF02806CDE2EE28F2C906013AC3FEFEFEEC9CD52EEDD7E133207 :1CEDB400CDFE3ABCFE32CAFE2ABDFE22CBFE180A35CD37EE281ACD7FEEC03ACE2D :1CEDD000FE32C2FE2ABDFE22C3FE3ABFFE300000000000BC :1CF0540000000000000000000000000000000000000000000000000000000000A0 :1CF07000000000000000000000000000000000000001319050B111703090F1502080E141A060C1218040A101600C5 :1CECF000800034010001340300023C0700044000000000040F0000007F00C00040 :1CED0C79007772742070726F746563740077727420666139 :1CEF9000756C74006E6F7420666F756E640062616420637263006F766572727561 :1CEFAC006E006447CA6DEC5B :1CEC100021FFEC22D5FE214B00E53ADAFEE6033210ED26006F292901EFEC09118F :1CEC2C0011ED010300EDB03C473AD8FECB3F20047E1803EB :1CEEB0004D38040609D64D4F78D3C8CD21F02806CDE2EE28E5C92AC6FE3AC2FEC2 :1CEECC004F3AD2FEB72805CD24F01803CD27F0C8CDE2EE28E5C95F2C5FEDD22C8FECD0CEE21CAFE347E5C :1CEDEC00DDBE10380B280936012ACBFE2322CBFEAFC9473ABCFE3DCB3F10FC3C72 :1CEE080032CEFEC93ABCFE3DD00000000000000000000084 :1CF08C000000000000000000000000000000000000000000000000000000000068 :1CF0A8000000000000000000000000000002000020000000000DD2AD3FE3E0132D1FEDD7E1FB72009CD52EE3E010B :1CED2800CD8DEEC9CDFEED3AD0FEB72805CD52EE180B3ACFFEB72805CD37EE28E7271006275737900002020747261636B20002020736563746FFE :1CEFC800722000203F080020000000000000000000000000000000000000000014 :1CEF8710FD3201EDD121002D :1CEC480000471910FD3A03ED47CB3CCB1D10FA2B2206ED3A04EDCB3FCB3FCB3F50 :1CEC640024252802CB3F3205ED2AD5FEED5B3AC5FEC6416F :1CEEE800326FEF215FEFCD35EF01FF087B173807F5AFEDB1F110F6CD35EF7BE6BA :1CEF0400C0201921B8EFCD35EF3AC3FECD3FEFCD35EF) 00000000000000000000000000000004C :1CF0C4000000000000000000000000000000000000000000000000000000000030 :1CF0E00000000000000000000000000000000000000000A9 :1CF36400000000000000000000000000000000000000000000000000000000008D :1CF380000000000000000000000000000000000000000000000000000000000000000000000000000006E :1CF2A0000000000000000000000000000000000000000000000000000000000052 :1C00000000000000000000000000000000000000000000CB :1CF5400000000000000000000000000000000000000000000000000000000000AF :1CF55C00000000000000004F :1CF1C0000000000000000000000000000000000000000000000000000000000033 :1CF1DC0000000000000000000000000000000000000000AC :1CF460000000000000000000000000000000000000000000000000000000000090 :1CF47C000000000000000000000000000000000000000000000000000000000000000000000000000000000000014 :1CF0FC0000000000000000000000000000000000000000000000000000000000F8 :1CF118000000000000000000000000000000000000000071 :1CF39C000000000000000000000000000000000000000000000000000000000055 :1CF3B8000000000000000F2BC000000000000000000000000000000000000000000000000000000000036 :1CF2D8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093 :1CF578000000000000000000000000000000000000000000000000000000000077 :000000000000000000000017 :1CF1F80000000000000000000000000000000000000000000000000000000000FB :1CF214000000000000000000000000000000000000000074 :1CF498000000000000000000000000000000000000000000000000000000000058 :1CF4B40000000000000000000000000000000000000000000000000000000000000000000000000000000000000DB :1CF1340000000000000000000000000000000000000000000000000000000000BF :1CF000000000000000000000000000000000000000000039 :1CF3D400000000000000000000000000000000000000000000000000000000001D :1CF3F0000000001A :1CF2F40000000000000000000000000000000000000000000000000000000000FE :1CF3100000000000000000000000000000000000000000000001CF59400000000000000000000000000000000000000000000000000000000005B :1CF5B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000DE :1CF2300000000000000000000000000000000000000000000000000000000000C2 :1CF24C00000000000000000000000000000000000000003C :1CF4D0000000000000000000000000000000000000000000000000000000000020 :1CF4EC0000000000000000000000001500000000000000000000000000000000000000000000000000000000000A3 :1CF16C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 :1CF40C0000000000000000000000000000000000000000000000000000000000E4 :10000000000000E1 :1CF32C0000000000000000000000000000000000000000000000000000000000C5 :1CF34800000000000000000000000000000000000000003F :1CF5CC000000000000000000000000000000000000000000000000000000000023 :1CF5E80000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6 :1CF26800000000000000000000000000000000000000000000000000000000008A :1CF284000000000000000000000000000000000000000004 :1CF5080000000000000000000000000000000000000000000000000000000000E7 :1CF524000000000000000087 :1CF18800000000000000000000000000000000000000000000000000000000006B :1CF1A40000000000000000000000000000000000000000000000CF4280000000000000000000000000000000000000000000000000000000000C8 :1CF444000000000000000000000000000000000000000000000000000000* 00000000000000007 :1CF6040000000000000000000000000000000000000000000000000000000000EA :1CF620000000000000000000000000000000000000000064 :1CF8A4000000000000000000000000000000000000000000000000000000000048 :1CF8C00000000000000000000000000000000000000000000000000000000000000000000000000000029 :1CF7E000000000000000000000000000000000000000000000000000000000000D :1CF7FC000000000000000000000000000000000000000086 :1CFA8000000000000000000000000000000000000000000000000000000000006A :1CFA9C00000000000000000000:1CF7000000000000000000000000000000000000000000000000000000000000ED :1CF71C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004B :1CF9BC00000000000000000000000000000000000000000000000000000000002F0000000000000000000000000CE :1CF63C0000000000000000000000000000000000000000000000000000000000B2 :1CF65800000000000000000000000000000000000000002C :1CF8DC000000000000000000000000000000000000000000000000000000000010 :1CF8F800000000000000000000000000000000000000000000000000000000000000000000000000000F1 :1CF8180000000000000000000000000000000000000000000000000000000000D4 :1CF83400000000000000000000000000000000000000004E :1CFAB8000000000000000000000000000000000000000000000000000000000032 :1CFAD40000000000000000D1 :1CF7380000000000000000000000000000000000000000000000000000000000B5 :1CF754000000000000000000000000000000000000000000 :1CF9D8000000000000000000000000000000000000000000000000000000000013 :1CF9F4000000000000000000000000000000000000000000000000000000000000000000000000000000000000096 :1CF67400000000000000000000000000000000000000000000000000000000007A :1CF6900000000000000000000000000000000000000000F4 :1CF9140000000000000000000000000000000000000000000000000000000000D7 :1CF93000000000000000000000000000000000000000000000000000000000000000000000000000000B8 :1CF85000000000000000000000000000000000000000000000000000000000009C 00000000000000000000000000000000000000000000000016 :1CFAF00000000000000000000000000000000000000000000000000000000000FA :1CFB0C000000000000000099 :1CF77000000000000000000000000000000000000000000000000000000000007D :1CF78C0000000000000000000000000000000000000000F7 :1CFA100000000000000000000000000000000000000000000000000000000000DA :1CFA2C00000000000000000000000000000000000000000000000000000000000000000000000000000000000005E :1CF6AC000000000000000000000000000000000000000000000000000000000042 :1CF6C80000000000000000000000000000000000000000BB :1CF94C00000000000000000000000000000000000000000000000000000000009F :1CF96800000000000 :1CF86C000000000000000000000000000000000000000000000000000000000080 :1CF8880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD :1CFB280000000000000000000000000000000000000000000000000000000000C0000000000000000000000000061 :1CF7A8000000000000000000000000000000000000000000000000000000000045 :1CF7C40000000000000000000000000000000000000000BE :1CFA480000000000000000000000000000000000000000000000000000000000A2 :1CFA64000000000000000000000000000000000000000000000000000000000000000000000000000000000000026 :1CF6E400000000000000000000000000000000000000000000000000000000000A 0000000000000000000000000000000000000000000000083 :1CF984000000000000000000000000000000000000000000000000000000000067 :1CF9A00+ 1 :1CFB440000000000000000000000000000000000000000000000000000000000A5 :1CFB600000000000000000000000000000000000000000000000000E4000000000000000000000000000000000000000000000000000000000003 :1CFE0000000000000000000000000000000000000000000000000000000000000000000000000000000E3 :1CFD200000000000000000000000000000000000000000000000000000000000C7 :1CFD3C0000000000000000000000000000;******************************************************** ;* * ;* -- CUSTOM BIOS FOR CP/M VERSION 2.2 -- * ;* *0000000000000000000000000000000000000000000000000A8 :1CFC5C00000000000000000000000000000000000000000000000000000000008C :1CFC70000000000000000000000000000000000000000006 :1CFEFC0000000000000000000000000000000000000000000000000000000000EA :1CFF18000000000000000089 :1CFB7C00000000000000000000000000000000000000000000000000000000006D :1CFB980000000000000000000000000000000000000000E6 :1CFE1C0000000000000000000000000000000000000000000000000000000000CA :1CFE3800000000000000000000000000000000000000000000000000000000000000000000000000000AB :1CFD5800000000000000000000000000000000000000000000000000000000008F :1CFD74000000000000000000 ;* DOUBLE DENSITY CBIOS FOR BIGBOARD-II * ;* * ;* COPYRIGHT (C) 1982 BY RUSSELL SMITH * ;* 818 WEST HICKORY8000000000000000000000000000000000000000000000000000000000070 :1CFC940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CD :1CFF340000000000000000000000000000000000000000000000000000000000B1 :1CF000000000000000000051 :1CFBB4000000000000000000000000000000000000000000000000000000000035 :1CFBD00000000000000000000000000000000000000000AE :1CFE54000000000000000000000000000000000000000000000000000000000092 :1CFE700000000000000000000000000000000000000000000000000000000000000000000000000000073 :1CFD90000000000000000000000000000000000000000000000000000000000057 :1CFDAC00000000 * ;* DENTON, TEXAS 76201 * ;* * ;* LAST EDIT DATE: 21-AUGUST-82 * ;* * ;************************54 :1CFCB0000000000000000000000000000000000000000000000000000000000038 :1CFCCC000000000000000000000000000000000000000000000000F50000000000000000000000000000000000000000000000000000000000095 :1CFF6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000019 :1CFBEC0000000000000000000000000000000000000000000000000000000000FD :1CFC08000000000000000000000000000000000000000076 :1CFE8C00000000000000000000000000000000000000000000000000000000005A :1CFEA8000000000000000000000000000000000000000000000000000000000000000000000000000003B :1CFDC800000000000000000000000000000000000000000000000000000000001F :1CFD******************************** ; ASEG .SFCOND ;DON'T LIST FALSE CONDITIONALS .Z80 ;USE ZILOG MNEMONICS ; TRUE EQU00000000001C :1CFCE8000000000000000000000000000000000000000000000000000000000000 :1CFD04000000000000000000000000000000000000000079 :1CFF8800000000000000000000000000000000000000000000000000000000005D :01FFA400005C :00000001FF 000000000000000000000000000000000000000000000000000000000000000E0 :1CFC240000000000000000000000000000000000000000000000000000000000C4 :1CFC4000000000000000000000000000000000000000003E :1CFEC4000000000000000000000000000000000000000000000000000000000022 :1CFEE000000000000000000,  1 FALSE EQU 0 ; IOBYTE EQU 0003H ;INTEL CONFIGURATION BYTE USRDRV EQU 00H ;USER/DRIVE TO LOG ON AFTER COLDSTART SERIAL E ; ; .XLIST INCLUDE MACROS.MAC ;ASSEMBLE WITH MACRO DEFINITIONS .LIST ; ; ; ... EQUATES FOR PRINTER DRIVER PORTS/HANDS BLS EQU 2 ;DOUBLE DENSITY BLOCKSIZE IN KBYTES IF DOUBLE ALLMAX EQU ((5*NTRAKS*2)/BLS)/8 DIRSIZ EQU 64 ELSE ALLMAX EQU  JP WBOOT JP CONST IVEC: JP CONIN OVEC: JP CONOUT JP LIST JP CONOUT ;PUNCH VECTOR SAME AS CONOUT JP CONIN ;READER VEA FOR BIOS/CPM BUFFERS ; ; ; ... DEFINE HOW MANY DRIVES IN SYSTEM ... ; WINCH EQU 0 ;NUMBER OF WINCHESTERS (0..1) IN SYSTESECT.MAC ;ONE SECTOR LOADER .DEPHASE ; ; PAGE ORG CBIOS-128 ; ; ; ... CREATE SIGNON MESSAGE FOR SELECTED MEMORY SIZE QU FALSE ;DISABLE SIO/CRT CONSOLE COMBINATION ; MSIZE EQU 60 ;MEMORY SIZE IN KBYTES (RANGE 20..60) BASE EQU (MSIZE-20)*1024HAKE MODE ... ; LSTDAT EQU 80H ;SIO CHANNEL A DATA PORT# LSTCTL EQU 81H ;SIO CHANNEL A CONTROL PORT# LSTBAUD EQU 89H ;SIO((5*NTRAKS)/BLS)/8 DIRSIZ EQU 64 ENDIF ENDIF ; IF EIGHT NSECTS EQU 26 ;SINGLE DENSITY SECTORS PER TRACK NTRAKS EQU 77CTOR SAME AS CONIN JP HOME JP SELENTRY ;'SELDISK' WITH LOCAL STACK JP SETTRACK JP SETSECT JP SETDMA JP RDENTRY ;'REM NFLOPPY EQU 4 ;NUMBER OF FLOPPYS (1..4) IN SYSTEM DOUBLE EQU FALSE ;SINGLE/DOUBLE SIDED DRIVE ENABLE FIVE EQU FALSE EIGHCPM ... ; M1 EQU (MSIZE / 10) OR '0' ;TENS DIGIT OF MSIZE IN ASCII M2 EQU (MSIZE MOD 10) OR '0' ;ONES DIGIT ; DEFB CR,LF  CCP EQU 3400H+BASE ;CONSOLE COMMAND PROCESSOR BDOS EQU 3C06H+BASE ;OPERATING SYSTEM ENTRY POINT DBBUG EQU 46D2H+BASE ;DEBLOC CHANNEL A BAUDRATE CTC PORT# XONXOFF EQU TRUE ;ENABLE XON-XOFF HANDSHAKE CTS EQU 00100000B ;CLEAR-TO-SEND BIT POSITION I ;NUMBER OF TRACKS PER SURFACE RESERV EQU 2 ;NUMBER OF RESERVED TRACKS BLS EQU 2 ;DOUBLE DENSITY BLOCKSIZE IN KBYTES IF DADDB' WITH LOCAL STACK JP WRTENTRY ;'WRITEDB' WITH LOCAL STACK JP LISTST JP SECTRAN ; ; ; ; ... ENTRY POINTS FOR COMPLT EQU TRUE ;SELECT 8 INCH FLOPPYS ; ; ; ; ... DEFINE TRACK/SECTOR PARAMS FOR STANDARD FLOPPYS ... ; ; IF FIVE NSECTS E DEFB '.... Cal-Tex Computers ',M1,M2,'K CP/M version 2.2 ....' DEFB CR,LF DEFB '......... release date 15-September-82 ....K BUG LOCATION IN BDOS CBIOS EQU 4A00H+BASE ;BASE OF CUSTOM BIOS CPMSIZE EQU (CBIOS-CCP)/128 ;NUMBER OF RECORDS NEEDED FOR CCPN SIO RR0 SYNC EQU 00010000B ;SYNC/HUNT BIT DCD EQU 00001000B ;DATA-CARRIER-DETECT BIT TBE EQU 00000100B ;TRANSMIT-BUFFER-EMPOUBLE ALLMAX EQU ((9*NTRAKS*2)/BLS)/8 DIRSIZ EQU 128 ELSE ALLMAX EQU ((9*NTRAKS)/BLS)/8 DIRSIZ EQU 128 ENDIF ENDIF ; EX DISK ROUTINES ... ; SELENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL SELDISK POP IX LD SP,(SPSAVE) RET ; QU 18 ;SINGLE DENSITY SECTORS PER TRACK NTRAKS EQU 40 ;NUMBER OF TRACKS PER SURFACE RESERV EQU 3 ;NUMBER OF RESERVED TRACKS.....' DEFB CR,LF DEFB NULL ; PAGE ; ; ; ... BIOS CODE STARTS HERE WITH JUMP VECTORS ... ; ORG CBIOS ; JP BOOT +BDOS MONITR EQU 0F000H ;BASE OF SYSTEM MONITOR SYSRAM EQU 0FF00H ;BASE OF SYSTEM VARIABLES SCRATCH EQU 0F880H ;RAM ARETY BIT TXMASK EQU DCD+TBE ;LOOP UNTIL DCD AND TBE BITS ARE TRUE ; ; ; PAGE ORG CBIOS-256 .PHASE 0080H INCLUDE ONE- ; ; RDENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL READDB POP IX LD SP,(SPSAVE) RET ; ; ; WRTENTRY: LD  ;PREPARE TO STORE VECTORS & BDOS PATCH LD B,0 GOCPM2: LD C,(HL) ;BC=BYTECOUNT INC HL LD E,(HL) INC HL LD D,(HL) ;DR C,BOMB ;ERROR IF TRACK IS SINGLE DENSITY CP CPMSIZE JR NC,WBOOT3 ;JUMP IF CCP+BDOS FITS ON ONE TRACK LD B,(HL) ;LOADE TO PLUG THEM IN ... ; MEMTAB: DEFB 3 ;WARMSTART VECTOR DEFW 0000H JP CBIOS+3 DEFB 3 ;BDOS VECTOR DEFW 0005H K OVERLAYS COLDSTART CODE ; SPSAVE: DEFS 2 ;USER SP SAVE FOR COMPLEX BIOS ENTRYS ; ; ; ; ... WARM BOOT ROUTINE ... ; WB1 RTRK2: PUSH HL PUSH BC LD (POINTR),HL LD A,C LD (SECTOR),A ;SET LOGICAL SECTOR NUMBER FOR READ CALL READDB ;LOAD N(SPSAVE),SP LD SP,BIOSTK PUSH IX CALL WRITEDB POP IX LD SP,(SPSAVE) RET ; ; ; ; ; ... COLD BOOT ROUTINE ... ; E=DESTINATION POINTER INC HL LDIR ;COPY POOP INTO MEMORY LD A,(HL) OR A ;TEST FOR END OF TABLE JR NZ,GOCPM2 LD  B WITH # OF SECTORS ON TRACK #1 LD A,CPMSIZE SUB B ;COMPUTE # OF EXTRA SECTORS FROM TRACK #2 JR WBOOT4 ; WBOOT3: LD B,JP BDOS DEFB 3 ;BREAKPOINT VECTOR DEFW 0038H JP MONITR+3 DEFB 5 ;CP/M 2.2 PATCH 01 3/31/81 DEFW DBBUG NOP NOOT: LD SP,0080H CALL FLUSH ;FINISH ANY DEFERRED DISK I/O WBOOT2: LD HL,DPHTAB ;SET PARAM POINTER FOR DRIVE ZERO LD (DPHEXT 128 BYTES OF CP/M POP BC POP HL JR NZ,BOMB ;EXIT IF PERMANENT ERROR LD DE,128 ADD HL,DE INC C DJNZ RTRK2 ;BU BOOT: DEFB 0,0,0,0 ;PUT EXTRA COLDSTART INITIALIZATION DEFB 0,0,0,0 ; CODE HERE IF NEEDED. BE SURE TO TAKE DEFB 0,0,0,0A,(IOBYTE+1) ;DO AUTO LOG-ON THING THAT PEOPLE LIKE AND 00001111B CP NFLOPPY+WINCH JR C,GOCPM3 XOR A ;LOG-ON A: IF DRIVCPMSIZE ;GET ALL OF CP/M FROM TRACK #1 XOR A ;READ ZERO SECTORS FROM TRACK #2 WBOOT4: LD HL,CCP PUSH AF CALL RTRACK ;REOP LD HL,0 DEFB 2 ;DEFAULT DISK I/O POINTER DEFW POINTR DEFW 0080H DEFB 0 ;END OF TABLE ; ; PAGE ; ; ... CPTR),HL ; FORMAT DESCRIPTOR STUFF XOR A LD (DISK),A INC A LD (TRACK),A CALL PARAMS ;SELECT A: AND FIND TRACK #1 FORMAMP SECTOR# AND LOAD ADDRESS TILL B=0 LD A,(TRACK) INC A ;BUMP TRACK# AFTER LAST SECTOR IS READ LD (TRACK),A RET ; ; ; UP AT LEAST 40 BYTES OF MEMORY IN ANY DEFB 0,0,0,0 ; CASE TO MAKE ROOM FOR THE BIOS DEFB 0,0,0,0 ; SELECT/READ/WRITE LE# IS ILLEGALY LARGE GOCPM3: LD C,A LD HL,CCP LD A,(HL) ;PEEK AT FIRST OPCODE IN CCP CP 0C3H JR NZ,BOMB ;ABORT IF NOTAD CCP+BDOS FROM DOUBLE DENSITY POP BC INC B DEC B CALL NZ,RTRACK ;CONDITIONAL READ FROM TRACK #2 GOCPM: LD HL,MEMTABHARACTER I/O ROUTINES FOR BIOS ... ; ; CONST: JP MONITR+6 ;MONITOR CONSOLE STATUS ENTRY POINT ; ; CONIN: JP MONITR+9T JR NZ,BOMB ;EXIT IF PERMANENT ERROR LD HL,DPHTAB+SPT ;GET LOGICAL SECTORS-PER-TRACK PARAM LD A,(HL) CP NSECTS+1 J BOMB: LD HL,DEAD CALL PMSG JP MONITR+3 ; DEAD: DEFB ' cannot boot' DEFB NULL ; ; ; ... ASSORTED CONSTANTS AND WHEROCAL STACK AREA DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 JR WBOOT2 BIOSTK EQU $ ;BIOS STAC A JUMP INSTRUCTION JP (HL) ;ELSE JUMP INTO CCP TO START CPM ; ; ; ; RTRACK: LD C,1 ;READ TRACK FROM LOGICAL SECTOR #.  ;MONITOR CONSOLE INPUT ENTRY POINT ; ; CONOUT: LD A,C JP MONITR+12 ;MONITOR CONSOLE OUTPUT ENTRY POINT ; ; ; LI VECTOR DEFS ALLMAX ;;ALLOCATION VECTOR ENDM ; ; ; DPHTAB EQU $ REPT NFLOPPY ;CREATE FLOPPY DISK DATA AREAS DPH 8 ; PAGE ;******************************************************** ;* * ;* DISK I/O BUFFERS FOR BDOS FILE HANDLER *: DEFS 8 ;BUFFER FOR ID RECORDS ON SIDE #0 IDTOP: DEFS 8 ;BUFFER FOR ID RECORDS ON SIDE #1 SCRLEN EQU $-SCRATCH ; ; IF GET CHARACTER AND TEST FOR RES 7,A ; 'XOFF' CHARACTER (CONTROL-S) CP 'S'-64 RET NZ LIST2: IN A,(LSTCTL) BIT 0,A JPTR: DEFS 2 ; HSTDPH: DEFS 2 ;HOST DISK PARAMETER POINTER ; NEXT EQU $ NXTSEC: DEFS 1 ;NEXT SECTOR NUMBER NXTTRK: DEFS 2STST: LD A,00010000B OUT (LSTCTL),A ;DO SIO CLEAR STATUS/INTERRUPT CMD IN A,(LSTCTL) AND TXMASK ;DISCARD BITS NOT BEINGENDM DPHSIZ EQU ($-DPHTAB)/NFLOPPY ; ; IF WINCH DEFS 16 ;DISK PARAMETER HEADER DEFS 15 ;DISK PARAMETER BLOCK DEFS ;* * ;******************************************************** ; ; ; ORG SCRATCH DIRBUF: DEFS 128 ;SCRATCH DIR $ GE SYSRAM .PRINTX /BIOS OVERLAYING SYSTEM VARIABLES/ ENDIF ; ; .XLIST ;TURN OFF LISTING .PHASE SYSRAM INCLUDE MR Z,LIST2 ;LOOP TILL NEXT HANDSHAKE CHARACTER IN A,(LSTDAT) ;INPUT AND DISCARD 'XON' CHARACTER ENDIF RET ; ; ; I ;NEXT TRACK NUMBER ; RCOUNT: DEFS 1 ;UNALLOCATED RECORD COUNT SECTMP: DEFS 1 ;HOST EQUIVALENT OF SECTOR# RDACT: DEFS 1  TESTED CP TXMASK LD A,255 RET Z ;RETURN WITH A=255 IF PRINTER READY XOR A RET ;ELSE RETURN WITH A=0 ; ; ; LI 4 ;DEBLOCK PARAMETERS DEFS 1 ;DEBLOCK FLAGS DEFS MAXBLK/8 ;ALLOCATION VECTOR ENDIF ; ; ; NEW EQU $ SECTOR: DEFS ECTORY BUFFER BIGBUF: DEFS 1024 ;HOST SECTOR BUFFER FOR DEBLOCKING ; ; ; DPH MACRO LOCAL BASE BASE: DEFS 16 ;;DISK PAREMDEF.MAC ;ASSEMBLE SYSTEM VARIABLES IN CASE THEY .DEPHASE ; ARE REFERENCED ANYWHERE IN CBIOS ; ; END NCLUDE DEBLOCK.MAC ;DEBLOCKING DISK DRIVERS ; IF WINCH INCLUDE XEBEC.MAC ;DISK DRIVERS FOR XEBEC CONTROLLER ENDIF ; ; ;READ BUFFER ACTIVE FLAG WRTACT: DEFS 1 ;WRITE BUFFER ACTIVE FLAG DIR: DEFS 1 ;DIR FOR DEFERRED RD/WRT (1=READ) RWFLAG: DEFST: CALL LISTST OR A JR Z,LIST ;LOOP TILL SIO CAN SEND A CHARACTER LD A,C OUT (LSTDAT),A ;OUTPUT ASCII TO SIO I1 ;BIOS SECTOR NUMBER TRACK: DEFS 2 ;BIOS TRACK NUMBER DISK: DEFS 1 ;BIOS DISK NUMBER POINTR: DEFS 2 ;BIOS DMA POINTER ;AMETER HEADER DEFS 15 ;;DISK PARAMETER BLOCK DEFS 4 ;;DEBLOCK PARAMETERS DEFS 1 ;;DEBLOCK FLAGS DEFS DIRSIZ/4 ;;CHECK IF $ GE MONITR .PRINTX /OVERLAYING SYSTEM MONITOR/ ENDIF ; BIOSLEN EQU (($ AND -128)+128)-CBIOS ;LENGTH OF CBIOS MOD 12S 1 ;DIR FOR HOST RD/WRT (1=READ) ; ; DPHPTR: DEFS 2 ;POINTER TO DPH ENTRY PRMPTR: DEFS 2 ;POINTER TO DISK PARAMS IDBUFFF XONXOFF IN A,(LSTCTL) BIT 0,A ;TEST SIO RX DATA AVAILABLE RET Z ;EXIT IF NO INPUT FROM PRINTER IN A,(LSTDAT) ;ELSE ; HOST EQU $ HSTSEC: DEFS 1 ;HOST SECTOR NUMBER HSTTRK: DEFS 2 ;HOST TRACK NUMBER HSTDSK: DEFS 1 ;HOST DISK NUMBER HST/  :1CE46C000000000000000000000000000000000000000000000000000000000094 :1CE4880000000000000000000000000018080000318000CD60E82100F4B2043502F4D2076657273696FF6 :1CE3A8006E20322E32202E2E2E2E0D0A2E2E2E2E2E2E2E2E2E2072656C65617310 :1CE3C4006520646174652031352DEDB03C473AB7FECB3F90 :1CE6480020047E18038710FD320FE7D1210000471910FD3A11E747CB3CCB1D1066 :1CE66400FA2B2214E73A12E7CB3FCB3FCB3F728FA79D380DB81CB47C8DB80CBBFFE13C0DB81CB4728FAA1 :1CE58400DB80C9010000ED439CFEC9219BFE71C9ED439FFEC960697AB3280519FD :1CE5A00D22B2FEA2 :1CE4A400AF329EFE3C329CFECDD1E520682110FD7EFE1B3860FE2C3006463E2C5F :1CE4C000901803062CAF2100CEF5CDF8E4C10405C4F8E4253657074656D6265722D3832202E2E2E2E2E23 :1CE3E0002E2E2E2E2E0D0A00000000000000000000000000000000000000000024 :1CE3FC0000000000C324252802CB3F3213E72AB4FEED5B3A :1CE68000B2FED5D5D5010200EDB0EB010E0009EB011300EDB0DDE12180F8DD7567 :1CE69C0008DD7409E111100019:1CE300002180F80E02CD24F0205F2100E406100E03E5C5CD24F0C1E1204F11809F :1CE31C0000190C10F03E0AD3D93E02D3D92180F8CD4BE9AF3203003E0006E2600C923C921000079FE03D0329EFE3C016F002191FC093D20FC22FF :1CE5BC00B2FECB43C0E5DDE1DDCB2346C0CD60E83E02329CFE2192EB22B4FE3A84130E506004E235E238F :1CE4DC005623EDB07EB720F43A0400E60FFE033801AF4F2100CE7EFEC32022E901 :1CE4F8000E01E5C5229FFE79329BFECD22E7C6CE4C398E4C350E5C353E5C356E5C369E5C356E5C353E5B8 :1CE41800C387E5C333E4C38AE5C38FE5C394E5C346E4C359E4C35AE5C399E5ED1D :1CE43400DD750ADD740B11140019DD750CDD740DDD5E1BDD :1CE6B800DD561C19DD750EDD740FE1AFC9231323131AAE2313C9E3E61A000307A5 :1CE6D40000F2003F320400EE :1CE338002180F836001181F8014506EDB021E10006060E81EDB306020E89EDB30B :1CE354003E0C3295FF3E01328CFFC300E40445034105AA47 :1CE5D8009EFEFE02CA7BE6AF32A1FE3E01D3C83A9EFE32A4FE4FCD1BF020143AC7 :1CE5F4009CFE32A2FE4FCD21F0200821B6FECD2AF02809CDF8E828D71E1200F118000190C10E93A9CFE22 :1CE514003C329CFEC92122E5CD4BE9C303F0202063616E6E6F7420626F6F7400A4 :1CE53000030000C303E4030500C7396E43196E4DDE5CDA6E5DDE1ED7B96E4C9ED7396E43196E4DDE5CD9D :1CE4500022E7DDE1ED7B96E4C9ED7396E43196E4DDE5CD6EE7DDE1ED7B96E4C96C 00C000100002000000800001070D1319050B111703090F15FE :1CE6F00002080E141A060C1218040A101600800034010001340300023C07000422 :1CE70C043E3FCD0CF03E07E8 :1CE37000CD0CF0C303F0000000000000000000000D0A2E2E2E2E2043616C2D5492 :1CE38C00657820436F6D707574657273203539210000C9C7 :1CE6100021CEE622B4FE3ABCFECB47CA7BE6210DE722B4FE214B00E53AB9FEE603 :1CE62C0003321EE726006F292901FDE609111FE7010300306D6033800C303F005D2E00000210000029F11 :1CE54C00FE800000C306F0C309F079C30CF03E10D381DB81E60CFE0C3EFFC8AFDA :1CE56800C9CD5AE5B0 004000000000040F0000007F00C0002000020000000000DD2AB2FE3E0147 :1CE7280032B0FEDD7E1FB72009CD60E83E01CD9BE8C9CD0CE83AAFFEB72805CDD6F756E640062616420637263006F76657272756E0064727100C8 :1CE9C8006275737900002020747261636B20002020736563746F722000203F08A4 :1CE93AB1FEB72835 :1CE8E80005CD24F01803CD27F0C8CDF8E828E5C95F3AA4FEC6413285E92175E983 :1CE90400CD4BE901FF087B173807F5AFEDB1F110F6CD4F51 :1CEB880020F6F1D3CCF132A5FFC900004000051F01C704FF01F00000000000011A :1CEBA40001000100000000000000000000000000000000000000DCB3F10FC3C32ADFEC93A9BFE3DDDA62026006F3D :1CE82400292929292929290100F909ED5B9FFE3AB0FEB720063E0132AFFEEB0102 :1CE840008000EDB0010021E4EACD2FEBDBD9E621FE00200B :1CEAC400F8CD66EB2AA5FE06000ED8EDB3DBD9E621FE2120F8CDEAEA78E602C80C :1CEAE000CDFDEAC90A000005 :1CE7440060E8180B3AAEFEB72805CD45E828163AADFE32A1FE2A9CFE22A2FE3AD6 :1CE760009EFE32A4FECD78E8C0CD1AE8AFC9DD2AB2FEAF32B0FEDD7E400002AA2FE29292929297C3278EA3AA1FE3DE61FB53279EA3AB1FEB72843 :1CEA000005CD80EA1803CDB7EAB7C82150EACD4BE93A7CEACB7F2814CBBFCD34BE97BE6C0201921CEE9B1 :1CE92000CD4BE93AA2FECD55E9CD4BE93AA1FECD55E93E01B7C921E1E9CD4BE965 :1CE93C00CD09E4FE032802AFC9AF32040000000000000053 :1CEBC0000000000000000000000000000000000000000000000000000000000039 :1CEBDC0000000000000000000000000000000000000C93AADFE21A1FEBEC02A9CFEED5BA2FEB7ED52C03A9EFE215A :1CE85C00A4FEBEC9AF32AEFE32ACFE3AAFFEB7C8DDE5DD2AA7FECD8DE8DDE1C971 :1CE8700100DBD847DBD9E60828FADBD84FDBD9E60820FA16 :1CEAFC00C92129EBCD2FEBDBD9E621FE0120F8CD66EB217CEA06040ED8EDB2DB38 :1CEB1800D9E62E1FB720085A :1CE77C00CD60E8AFCD9BE8C9CD0CE8AF32AEFE79FE02282BFE01281C3A9BFE2153 :1CE79800A9FEBE20132A9CFEED5BAAFEB7ED52200721A3AA :1CEA1C00EA3A7DEACD33EA3A7EEACD33EA3A7FEACD33EA3E01B7C9F51F1F1F1F20 :1CEA3800CD43EAF1CD43EACD4BE9C9E60FC69027CE40274FCD0CE3CC97E23B7C84FCD0CE418F60664CD07 :1CE9580066E9060ACD66E9F6304FCD0CE4C90EFF0C9030FC80F579B7C45FE9F1B6 :1CE97400C90D0A42494F532000000000000000000000001D :1CEBF8000000000000000000000000000000000000000000000000000000000001 :1CEC14000000000000000000000000008002100F922A5FE3E0132AEFECDA6E8C821AEFE3600C92100F922A5FEAF0B :1CE8940032AFFECDA6E8C9219BFE11A1FE010600EDB032B1FE3AA4FEFE02D2E51FE2120F8CD66EBCDEAEA3E01B7C90300000000003E01D3D83E21 :1CEB34000BD3D93E03D3D9DBD9E62BFE2220F81176EA010200EDB02323131301A6 :1CECFE7EB72022CD60E8CDD8 :1CE7B40053E7C0CD8DE8C9CD60E8DD7E1332ACFE3A9BFE32A9FE2A9CFE22AAFEAB :1CE7D000180A35CD45E8281ACD8DE8C03AA4C90D0A4249F5 :1CEA54004F53206572726F72206F6E205341534920207374617475733D002E001E :1CEA70002E002E0020000000000000000000000021B6572726F72206F6E20413A2020006E6F7420726510 :1CE99000616479007772742070726F7465637400777274206661756C74006E6F39 :1CE9AC0074206600000000000000000000000000000000E4 :1CEC300000000000000000000000000000000000000000000000000000000000C8 :1CEC4C0000000000000000E3 :1CE8B000E93AA4FE4FCD1BF02806CDF8E828F2C906013AA2FEFE4D38040609D655 :1CE8CC004D4F78D3C8CD21F02806CDF8E828E5C92AA5FE3AA1FE4FB50000200EDB02176EA06060ED8EDB3DBD9E62BFE2228F8C9F321A5FF7E36BD :1CEB6C0001FBF5B73A9FFF2802E60FF5F60FD3CC3E8AD38C3EBFD38CDB8CCBDFE32A1FE2A9CFE22A2FE3A9EFE3254 :1CE7EC00A4FEDD22A7FECD1AE821A9FE347EDDBE10380B280936012AAAFE232215 :1CE80800AAFEAFC9473A9BFE31EACD2FEBDBD9E621FE2191 :1CEA8C002818FE0120F4CD66EB2AA5FE06000ED8EDB2DBD9E621FE2120F8CDEAFC :1CEAA800EA78E602C8CDFDEAC908000001 000000000000000000000000000000000000000000AC :1CEC68000000000000000000000000000000000000000000000000000000000090 :1CEC8400000000000000000000000000000000000000000A :1CEF080000000000000000000000000000000000000000000000000000000000ED :1CEF2400000000000000CEE280000000000000000000000000000000000000000000000000000000000CE :1CEE4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002C :1CF0E4000000000000000000000000000000000000000000000000000000000010 00000000000000000000000AF :1CED64000000000000000000000000000000000000000000000000000000000093 :1CED8000000000000000000000000000000000000000000D :1CF0040000000000000000000000000000000000000000000000000000000000F0 :1CF020000000000000000000000000000000000000000000000000000000000000000000000000000000000000074 :1CECA0000000000000000000000000000000000000000000000000000000000058 :1C00000000000000000000000000000000000000000000D1 :1CEF400000000000000000000000000000000000000000000000000000000000B5 :1CEF5C00000000B2 :1CEE60000000000000000000000000000000000000000000000000000000000096 :1CEE7C00000000000000000000000000000000000000000000:1CF1000000000000000000000000000000000000000000000000000000000000F3 :1CF11C000000000000000000000000000000000000000000000000000000000000000000000000000000000000077 :1CED9C00000000000000000000000000000000000000000000000000000000005B :1CEDB80000000000000000000000000000000000000000D4 :1CF03C0000000000000000000000000000000000000000000000000000000000B8 :1CF05800000000000000000000000ECBC00000000000000000000000000000000000000000000000000000000003C :1CECD8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099 :1CEF7800000000000000000000000000000000000000000000000000000000007D :000000000000007A :1CEE9800000000000000000000000000000000000000000000000000000000005E :1CEEB40000000000000000000000000000000000000000D7 :1CF1380000000000000000000000000000000000000000000000000000000000BB :1CF15400000000000000000000000000000000000000000000000000000000000000000000000000000000000003F :1CEDD4000000000000000000000000000000000000000000000000000000000023 :1CEDF000000000000000000000000000000000000000009C :1CF074000000000000000000000000000000000000000000000000000000000080 :1CF090000000000000000020 :1CECF4000000000000000000000000000000000000000000000000000000000004 :1CED100000000000000000000000000000000000000000000001CEF94000000000000000000000000000000000000000000000000000000000061 :1CEFB00000000000000000000000000000000000000000000000000000000000000000000000000000042 :1CEED0000000000000000000000000000000000000000000000000000000000026 :1CEEEC00000000000000000000000000000000000000009F :1CF170000000000000000000000000000000000000000000000000000000000083 :1CF18C000000000000000000000000000000000000000000000000000000000000000000000000000000000000007 :1CEE0C0000000000000000000000000000000000000000000000000000000000EA :100000000000000000000000000000000000000000000064 :1CF0AC000000000000000000000000000000000000000000000000000000000048 :1CF0C80000000000000000E7 :1CED2C0000000000000000000000000000000000000000000000000000000000CB :1CED48000000000000000000000000000000000000000045 :1CEFCC000000000000000000000000000000000000000000000000000000000029 :1CEFE800000000000000000000000000000000000000000002 0000000000000000000000000067 :1CF1A800000000000000000000000000000000000000000000000000000000004B :1CF1C40000000000000000000000000000000000000000C4 :1CF4480000000000000000000000000000000000000000000000000000000000A8 :1CF4640000000000000000000000000000000000000000000000000000000000000000000000000000089 :1CF38400000000000000000000000000000000000000000000000000000000006D :1CF3A00000000000000000000000000000000000000000E6 :1CF6240000000000000000000000000000000000000000000000000000000000CA :1CF64000000000000000006A :1CF2A400000000000000000000000000000000000000000000000000000000004E :1CF2C0000000000000000000000000000000000000000007 :1CF5440000000000000000000000000000000000000000000000000000000000AB :1CF56000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F :1CF1E0000000000000000000000000000000000000000000000000000000000013 :1CF1FC00000000000000000000000000000000000000008C :1CF480000000000000000000000000000000000000000000000000000000000070 :1CF49C0000000000000000000000000000000000000000000000000000000000000000000000000000051 :1CF3BC0000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000AE :1CF65C000000000000000000000000000000000000000000000000000000000092 :1CF670000000000000000032 :1CF2DC000000000000000000000000000000000000000000000000000000000016 :1CF2F800000000000000000000000000000000000000008F :1CF57C000000000000000000000000000000000000000000000000000000000073 :1CF5980000000000000000000000000000000000000000000000000000000000000000000000000000000000000F7 :1CF2180000000000000000000000000000000000000000000000000000000000DA :1CF234000000000000000000000000000000000000000054 :1CF4B8000000000000000000000000000000000000000000000000000000000038 :1CF4D40000000000 :1CF3D8000000000000000000000000000000000000000000000000000000000019 :1CF3F4000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000076 :1CF6940000000000000000000000000000000000000000000000000000000000000000000000000000000000000FA :1CF3140000000000000000000000000000000000000000000000000000000000DD :1CF330000000000000000000000000000000000000000057 :1CF5B400000000000000000000000000000000000000000000000000000000003B :1CF5D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000BE :1CF2500000000000000000000000000000000000000000000000000000000000A2 0000000000000000000000000000000000000000000000001C :1CF4F0000000000000000000000000000000000000000000000000000000000000 :1CF50C00000000FD :1CF4100000000000000000000000000000000000000000000000000000000000E0 :1CF42C00000000000000000000000000000000000000005A :1CF6B000000000000000000000000000000000000000000000000000000000003E :1CF6CC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000C1 :1CF34C0000000000000000000000000000000000000000000000000000000000A5 :1CF36800000000000000000000000000000000000000001F :1CF5EC000000000000000000000000000000000000000000000000000000000003 :1CF6080000000000000000000 :1CF26C000000000000000000000000000000000000000000000000000000000086 :1CF2880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3 :1CF5280000000000000000000000000000000000000000000000000000000000C3 000000000022 :1CF6E8000000000000000000000000000000000000000000000000000000000006 :1CF70400000000000000000000000000000000000000007F :1CF988000000000000000000000000000000000000000000000000000000000063 :1CF9A40000000000000000000000000000000000000000000000000000000000000000000000000000044 :1CF8C4000000000000000000000000000000000000000000000000000000000028 :1CF8E00000000000000000000000000000000000000000A1 :1CFB64000000000000000000000000000000000000000000000000000000000085 :1CFB800000000000000000000000000E4000000000000000000000000000000000000000000000000000000000009 :1CF800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066 :1CFAA000000000000000000000000000000000000000000000000000000000004A :1C00000000000000000000E9 :1CF7200000000000000000000000000000000000000000000000000000000000CD :1CF73C000000000000000000000000000000000000000047 :1CF9C000000000000000000000000000000000000000000000000000000000002B :1CF9DC000000000000000000000000000000000000000000000000000000000000000000000000000000C :1CF8FC0000000000000000000000000000000000000000000000000000000000F0 :1CF918000000000000000000000000000000000000000069 :1CFB9C00000000000000000000000000000000000000000000000000000000004D :1CFBB80000000000000000EC :1CF81C0000000000000000000000000000000000000000000000000000000000D0 :1CF83800000000000000000000000000000000000000000000000FABC00000000000000000000000000000000000000000000000000000000002E :1CFAD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000B1 :1CF758000000000000000000000000000000000000000000000000000000000095 :1CF77400000000000000000000000000000000000000000F :1CF9F80000000000000000000000000000000000000000000000000000000000F3 :1CFA1400000000000000000000000000000000000000000000000000000000000000000000000000000D3 :1CF9340000000000000000000000000000000000000000000000000000000000B7 :1CF000000000000000000000000000000000000000000031 :1CFBD4000000000000000000000000000000000000000000000000000000000015 :1CFBF00000000000000000B4 :1CF854000000000000000000000000000000000000000000000000000000000098 :1CF870000000000000000000000000000000000000000012 :1CFAF40000000000000000000000000000000000000000000000000000000000F6 :1CFB10000000000000000000000000000000000000000000000000000000000000000000000000000000000000079 :1CF79000000000000000000000000000000000000000000000000000000000005D :1CF7AC0000000000000000000000000000000000000000D6 :1CFA300000000000000000000000000000000000000000000000000000000000BA :1CFA4C000000000000000095000000000000000000000000000000000000000000000000000000000009B :1CF96C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F9 :1CFC0C0000000000000000000000000000000000000000000000000000000000DC :10000000000000000000007C :1CF88C000000000000000000000000000000000000000000000000000000000060 :1CF8A80000000000000000000000000000000000000000D9 :1CFB2C0000000000000000000000000000000000000000000000000000000000BD :1CFB48000000000000000000000000000000000000000000000000000000000000000000000000000000000000041 :1CF7C8000000000000000000000000000000000000000000000000000000000025 :1CF70000000000000000000000000000000000000000009E :1CFA68000000000000000000000000000000000000000000000000000000000082 :1CFA840000004 CFC280000000000000000000000000000000000000000000000000000000000C0 :1CFC4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E :1CFEE4000000000000000000000000000000000000000000000000000000000002 000000000000000FF :1CFE040000000000000000000000000000000000000000000000000000000000E2 :1CFE20000000000000000000000000000000000 * ;* DENTON, TEXAS 76201 * ;* * ;* LAST EDIT DATE: 21-AUGUST-82 * ;* * ;************************00000000000000000000000000000000000000000000C3 :1CFD400000000000000000000000000000000000000000000000000000000000A7 :1CFD5C00000000A4 :1CFC60000000000000000000000000000000000000000000000000000000000088 :1CFC7C00000000000000000000000000000000000000000000:1CFF000000000000000000000000000000000000000000000000000000000000E5 :1CFF1C00000000000000000000000000000000000000000000000000000000000000000000000000000C6 :1CFE3C0000000000000000000000000000000000000000000000000000000000AA :1CFE5800000000000000000000000******************************** ; ASEG .SFCOND ;DON'T LIST FALSE CONDITIONALS .Z80 ;USE ZILOG MNEMONICS ; TRUE EQU0000000000000000000000000000000000000000000000000000008B :1CFD7800000000000000000000000000000000000000000000000000000000006F :000000000000006C :1CFC98000000000000000000000000000000000000000000000000000000000050 :1CFCB40000000000000000000000000000000000000000C9 :1CFF380000000000000000000000000000000000000000000000000000000000AD :1CFF54000000000000000000000000000000000000000000000000000000000000000000000000000008E :1CFE74000000000000000000000000000000000000000000000000000000000072 :1CFE900000000000000 1 FALSE EQU 0 ; IOBYTE EQU 0003H ;INTEL CONFIGURATION BYTE USRDRV EQU 00H ;USER/DRIVE TO LOG ON AFTER COLDSTART SERIAL E1CFD94000000000000000000000000000000000000000000000000000000000053 :1CFDB000000000000000000000000000000000000000000000000000000;******************************************************** ;* * ;* -- CUSTOM BIOS FOR CP/M VERSION 2.2 -- * ;* *00000000000000000000000034 :1CFCD0000000000000000000000000000000000000000000000000000000000018 :1CFCEC000000000000000000000000000000000000000091 :14FF700000000000000000000000000000000000000000007D :00000001FF 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000056 :1CFEAC00000000000000000000000000000000000000000000000000000000003A :1CFEC8000QU FALSE ;DISABLE SIO/CRT CONSOLE COMBINATION ; MSIZE EQU 59 ;MEMORY SIZE IN KBYTES (RANGE 20..60) BASE EQU ((MSIZE-20)*1020000037 :1CFDCC00000000000000000000000000000000000000000000000000000000001B :1CFDE80000000000000000000000000000000000000000000 ;* DOUBLE DENSITY CBIOS FOR BIGBOARD-II * ;* * ;* COPYRIGHT (C) 1982 BY RUSSELL SMITH * ;* 818 WEST HICKORY0000000000000000000000000000000000FC :1CFD080000000000000000000000000000000000000000000000000000000000DF :1CFD24000000000000005 4)-200H ; 2 pages lower for DR:C MOVCPM CCP EQU 3400H+BASE ;CONSOLE COMMAND PROCESSOR BDOS EQU 3C06H+BASE ;OPERATING SYSTEM EL A CONTROL PORT# LSTBAUD EQU 89H ;SIO CHANNEL A BAUDRATE CTC PORT# XONXOFF EQU TRUE ;ENABLE XON-XOFF HANDSHAKE CTS EQUDENSITY SECTORS PER TRACK NTRAKS EQU 77 ;NUMBER OF TRACKS PER SURFACE RESERV EQU 2 ;NUMBER OF RESERVED TRACKS BLS EQU 2 ;DJP SETSECT JP SETDMA JP RDENTRY ;'READDB' WITH LOCAL STACK JP WRTENTRY ;'WRITEDB' WITH LOCAL STACK JP LISTST JP SECTRSIDED DRIVE ENABLE FIVE EQU FALSE EIGHT EQU TRUE ;SELECT 8 INCH FLOPPYS ; ; ; ; ... DEFINE TRACK/SECTOR PARAMS FOR STANDA10) OR '0' ;ONES DIGIT ; DEFB CR,LF DEFB '.... Cal-Tex Computers ',M1,M2,'K CP/M version 2.2 ....' DEFB CR,LF DEFB '...NTRY POINT DBBUG EQU 46D2H+BASE ;DEBLOCK BUG LOCATION IN BDOS CBIOS EQU 4A00H+BASE ;BASE OF CUSTOM BIOS CPMSIZE EQU (CBIOS-CC 00100000B ;CLEAR-TO-SEND BIT POSITION IN SIO RR0 SYNC EQU 00010000B ;SYNC/HUNT BIT DCD EQU 00001000B ;DATA-CARRIER-DETECT BITOUBLE DENSITY BLOCKSIZE IN KBYTES IF DOUBLE ALLMAX EQU ((9*NTRAKS*2)/BLS)/8 DIRSIZ EQU 128 ELSE ALLMAX EQU ((9*NTRAKS)/BLAN ; ; ; ; ... ENTRY POINTS FOR COMPLEX DISK ROUTINES ... ; SELENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL SELRD FLOPPYS ... ; ; IF FIVE NSECTS EQU 18 ;SINGLE DENSITY SECTORS PER TRACK NTRAKS EQU 40 ;NUMBER OF TRACKS PER SURFACE ...... release date 15-September-82 ..........' DEFB CR,LF DEFB NULL ; PAGE ; ; ; ... BIOS CODE STARTS HERE WITH JUMP P)/128 ;NUMBER OF RECORDS NEEDED FOR CCP+BDOS MONITR EQU 0F000H ;BASE OF SYSTEM MONITOR SYSRAM EQU 0FF00H ;BASE OF SYSTEM TBE EQU 00000100B ;TRANSMIT-BUFFER-EMPTY BIT TXMASK EQU DCD+TBE ;LOOP UNTIL DCD AND TBE BITS ARE TRUE ; ; ; PAGE ORS)/8 DIRSIZ EQU 128 ENDIF ENDIF ; ; ; .XLIST INCLUDE MACROS.MAC ;ASSEMBLE WITH MACRO DEFINITIONS .LIST ; ; ; ..DISK POP IX LD SP,(SPSAVE) RET ; ; ; RDENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL READDB POP IX LD SPRESERV EQU 3 ;NUMBER OF RESERVED TRACKS BLS EQU 2 ;DOUBLE DENSITY BLOCKSIZE IN KBYTES IF DOUBLE ALLMAX EQU ((5*NTRAKS*2)/BVECTORS ... ; ORG CBIOS ; JP BOOT JP WBOOT JP CONST IVEC: JP CONIN OVEC: JP CONOUT JP LIST JP CONOUT ;PUNCH VEC VARIABLES SCRATCH EQU 0F880H ;RAM AREA FOR BIOS/CPM BUFFERS ; ; ; ... DEFINE HOW MANY DRIVES IN SYSTEM ... ; WINCH EQU 1G CBIOS-256 .PHASE 0080H INCLUDE ONESECT.MAC ;ONE SECTOR LOADER .DEPHASE ; ; PAGE ORG CBIOS-128 ; ; ; ... CREATE . EQUATES FOR PRINTER DRIVER PORTS/HANDSHAKE MODE ... ; LSTDAT EQU 80H ;SIO CHANNEL A DATA PORT# LSTCTL EQU 81H ;SIO CHANNE,(SPSAVE) RET ; ; ; WRTENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL WRITEDB POP IX LD SP,(SPSAVE) RET ; LS)/8 DIRSIZ EQU 64 ELSE ALLMAX EQU ((5*NTRAKS)/BLS)/8 DIRSIZ EQU 64 ENDIF ENDIF ; IF EIGHT NSECTS EQU 26 ;SINGLE TOR SAME AS CONOUT JP CONIN ;READER VECTOR SAME AS CONIN JP HOME JP SELENTRY ;'SELDISK' WITH LOCAL STACK JP SETTRACK  ;NUMBER OF WINCHESTERS (0..1) IN SYSTEM NFLOPPY EQU 2 ;NUMBER OF FLOPPYS (1..4) IN SYSTEM DOUBLE EQU FALSE ;SINGLE/DOUBLE SIGNON MESSAGE FOR SELECTED MEMORY SIZE CPM ... ; M1 EQU (MSIZE / 10) OR '0' ;TENS DIGIT OF MSIZE IN ASCII M2 EQU (MSIZE MOD 6  ; ; ; ; ... COLD BOOT ROUTINE ... ; BOOT: DEFB 0,0,0,0 ;PUT EXTRA COLDSTART INITIALIZATION DEFB 0,0,0,0 ; CODE HERE T FOR END OF TABLE JR NZ,GOCPM2 LD A,(IOBYTE+1) ;DO AUTO LOG-ON THING THAT PEOPLE LIKE AND 00001111B CP NFLOPPY+WINCH OM TRACK #2 JR WBOOT4 ; WBOOT3: LD B,CPMSIZE ;GET ALL OF CP/M FROM TRACK #1 XOR A ;READ ZERO SECTORS FROM TRACK #2 WBOOT PATCH 01 3/31/81 DEFW DBBUG NOP NOP LD HL,0 DEFB 2 ;DEFAULT DISK I/O POINTER DEFW POINTR DEFW 0080H DEFB ET PARAM POINTER FOR DRIVE ZERO LD (DPHPTR),HL ; FORMAT DESCRIPTOR STUFF XOR A LD (DISK),A INC A LD (TRACK),A CALL P128 ADD HL,DE INC C DJNZ RTRK2 ;BUMP SECTOR# AND LOAD ADDRESS TILL B=0 LD A,(TRACK) INC A ;BUMP TRACK# AFTER LAST IF NEEDED. BE SURE TO TAKE DEFB 0,0,0,0 ; UP AT LEAST 40 BYTES OF MEMORY IN ANY DEFB 0,0,0,0 ; CASE TO MAKE ROOM FOR THE B JR C,GOCPM3 XOR A ;LOG-ON A: IF DRIVE# IS ILLEGALY LARGE GOCPM3: LD C,A LD HL,CCP LD A,(HL) ;PEEK AT FIRST OPCODE IN 4: LD HL,CCP PUSH AF CALL RTRACK ;READ CCP+BDOS FROM DOUBLE DENSITY POP BC INC B DEC B CALL NZ,RTRACK ;CONDITIONAL 0 ;END OF TABLE ; ; PAGE ; ; ... CHARACTER I/O ROUTINES FOR BIOS ... ; ; CONST: JP MONITR+6 ;MONITOR CONSOLE STATUS ENARAMS ;SELECT A: AND FIND TRACK #1 FORMAT JR NZ,BOMB ;EXIT IF PERMANENT ERROR LD HL,DPHTAB+SPT ;GET LOGICAL SECTORS-PER-SECTOR IS READ LD (TRACK),A RET ; ; BOMB: LD HL,DEAD CALL PMSG JP MONITR+3 ; DEAD: DEFB ' cannot boot' DEFB NULLIOS DEFB 0,0,0,0 ; SELECT/READ/WRITE LOCAL STACK AREA DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,CCP CP 0C3H JR NZ,BOMB ;ABORT IF NOT A JUMP INSTRUCTION JP (HL) ;ELSE JUMP INTO CCP TO START CPM ; ; ; ; RTRACK: READ FROM TRACK #2 GOCPM: LD HL,MEMTAB ;PREPARE TO STORE VECTORS & BDOS PATCH LD B,0 GOCPM2: LD C,(HL) ;BC=BYTECOUNT INTRY POINT ; ; CONIN: JP MONITR+9 ;MONITOR CONSOLE INPUT ENTRY POINT ; ; CONOUT: LD A,C JP MONITR+12 ;MONITOTRACK PARAM LD A,(HL) CP NSECTS+1 JR C,BOMB ;ERROR IF TRACK IS SINGLE DENSITY CP CPMSIZE JR NC,WBOOT3 ;JUMP IF CCP+BD ; ; ; ... ASSORTED CONSTANTS AND WHERE TO PLUG THEM IN ... ; MEMTAB: DEFB 3 ;WARMSTART VECTOR DEFW 0000H JP CBIOS+30,0 JR WBOOT2 BIOSTK EQU $ ;BIOS STACK OVERLAYS COLDSTART CODE ; SPSAVE: DEFS 2 ;USER SP SAVE FOR COMPLEX BIOS ENTRYS ; LD C,1 ;READ TRACK FROM LOGICAL SECTOR #1 RTRK2: PUSH HL PUSH BC LD (POINTR),HL LD A,C LD (SECTOR),A ;SET LOGICAL SECTC HL LD E,(HL) INC HL LD D,(HL) ;DE=DESTINATION POINTER INC HL LDIR ;COPY POOP INTO MEMORY LD A,(HL) OR A ;TESR CONSOLE OUTPUT ENTRY POINT ; ; ; LISTST: LD A,00010000B OUT (LSTCTL),A ;DO SIO CLEAR STATUS/INTERRUPT CMD IN A,(LSTCOS FITS ON ONE TRACK LD B,(HL) ;LOAD B WITH # OF SECTORS ON TRACK #1 LD A,CPMSIZE SUB B ;COMPUTE # OF EXTRA SECTORS FR DEFB 3 ;BDOS VECTOR DEFW 0005H JP BDOS DEFB 3 ;BREAKPOINT VECTOR DEFW 0038H JP MONITR+3 DEFB 5 ;CP/M 2.2 ; ; ; ... WARM BOOT ROUTINE ... ; WBOOT: LD SP,0080H CALL FLUSH ;FINISH ANY DEFERRED DISK I/O WBOOT2: LD HL,DPHTAB ;SOR NUMBER FOR READ CALL READDB ;LOAD NEXT 128 BYTES OF CP/M POP BC POP HL JR NZ,BOMB ;EXIT IF PERMANENT ERROR LD DE,7 TL) AND TXMASK ;DISCARD BITS NOT BEING TESTED CP TXMASK LD A,255 RET Z ;RETURN WITH A=255 IF PRINTER READY XOR A R DEFS 15 ;DISK PARAMETER BLOCK DEFS 4 ;DEBLOCK PARAMETERS DEFS 1 ;DEBLOCK FLAGS DEFS MAXBLK/8 ;ALLOCATION VECTOR SCRATCH DIRBUF: DEFS 128 ;SCRATCH DIRECTORY BUFFER BIGBUF: DEFS 1024 ;HOST SECTOR BUFFER FOR DEBLOCKING ; ; ; DPH MACRN OFF LISTING .PHASE SYSRAM INCLUDE MEMDEF.MAC ;ASSEMBLE SYSTEM VARIABLES IN CASE THEY .DEPHASE ; ARE REFERENCED ANYWHEREN' CHARACTER ENDIF RET ; ; ; INCLUDE DEBLOCK.MAC ;DEBLOCKING DISK DRIVERS ; IF WINCH INCLUDE XEBEC.MAC ;DISK DRIST EQUIVALENT OF SECTOR# RDACT: DEFS 1 ;READ BUFFER ACTIVE FLAG WRTACT: DEFS 1 ;WRITE BUFFER ACTIVE FLAG DIR: DEFS 1 ;DIR  RET ;ELSE RETURN WITH A=0 ; ; ; LIST: CALL LISTST OR A JR Z,LIST ;LOOP TILL SIO CAN SEND A CHARACTER LD A,C  ENDIF ; ; ; NEW EQU $ SECTOR: DEFS 1 ;BIOS SECTOR NUMBER TRACK: DEFS 2 ;BIOS TRACK NUMBER DISK: DEFS 1 ;BIOS DISK NUMO LOCAL BASE BASE: DEFS 16 ;;DISK PARAMETER HEADER DEFS 15 ;;DISK PARAMETER BLOCK DEFS 4 ;;DEBLOCK PARAMETERS DEFS 1 IN CBIOS ; ; END VERS FOR XEBEC CONTROLLER ENDIF ; ; IF $ GE MONITR .PRINTX /OVERLAYING SYSTEM MONITOR/ ENDIF ; BIOSLEN EQU (($ AND -FOR DEFERRED RD/WRT (1=READ) RWFLAG: DEFS 1 ;DIR FOR HOST RD/WRT (1=READ) ; ; DPHPTR: DEFS 2 ;POINTER TO DPH ENTRY PRMPTROUT (LSTDAT),A ;OUTPUT ASCII TO SIO IF XONXOFF IN A,(LSTCTL) BIT 0,A ;TEST SIO RX DATA AVAILABLE RET Z ;EXIT IF NO IBER POINTR: DEFS 2 ;BIOS DMA POINTER ; ; HOST EQU $ HSTSEC: DEFS 1 ;HOST SECTOR NUMBER HSTTRK: DEFS 2 ;HOST TRACK NUMBE ;;DEBLOCK FLAGS DEFS DIRSIZ/4 ;;CHECK VECTOR DEFS ALLMAX ;;ALLOCATION VECTOR ENDM ; ; ; DPHTAB EQU $ REPT NFLOPPY128)+128)-CBIOS ;LENGTH OF CBIOS MOD 128 ; PAGE ;******************************************************** ;* * ;* : DEFS 2 ;POINTER TO DISK PARAMS IDBUFF: DEFS 8 ;BUFFER FOR ID RECORDS ON SIDE #0 IDTOP: DEFS 8 ;BUFFER FOR ID RECORDS ON SNPUT FROM PRINTER IN A,(LSTDAT) ;ELSE GET CHARACTER AND TEST FOR RES 7,A ; 'XOFF' CHARACTER (CONTROL-S) CP 'S'-64 RETR HSTDSK: DEFS 1 ;HOST DISK NUMBER HSTPTR: DEFS 2 ; HSTDPH: DEFS 2 ;HOST DISK PARAMETER POINTER ; NEXT EQU $ NXTSEC: DE ;CREATE FLOPPY DISK DATA AREAS DPH ENDM DPHSIZ EQU ($-DPHTAB)/NFLOPPY ; ; IF WINCH DEFS 16 ;DISK PARAMETER HEADEDISK I/O BUFFERS FOR BDOS FILE HANDLER * ;* * ;******************************************************** ; ; ; ORG IDE #1 SCRLEN EQU $-SCRATCH ; ; IF $ GE SYSRAM .PRINTX /BIOS OVERLAYING SYSTEM VARIABLES/ ENDIF ; ; .XLIST ;TUR NZ LIST2: IN A,(LSTCTL) BIT 0,A JR Z,LIST2 ;LOOP TILL NEXT HANDSHAKE CHARACTER IN A,(LSTDAT) ;INPUT AND DISCARD 'XOFS 1 ;NEXT SECTOR NUMBER NXTTRK: DEFS 2 ;NEXT TRACK NUMBER ; RCOUNT: DEFS 1 ;UNALLOCATED RECORD COUNT SECTMP: DEFS 1 ;HO8 130E706004E235E2385 :1CE6DC005623EDB07EB720F43A0400E60FFE033801AF4F2100D07EFEC32022E9FD :1CE6F8000E01E5C5229FFE79329BFECD22E9C6CE6C398E6C350E7C353E7C356E7C369E7C356E7C353E7A6 :1CE61800C387E7C333E6C38AE7C38FE7C394E7C346E6C359E6C35AE7C399E7ED09 :1CE63400DD750ADD740B11140019DD750CDD740DDD5E1BDB :1CE8B800DD561C19DD750EDD740FE1AFC9231323131AAE2313C9E3E81A000307A1 :1CE8D40000F2003F320400EA :1CE538002180F836001181F8014506EDB021E10006060E81EDB306020E89EDB309 :1CE554003E0C3295FF3E01328CFFC300E60445034105AA47 :1CE7D8009EFEFE02CA7BE8AF32A1FE3E01D3C83A9EFE32A4FE4FCD1BF020143AC3 :1CE7F4009CFE32A2FE4FCD21F0200821B6FECD2AF02809CDF8EA28D71E1200F118000190C10E93A9CFE1E :1CE714003C329CFEC92122E7CD4BEBC303F0202063616E6E6F7420626F6F74009E :1CE73000030000C303E6030500C7396E63196E6DDE5CDA6E7DDE1ED7B96E6C9ED7396E63196E6DDE5CD8F :1CE6500022E9DDE1ED7B96E6C9ED7396E63196E6DDE5CD6EE9DDE1ED7B96E6C95E 00C000100002000000800001070D1319050B111703090F15FC :1CE8F00002080E141A060C1218040A101600800034010001340300023C07000420 :1CE90C043E3FCD0CF03E07E4 :1CE57000CD0CF0C303F0000000000000000000000D0A2E2E2E2E2043616C2D5490 :1CE58C00657820436F6D707574657273203539210000C9C3 :1CE8100021CEE822B4FE3ABCFECB47CA7BE8210DE922B4FE214B00E53AB9FEE6FB :1CE82C0003321EE926006F292901FDE809111FE9010300306D8033800C303F005D2E20000210000029F09 :1CE74C00FE800000C306F0C309F079C30CF03E10D381DB81E60CFE0C3EFFC8AFD8 :1CE76800C9CD5AE7B :1CE66C000000000000000000000000000000000000000000000000000000000092 :1CE6880000000000000000000000000018080000318000CD60EA2100F004000000000040F0000007F00C0002000020000000000DD2AB2FE3E0145 :1CE9280032B0FEDD7E1FB72009CD60EA3E01CD9BEAC9CD0CEA3AAFFEB72805CDC4B2043502F4D2076657273696FF4 :1CE5A8006E20322E32202E2E2E2E0D0A2E2E2E2E2E2E2E2E2E2072656C6561730E :1CE5C4006520646174652031352DEDB03C473AB7FECB3F88 :1CE8480020047E18038710FD320FE9D1210000471910FD3A11E947CB3CCB1D1060 :1CE86400FA2B2214E93A12E9CB3FCB3FCB3F728FA79D380DB81CB47C8DB80CBBFFE13C0DB81CB4728FA9D :1CE78400DB80C9010000ED439CFEC9219BFE71C9ED439FFEC960697AB3280519FB :1CE7A00D22B2FE9E :1CE6A400AF329EFE3C329CFECDD1E720682110FD7EFE1B3860FE2C3006463E2C5B :1CE6C000901803062CAF2100D0F5CDF8E6C10405C4F8E62D :1CE9440060EA180B3AAEFEB72805CD45EA28163AADFE32A1FE2A9CFE22A2FE3AD0 :1CE960009EFE32A4FECD78EAC0CD1AEAAFC9DD2AB2FEAF32B0FEDD753657074656D6265722D38322E2E2E2E2E2E13 :1CE5E0002E2E2E2E0D0A00900000000000000000000000000000000000000000C0 :1CE5FC0000000000C324252802CB3F3213E92AB4FEED5B32 :1CE88000B2FED5D5D5010200EDB0EB010E0009EB011300EDB0DDE12180F8DD7565 :1CE89C0008DD7409E111100019:1CE500002180F80E02CD24F0205F2100E606100E03E5C5CD24F0C1E1204F11809B :1CE51C0000190C10F03E0AD3D93E02D3D92180F8CD4BEBAF3203003E0006E2600C923C921000079FE03D0329EFE3C016F002191FC093D20FC22FD :1CE7BC00B2FECB43C0E5DDE1DDCB2346C0CD60EA3E02329CFE2192ED22B4FE3A7E9 E1FB7200854 :1CE97C00CD60EAAFCD9BEAC9CD0CEAAF32AEFE79FE02282BFE01281C3A9BFE214B :1CE99800A9FEBE20132A9CFEED5BAAFEB7ED52200721A39E :1CEC1C00EC3A7DECCD33EC3A7EECCD33EC3A7FECCD33EC3E01B7C9F51F1F1F1F10 :1CEC3800CD43ECF1CD43ECCD4BEBC9E60FC69027CE40274FCD0CE3CC97E23B7C84FCD0CE618F60664CD01 :1CEB580066EB060ACD66EBF6304FCD0CE6C90EFF0C9030FC80F579B7C45FEBF1AC :1CEB7400C90D0A42494F532000000000000000000000001B :1CEDF80000000000000000000000000000000000000000000000000000000000FF :1CEE14000000000000000000000000008002100F922A5FE3E0132AEFECDA6EAC821AEFE3600C92100F922A5FEAF07 :1CEA940032AFFECDA6EAC9219BFE11A1FE010600EDB032B1FE3AA4FEFE02D2E51FE2120F8CD66EDCDEAEC3E01B7C90300000000003E01D3D83E1B :1CED34000BD3D93E03D3D9DBD9E62BFE2220F81176EC010200EDB02323131301A2 :1CECFE7EB72022CD60EACDD4 :1CE9B40053E9C0CD8DEAC9CD60EADD7E1332ACFE3A9BFE32A9FE2A9CFE22AAFEA3 :1CE9D000180A35CD45EA281ACD8DEAC03AA6C90D0A4249EB :1CEC54004F53206572726F72206F6E205341534920207374617475733D002E001C :1CEC70002E002E0020000000000000000000000021B6572726F72206F6E20413A2020006E6F742072650E :1CEB9000616479007772742070726F7465637400777274206661756C74006E6F37 :1CEBAC0074206600000000000000000000000000000000E2 :1CEE300000000000000000000000000000000000000000000000000000000000C6 :1CEE4C0000000000000000DF :1CEAB000EB3AA4FE4FCD1BF02806CDF8EA28F2C906013AA2FEFE4D38040609D64F :1CEACC004D4F78D3C8CD21F02806CDF8EA28E5C92AA5FE3AA1FE4FD50000200EDB02176EC06060ED8EDB3DBD9E62BFE2228F8C9F321A5FF7E36B9 :1CED6C0001FBF5B73A9FFF2802E60FF5F60FD3CC3E8AD38C3EBFD38CDB8CCBDFE32A1FE2A9CFE22A2FE3A9EFE324E :1CE9EC00A4FEDD22A7FECD1AEA21A9FE347EDDBE10380B280936012AAAFE232211 :1CEA0800AAFEAFC9473A9BFE31ECCD2FEDDBD9E621FE218B :1CEC8C002818FE0120F4CD66ED2AA5FE06000ED8EDB2DBD9E621FE2120F8CDEAF8 :1CECA800EC78E602C8CDFDECC908000006F756E640062616420637263006F76657272756E0064727100C6 :1CEBC8006275737900002020747261636B20002020736563746F722000203F08A2 :1CEB000000000000000000000000000000000000000000AA :1CEE6800000000000000000000000000000000000000000000000000000000008E :1CEE840000003AB1FEB72831 :1CEAE80005CD24F01803CD27F0C8CDF8EA28E5C95F3AA4FEC6413285EB2175EB7B :1CEB0400CD4BEB01FF087B173807F5AFEDB1F110F6CD4F4F :1CED880020F6F1D3CCF132A5FFC900004000051F01C704FF01F000000000000118 :1CEDA40001000185000000000000000000000000000000000000DCB3F10FC3C32ADFEC93A9BFE3DDDA62026006F3B :1CEA2400292929292929290100F909ED5B9FFE3AB0FEB720063E0132AFFEEB0100 :1CEA40008000EDB0010021E4ECCD2FEDDBD9E621FE002001 :1CECC400F8CD66ED2AA5FE06000ED8EDB3DBD9E621FE2120F8CDEAEC78E602C806 :1CECE000CDFDECC90A00000E400002AA2FE29292929297C3278EC3AA1FE3DE61FB53279EC3AB1FEB7283D :1CEC000005CD80EC1803CDB7ECB7C82150ECCD4BEB3A7CECCB7F2814CBBFCD3000000000000000000000000000000000000000000000000000072 :1CEEA0000000000000000000000000000000000000000000000000000000000056 :1C4BEB7BE6C0201921CEEBA9 :1CEB2000CD4BEB3AA2FECD55EBCD4BEB3AA1FECD55EB3E01B7C921E1EBCD4BEB57 :1CEB3C00CD09E6FE032802AFC9AF320400000000000000CC :1CEDC0000000000000000000000000000000000000000000000000000000000037 :1CEDDC0000000000000000000000000000000000000C93AADFE21A1FEBEC02A9CFEED5BA2FEB7ED52C03A9EFE2158 :1CEA5C00A4FEBEC9AF32AEFE32ACFE3AAFFEB7C8DDE5DD2AA7FECD8DEADDE1C96D :1CEA700100DBD847DBD9E60828FADBD84FDBD9E60820FA12 :1CECFC00C92129EDCD2FEDDBD9E621FE0120F8CD66ED217CEC06040ED8EDB2DB2E :1CED1800D9E62: EEBC00000000000000000000000000000000000000000000000000000000003A :1CEED8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097 :1CF17800000000000000000000000000000000000000000000000000000000007B :0000000000000078 :1CF09800000000000000000000000000000000000000000000000000000000005C :1CF0B40000000000000000000000000000000000000000D5 :1CF3380000000000000000000000000000000000000000000000000000000000B9 :1CF35400000000000000000000000000000000000000000000000000000000000000000000000000000000000003D :1CEFD4000000000000000000000000000000000000000000000000000000000021 :1CEFF000000000000000000000000000000000000000009A :1CF27400000000000000000000000000000000000000000000000000000000007E :1CF29000000000000000001E :1CEEF4000000000000000000000000000000000000000000000000000000000002 :1CEF100000000000000000000000000000000000000000000001CF19400000000000000000000000000000000000000000000000000000000005F :1CF1B00000000000000000000000000000000000000000000000000000000000000000000000000000040 :1CF0D0000000000000000000000000000000000000000000000000000000000024 :1CF0EC00000000000000000000000000000000000000009D :1CF370000000000000000000000000000000000000000000000000000000000081 :1CF38C000000000000000000000000000000000000000000000000000000000000000000000000000000000000005 :1CF00C0000000000000000000000000000000000000000000000000000000000E8 :100000000000000000000000000000000000000000000062 :1CF2AC000000000000000000000000000000000000000000000000000000000046 :1CF2C80000000000000000E5 :1CEF2C0000000000000000000000000000000000000000000000000000000000C9 :1CEF48000000000000000000000000000000000000000043 :1CF1CC000000000000000000000000000000000000000000000000000000000027 :1CF1E80000000000000000000000000000000000000000000000000000000000000000000000000000008 :1CF1080000000000000000000000000000000000000000000000000000000000EB :1CF124000000000000000000000000000000000000000065 :1CF3A8000000000000000000000000000000000000000000000000000000000049 :1CF3C40000000000000000000000CF0280000000000000000000000000000000000000000000000000000000000CC :1CF04400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A :1CF2E400000000000000000000000000000000000000000000000000000000000E 00000000000000000000000AD :1CEF64000000000000000000000000000000000000000000000000000000000091 :1CEF8000000000000000000000000000000000000000000B :1CF2040000000000000000000000000000000000000000000000000000000000EE :1CF22000000000000000000000000000000000000000000000000000000000000000000000000000000CF :1CF1400000000000000000000000000000000000000000000000000000000000B3 :1CF15C00000000000000000000000000000000000000002D :1CF3E0000000000000000000000000000000000000000000000000000000000011 :1CF3FC0000000000000000B0 :1CF060000000000000000000000000000000000000000000000000000000000094 :1CF07C00000000000000000000000000000000000000000000:1CF3000000000000000000000000000000000000000000000000000000000000F1 :1CF31C000000000000000000000000000000000000000000000000000000000000000000000000000000000000075 :1CEF9C000000000000000000000000000000000000000000000000000000000059 :1CEFB80000000000000000000000000000000000000000D2 :1CF23C0000000000000000000000000000000000000000000000000000000000B6 :1CF25800000000000000000000000; 0000000000000000000000000000000000000000000000F5 :1CF4180000000000000000000000000000000000000000000000000000000000D8 :1CF434000000000000000000000000000000000000000052 :1CF6B8000000000000000000000000000000000000000000000000000000000036 :1CF6D40000000000 :1CF5D8000000000000000000000000000000000000000000000000000000000017 :1CF5F4000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000074 :1CF8940000000000000000000000000000000000000000000000000000000000000000000000000000000000000F8 :1CF5140000000000000000000000000000000000000000000000000000000000DB :1CF530000000000000000000000000000000000000000055 :1CF7B4000000000000000000000000000000000000000000000000000000000039 :1CF7D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000BC :1CF4500000000000000000000000000000000000000000000000000000000000A0 0000000000000000000000000000000000000000000000001A :1CF6F00000000000000000000000000000000000000000000000000000000000FE :1CF70C00000000FB :1CF6100000000000000000000000000000000000000000000000000000000000DE :1CF62C000000000000000000000000000000000000000058 :1CF8B000000000000000000000000000000000000000000000000000000000003C :1CF8CC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000BF :1CF54C0000000000000000000000000000000000000000000000000000000000A3 :1CF56800000000000000000000000000000000000000001D :1CF7EC000000000000000000000000000000000000000000000000000000000001 :1CF8080000000000000000000 :1CF46C000000000000000000000000000000000000000000000000000000000084 :1CF4880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E1 :1CF7280000000000000000000000000000000000000000000000000000000000C000000000000000000C2 :1CF6480000000000000000000000000000000000000000000000000000000000A6 :1CF664000000000000000000000000000000000000000020 :1CF8E8000000000000000000000000000000000000000000000000000000000004 :1CF904000000000000000000000000000000000000000000000000000000000000000000000000000000000000087 :1CF58400000000000000000000000000000000000000000000000000000000006B :1CF5A00000000000000000000000000000000000000000E4 :1CF8240000000000000000000000000000000000000000000000000000000000C8 :1CF840000000000000000068 :1CF4A400000000000000000000000000000000000000000000000000000000004C :1CF4C0000000000000000000000000000000000000000005 :1CF7440000000000000000000000000000000000000000000000000000000000A9 :1CF760000000000000000000000000000000000000000000000000000000000000000000000000000008A :1CF68000000000000000000000000000000000000000000000000000000000006E :1CF69C0000000000000000000000000000000000000000E7 :1CF9200000000000000000000000000000000000000000000000000000000000CB :1CF93C00000000000000000000000000000000000000000000000000000000000000000000000000000000000004F :1CF5BC0000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000AC :1CF85C000000000000000000000000000000000000000000000000000000000090 :1CF870000000000000000030 :1CF4DC000000000000000000000000000000000000000000000000000000000014 :1CF4F800000000000000000000000000000000000000008D :1CF77C000000000000000000000000000000000000000000000000000000000071 :1CF798000000000000000000000000000000000000000< 000000000000000000000000000000AF :1CF958000000000000000000000000000000000000000000000000000000000093 :1CF97400000000000000000000000000000000000000000D :1CFBF80000000000000000000000000000000000000000000000000000000000F1 :1CFC1400000000000000000000000000000000000000000000000000000000000000000000000000000D1 :1CFB340000000000000000000000000000000000000000000000000000000000B5 :1CF00000000000000000000000000000000000000000002F :1CFDD4000000000000000000000000000000000000000000000000000000000013 :1CFDF00000000000000000B2 :1CFA54000000000000000000000000000000000000000000000000000000000096 :1CFA70000000000000000000000000000000000000000010 :1CFCF40000000000000000000000000000000000000000000000000000000000F4 :1CFD10000000000000000000000000000000000000000000000000000000000000000000000000000000000000077 :1CF99000000000000000000000000000000000000000000000000000000000005B :1CF9AC0000000000000000000000000000000000000000D4 :1CFC300000000000000000000000000000000000000000000000000000000000B8 :1CFC4C0000000000000000B50000000000000000000000000000000000000000000000000000000000099 :1CFB6C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F7 :1CFE0C0000000000000000000000000000000000000000000000000000000000DA :10000000000000000000007A :1CFA8C00000000000000000000000000000000000000000000000000000000005E :1CFAA80000000000000000000000000000000000000000D7 :1CFD2C0000000000000000000000000000000000000000000000000000000000BB :1CFD4800000000000000000000000000000000000000000000000000000000000000000000000000000000000003F :1CF9C8000000000000000000000000000000000000000000000000000000000023 :1CF90000000000000000000000000000000000000000009C :1CFC68000000000000000000000000000000000000000000000000000000000080 :1CFC84000000007D :1CFB88000000000000000000000000000000000000000000000000000000000061 :1CFBA40000000000000000000000000000000000000000000000CFE280000000000000000000000000000000000000000000000000000000000BE :1CFE44000000000000000000000000000000000000000000000000000000000000000000000000000000000000042 :1CFAC4000000000000000000000000000000000000000000000000000000000026 :1CFAE000000000000000000000000000000000000000009F :1CFD64000000000000000000000000000000000000000000000000000000000083 :1CFD800000000000000000000000000E4000000000000000000000000000000000000000000000000000000000007 :1CFA00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064 :1CFCA0000000000000000000000000000000000000000000000000000000000048 :1C00000000000045 :1CFBC0000000000000000000000000000000000000000000000000000000000029 :1CFBDC0000000000000000000000000000000000000000A2 :1CFE60000000000000000000000000000000000000000000000000000000000086 :1CFE7C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000A :1CFAFC0000000000000000000000000000000000000000000000000000000000EE :1CFB18000000000000000000000000000000000000000067 :1CFD9C00000000000000000000000000000000000000000000000000000000004B :1CFDB80000000000000000EA :1CFA1C0000000000000000000000000000000000000000000000000000000000CE :1CFA3800000000000000000000000000000000000000000000000FCBC00000000000000000000000000000000000000000000000000000000002C :1CFCD80000000000000000000000000000000000000000000000000000000= 000000000000006A :1CFE9800000000000000000000000000000000000000000000000000000000004E :1CFEB40000000000000000000000000000000000******************************** ; ASEG .SFCOND ;DON'T LIST FALSE CONDITIONALS .Z80 ;USE ZILOG MNEMONICS ; TRUE EQUQU 18 ;SINGLE DENSITY SECTORS PER TRACK NTRAKS EQU 40 ;NUMBER OF TRACKS PER SURFACE RESERV EQU 3 ;NUMBER OF RESERVED TRACKS+BDOS MONITR EQU 0F000H ;BASE OF SYSTEM MONITOR SYSRAM EQU 0FF00H ;BASE OF SYSTEM VARIABLES SCRATCH EQU 0F880H ;RAM ARE00000000000000000000000032 :1CFED0000000000000000000000000000000000000000000000000000000000016 :1CFEEC000000000000000000000000 1 FALSE EQU 0 ; IOBYTE EQU 0003H ;INTEL CONFIGURATION BYTE USRDRV EQU 00H ;USER/DRIVE TO LOG ON AFTER COLDSTART SERIAL E;******************************************************** ;* * ;* -- CUSTOM BIOS FOR CP/M VERSION 2.2 -- * ;* * BLS EQU 2 ;DOUBLE DENSITY BLOCKSIZE IN KBYTES IF DOUBLE ALLMAX EQU ((5*NTRAKS*2)/BLS)/8 DIRSIZ EQU 64 ELSE ALLMAX EQU A FOR BIOS/CPM BUFFERS ; ; ; ... DEFINE HOW MANY DRIVES IN SYSTEM ... ; WINCH EQU 1 ;NUMBER OF WINCHESTERS (0..1) IN SYSTE0000000000000000000000000000000000FA :1CFF080000000000000000000000000000000000000000000000000000000000DD :1CFF2400000000000000QU FALSE ;DISABLE SIO/CRT CONSOLE COMBINATION ; MSIZE EQU 59 ;MEMORY SIZE IN KBYTES (RANGE 20..60) BASE EQU (MSIZE-20)*1024 ;* DOUBLE DENSITY CBIOS FOR BIGBOARD-II * ;* * ;* COPYRIGHT (C) 1982 BY RUSSELL SMITH * ;* 818 WEST HICKORY((5*NTRAKS)/BLS)/8 DIRSIZ EQU 64 ENDIF ENDIF ; IF EIGHT NSECTS EQU 26 ;SINGLE DENSITY SECTORS PER TRACK NTRAKS EQU 77M NFLOPPY EQU 2 ;NUMBER OF FLOPPYS (1..4) IN SYSTEM DOUBLE EQU FALSE ;SINGLE/DOUBLE SIDED DRIVE ENABLE FIVE EQU FALSE EIGH00000000000000000000000000000000000000000000C1 :1CFF400000000000000000000000000000000000000000000000000000000000A5 :1CFF5C0000 CCP EQU 3400H+BASE ;CONSOLE COMMAND PROCESSOR BDOS EQU 3C06H+BASE ;OPERATING SYSTEM ENTRY POINT DBBUG EQU 46D2H+BASE ;DEBLOC * ;* DENTON, TEXAS 76201 * ;* * ;* LAST EDIT DATE: 21-AUGUST-82 * ;* * ;************************ ;NUMBER OF TRACKS PER SURFACE RESERV EQU 2 ;NUMBER OF RESERVED TRACKS BLS EQU 2 ;DOUBLE DENSITY BLOCKSIZE IN KBYTES IF DT EQU TRUE ;SELECT 8 INCH FLOPPYS ; ; ; ; ... DEFINE TRACK/SECTOR PARAMS FOR STANDARD FLOPPYS ... ; ; IF FIVE NSECTS E00000000000000000000000000000000000000000000000000000089 :0CFF78000000000000000000000000007D :00000001FF 0000A5 :1CFF5C0000K BUG LOCATION IN BDOS CBIOS EQU 4A00H+BASE ;BASE OF CUSTOM BIOS CPMSIZE EQU (CBIOS-CCP)/128 ;NUMBER OF RECORDS NEEDED FOR CCP> OUBLE ALLMAX EQU ((9*NTRAKS*2)/BLS)/8 DIRSIZ EQU 128 ELSE ALLMAX EQU ((9*NTRAKS)/BLS)/8 DIRSIZ EQU 128 ENDIF ENDIF ; EX DISK ROUTINES ... ; SELENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL SELDISK POP IX LD SP,(SPSAVE) RET ; .....' DEFB CR,LF DEFB NULL ; PAGE ; ; ; ... BIOS CODE STARTS HERE WITH JUMP VECTORS ... ; ORG CBIOS ; JP BOOT T JR NZ,BOMB ;EXIT IF PERMANENT ERROR LD HL,DPHTAB+SPT ;GET LOGICAL SECTORS-PER-TRACK PARAM LD A,(HL) CP NSECTS+1 JTY BIT TXMASK EQU DCD+TBE ;LOOP UNTIL DCD AND TBE BITS ARE TRUE ; ; ; PAGE ORG CBIOS-256 .PHASE 0080H INCLUDE ONEOCAL STACK AREA DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 DEFB 0,0,0,0 JR WBOOT2 BIOSTK EQU $ ;BIOS STAC ; ; .XLIST INCLUDE MACROS.MAC ;ASSEMBLE WITH MACRO DEFINITIONS .LIST ; ; ; ... EQUATES FOR PRINTER DRIVER PORTS/HANDS; ; RDENTRY: LD (SPSAVE),SP LD SP,BIOSTK PUSH IX CALL READDB POP IX LD SP,(SPSAVE) RET ; ; ; WRTENTRY: LD  JP WBOOT JP CONST IVEC: JP CONIN OVEC: JP CONOUT JP LIST JP CONOUT ;PUNCH VECTOR SAME AS CONOUT JP CONIN ;READER VER C,BOMB ;ERROR IF TRACK IS SINGLE DENSITY CP CPMSIZE JR NC,WBOOT3 ;JUMP IF CCP+BDOS FITS ON ONE TRACK LD B,(HL) ;LOADSECT.MAC ;ONE SECTOR LOADER .DEPHASE ; ; PAGE ORG CBIOS-128 ; ; ; ... CREATE SIGNON MESSAGE FOR SELECTED MEMORY SIZE K OVERLAYS COLDSTART CODE ; SPSAVE: DEFS 2 ;USER SP SAVE FOR COMPLEX BIOS ENTRYS ; ; ; ; ... WARM BOOT ROUTINE ... ; WBHAKE MODE ... ; LSTDAT EQU 80H ;SIO CHANNEL A DATA PORT# LSTCTL EQU 81H ;SIO CHANNEL A CONTROL PORT# LSTBAUD EQU 89H ;SIO(SPSAVE),SP LD SP,BIOSTK PUSH IX CALL WRITEDB POP IX LD SP,(SPSAVE) RET ; ; ; ; ; ... COLD BOOT ROUTINE ... ; CTOR SAME AS CONIN JP HOME JP SELENTRY ;'SELDISK' WITH LOCAL STACK JP SETTRACK JP SETSECT JP SETDMA JP RDENTRY ;'RE B WITH # OF SECTORS ON TRACK #1 LD A,CPMSIZE SUB B ;COMPUTE # OF EXTRA SECTORS FROM TRACK #2 JR WBOOT4 ; WBOOT3: LD B,CPM ... ; M1 EQU (MSIZE / 10) OR '0' ;TENS DIGIT OF MSIZE IN ASCII M2 EQU (MSIZE MOD 10) OR '0' ;ONES DIGIT ; DEFB CR,LF OOT: LD SP,0080H CALL FLUSH ;FINISH ANY DEFERRED DISK I/O WBOOT2: LD HL,DPHTAB ;SET PARAM POINTER FOR DRIVE ZERO LD (DPH CHANNEL A BAUDRATE CTC PORT# XONXOFF EQU TRUE ;ENABLE XON-XOFF HANDSHAKE CTS EQU 00100000B ;CLEAR-TO-SEND BIT POSITION I BOOT: DEFB 0,0,0,0 ;PUT EXTRA COLDSTART INITIALIZATION DEFB 0,0,0,0 ; CODE HERE IF NEEDED. BE SURE TO TAKE DEFB 0,0,0,0ADDB' WITH LOCAL STACK JP WRTENTRY ;'WRITEDB' WITH LOCAL STACK JP LISTST JP SECTRAN ; ; ; ; ... ENTRY POINTS FOR COMPLCPMSIZE ;GET ALL OF CP/M FROM TRACK #1 XOR A ;READ ZERO SECTORS FROM TRACK #2 WBOOT4: LD HL,CCP PUSH AF CALL RTRACK ;RE DEFB '.... Cal-Tex Computers ',M1,M2,'K CP/M version 2.2 ....' DEFB CR,LF DEFB '......... release date 15-September-82.....PTR),HL ; FORMAT DESCRIPTOR STUFF XOR A LD (DISK),A INC A LD (TRACK),A CALL PARAMS ;SELECT A: AND FIND TRACK #1 FORMAN SIO RR0 SYNC EQU 00010000B ;SYNC/HUNT BIT DCD EQU 00001000B ;DATA-CARRIER-DETECT BIT TBE EQU 00000100B ;TRANSMIT-BUFFER-EMP ; UP AT LEAST 40 BYTES OF MEMORY IN ANY DEFB 0,0,0,0 ; CASE TO MAKE ROOM FOR THE BIOS DEFB 0,0,0,0 ; SELECT/READ/WRITE L? AD CCP+BDOS FROM DOUBLE DENSITY POP BC INC B DEC B CALL NZ,RTRACK ;CONDITIONAL READ FROM TRACK #2 GOCPM: LD HL,MEMTABHARACTER I/O ROUTINES FOR BIOS ... ; ; CONST: JP MONITR+6 ;MONITOR CONSOLE STATUS ENTRY POINT ; ; CONIN: JP MONITR+9 BOMB: LD HL,DEAD CALL PMSG JP MONITR+3 ; DEAD: DEFB ' cannot boot' DEFB NULL ; ; ; ... ASSORTED CONSTANTS AND WHER IF $ GE MONITR .PRINTX /OVERLAYING SYSTEM MONITOR/ ENDIF ; BIOSLEN EQU (($ AND -128)+128)-CBIOS ;LENGTH OF CBIOS MOD 12 A JUMP INSTRUCTION JP (HL) ;ELSE JUMP INTO CCP TO START CPM ; ; ; ; RTRACK: LD C,1 ;READ TRACK FROM LOGICAL SECTOR #F XONXOFF IN A,(LSTCTL) BIT 0,A ;TEST SIO RX DATA AVAILABLE RET Z ;EXIT IF NO INPUT FROM PRINTER IN A,(LSTDAT) ;ELSE ;PREPARE TO STORE VECTORS & BDOS PATCH LD B,0 GOCPM2: LD C,(HL) ;BC=BYTECOUNT INC HL LD E,(HL) INC HL LD D,(HL) ;D ;MONITOR CONSOLE INPUT ENTRY POINT ; ; CONOUT: LD A,C JP MONITR+12 ;MONITOR CONSOLE OUTPUT ENTRY POINT ; ; ; LIE TO PLUG THEM IN ... ; MEMTAB: DEFB 3 ;WARMSTART VECTOR DEFW 0000H JP CBIOS+3 DEFB 3 ;BDOS VECTOR DEFW 0005H 8 ; PAGE ;******************************************************** ;* * ;* DISK I/O BUFFERS FOR BDOS FILE HANDLER *1 RTRK2: PUSH HL PUSH BC LD (POINTR),HL LD A,C LD (SECTOR),A ;SET LOGICAL SECTOR NUMBER FOR READ CALL READDB ;LOAD N GET CHARACTER AND TEST FOR RES 7,A ; 'XOFF' CHARACTER (CONTROL-S) CP 'S'-64 RET NZ LIST2: IN A,(LSTCTL) BIT 0,A JE=DESTINATION POINTER INC HL LDIR ;COPY POOP INTO MEMORY LD A,(HL) OR A ;TEST FOR END OF TABLE JR NZ,GOCPM2 LD STST: LD A,00010000B OUT (LSTCTL),A ;DO SIO CLEAR STATUS/INTERRUPT CMD IN A,(LSTCTL) AND TXMASK ;DISCARD BITS NOT BEINGJP BDOS DEFB 3 ;BREAKPOINT VECTOR DEFW 0038H JP MONITR+3 DEFB 5 ;CP/M 2.2 PATCH 01 3/31/81 DEFW DBBUG NOP N ;* * ;******************************************************** ; ; ; ORG SCRATCH DIRBUF: DEFS 128 ;SCRATCH DIREXT 128 BYTES OF CP/M POP BC POP HL JR NZ,BOMB ;EXIT IF PERMANENT ERROR LD DE,128 ADD HL,DE INC C DJNZ RTRK2 ;BUR Z,LIST2 ;LOOP TILL NEXT HANDSHAKE CHARACTER IN A,(LSTDAT) ;INPUT AND DISCARD 'XON' CHARACTER ENDIF RET ; ; ; IA,(IOBYTE+1) ;DO AUTO LOG-ON THING THAT PEOPLE LIKE AND 00001111B CP NFLOPPY+WINCH JR C,GOCPM3 XOR A ;LOG-ON A: IF DRIV TESTED CP TXMASK LD A,255 RET Z ;RETURN WITH A=255 IF PRINTER READY XOR A RET ;ELSE RETURN WITH A=0 ; ; ; LIOP LD HL,0 DEFB 2 ;DEFAULT DISK I/O POINTER DEFW POINTR DEFW 0080H DEFB 0 ;END OF TABLE ; ; PAGE ; ; ... CECTORY BUFFER BIGBUF: DEFS 1024 ;HOST SECTOR BUFFER FOR DEBLOCKING ; ; ; DPH MACRO LOCAL BASE BASE: DEFS 16 ;;DISK PARMP SECTOR# AND LOAD ADDRESS TILL B=0 LD A,(TRACK) INC A ;BUMP TRACK# AFTER LAST SECTOR IS READ LD (TRACK),A RET ; ;NCLUDE DEBLOCK.MAC ;DEBLOCKING DISK DRIVERS ; IF WINCH INCLUDE XEBEC.MAC ;DISK DRIVERS FOR XEBEC CONTROLLER ENDIF ; ; E# IS ILLEGALY LARGE GOCPM3: LD C,A LD HL,CCP LD A,(HL) ;PEEK AT FIRST OPCODE IN CCP CP 0C3H JR NZ,BOMB ;ABORT IF NOTST: CALL LISTST OR A JR Z,LIST ;LOOP TILL SIO CAN SEND A CHARACTER LD A,C OUT (LSTDAT),A ;OUTPUT ASCII TO SIO I@ AMETER HEADER DEFS 15 ;;DISK PARAMETER BLOCK DEFS 4 ;;DEBLOCK PARAMETERS DEFS 1 ;;DEBLOCK FLAGS DEFS DIRSIZ/4 ;;CHECKS 1 ;DIR FOR HOST RD/WRT (1=READ) ; ; DPHPTR: DEFS 2 ;POINTER TO DPH ENTRY PRMPTR: DEFS 2 ;POINTER TO DISK PARAMS IDBUFF! "FQ 6 press to repeat or any other key to exit ...  ʻ6 *** ERROR ON :A O! ~#fo<6 ; HOST EQU $ HSTSEC: DEFS 1 ;HOST SECTOR NUMBER HSTTRK: DEFS 2 ;HOST TRACK NUMBER HSTDSK: DEFS 1 ;HOST DISK NUMBER HST VECTOR DEFS ALLMAX ;;ALLOCATION VECTOR ENDM ; ; ; DPHTAB EQU $ REPT NFLOPPY ;CREATE FLOPPY DISK DATA AREAS DPH : DEFS 8 ;BUFFER FOR ID RECORDS ON SIDE #0 IDTOP: DEFS 8 ;BUFFER FOR ID RECORDS ON SIDE #1 SCRLEN EQU $-SCRATCH ; ; IF *** press to retry or any other key to abort ...  >: NOT READY: SEEK ERROR: BAD SECTOR: VERIFY ERRPTR: DEFS 2 ; HSTDPH: DEFS 2 ;HOST DISK PARAMETER POINTER ; NEXT EQU $ NXTSEC: DEFS 1 ;NEXT SECTOR NUMBER NXTTRK: DEFS 2ENDM DPHSIZ EQU ($-DPHTAB)/NFLOPPY ; ; IF WINCH DEFS 16 ;DISK PARAMETER HEADER DEFS 15 ;DISK PARAMETER BLOCK DEFS $ GE SYSRAM .PRINTX /BIOS OVERLAYING SYSTEM VARIABLES/ ENDIF ; ; .XLIST ;TURN OFF LISTING .PHASE SYSRAM INCLUDE MOR  `8 A?2A 76 <~# :O>2O!>!*>:? :O! ~G!: ;NEXT TRACK NUMBER ; RCOUNT: DEFS 1 ;UNALLOCATED RECORD COUNT SECTMP: DEFS 1 ;HOST EQUIVALENT OF SECTOR# RDACT: DEFS 1 01"6 --- Cal-Tex Computers Sysgen Version 1.0 --- 6 Source drive name o 4 ;DEBLOCK PARAMETERS DEFS 1 ;DEBLOCK FLAGS DEFS MAXBLK/8 ;ALLOCATION VECTOR ENDIF ; ; ; NEW EQU $ SECTOR: DEFS EMDEF.MAC ;ASSEMBLE SYSTEM VARIABLES IN CASE THEY .DEPHASE ; ARE REFERENCED ANYWHERE IN CBIOS ; ; END ()= *:w#p#s#r#6"*͵">:<8:($' ɷ;READ BUFFER ACTIVE FLAG WRTACT: DEFS 1 ;WRITE BUFFER ACTIVE FLAG DIR: DEFS 1 ;DIR FOR DEFERRED RD/WRT (1=READ) RWFLAG: DEFr to skip ........ 8 (>2! "!"FQ 6 Destination drive name or to skip ... 8 (>2! "1 ;BIOS SECTOR NUMBER TRACK: DEFS 2 ;BIOS TRACK NUMBER DISK: DEFS 1 ;BIOS DISK NUMBER POINTR: DEFS 2 ;BIOS DMA POINTER ;A >:<8:($' ɷ ; ; PUTHEX: PUSH AF RRA RRA RRA RRA CALL PNYBBL ;PRINT HIGH NYBBLE OF HEX BYTE POP AF CALL PNYBBL ;PRINT LO Z,DWIN3 DWIN2: CALL RD ;READ FROM WINCHESTER JR DWIN4 ; DWIN3: CALL WRT ;WRITE TO WINCHESTER DWIN4: OR A RET Z ;EXIT ;LOW ADDRESS DEFB 1 ;BLOCK COUNT DEFB 0 ;CONTROL FIELD ; ; ; ; WRT: LD HL,WRTDCB CALL CMDOUT ;OUTPUT WRITE COMMQU 00100000B DATA EQU 00000000B MSG EQU 00001000B BUSY EQU 00000010B INPUT EQU 00000001B OUTPUT EQU 00000000B SEL EQU 3 MAND+INPUT JR Z,RD3 ;JUMP IF READ ERROR CP DATA+INPUT JR NZ,RD1 ;ELSE LOOP UNTIL DATA READ CALL REQ LD HL,(HSTPTR) W NYBBLE OF HEX BYTE CALL PMSG ;PRINT DELIMITER CHARACTER @HL RET ; ; PNYBBL: AND 00001111B ADD A,90H DAA ADC A,40 IF NO ERRORS FROM SASI LD HL,SASMSG CALL PMSG ;PRINT SASI BUS ERROR MESSAGE LD A,(ERRBUF) BIT 7,A ;TEST IF ADDRESS AND TO XEBEC WRT1: IN A,(SASI+1) AND 00100001B CP DATA+OUTPUT JR NZ,WRT1 ;LOOP UNTIL WRITE DATA REQUESTED CALL REQ L RST EQU 2 ON EQU 00001000B OFF EQU 00000000B ; ; ; DOWINCH: LD HL,(HSTTRK) ADD HL,HL ADD HL,HL ADD HL,HL ADD HL LD B,0 LD C,SASI INIR ;INPUT SECTOR DATA FROM XEBEC RD2: IN A,(SASI+1) AND 00100001B CP COMAND+INPUT JR NZ,RD2 ;L;******************************************************** ;* * ;* DISK I/O ROUTINES FOR XEBEC S1410 CONTROLLER * ;* H DAA LD C,A CALL OVEC RET ; ; SASMSG: DEFB CR,LF DEFB 'BIOS error on SASI status=',NULL DEFB '.',NULL DEFB '.FIELD IS APPLICABLE JR Z,DWINX ;PRINT ONLY FIRST STATUS BYTE IF NOT RES 7,A CALL PUTHEX LD A,(ERRBUF+1) CALL PUTHEX D HL,(HSTPTR) LD B,0 LD C,SASI OTIR ;BLAST DATA OUT TO XEBEC WRT2: IN A,(SASI+1) AND 00100001B CP COMAND+INPUT JR,HL ADD HL,HL ;CREATE DISK ADDRESS BYTES FOR DCB LD A,H LD (DCB+2),A ;STORE MIDDLE ADDRESS BYTE LD A,(HSTSEC) DEC A OOP UNTIL COMPLETION STATUS RDY RD3: CALL COMPLETE LD A,B AND 00000010B RET Z ;EXIT IF NO ERRORS CALL ERROR ;ELSE R * ;* LAST EDIT DATE: 25-AUGUST-82 * ;* * ;******************************************************** ; DMA EQU 08',NULL DEFB '.',NULL DEFB ' ',NULL ; ; ; ; DCB: DEFB 0,0,0,0,0,0 ;DEVICE CONTROL BLOCK ERRBUF: DEFB 0,0,0,0 ;ERROR ST LD A,(ERRBUF+2) CALL PUTHEX LD A,(ERRBUF+3) DWINX: CALL PUTHEX LD A,1 OR A RET ;RETURN PERMANENT ERROR TO CP/M ;  NZ,WRT2 ;LOOP UNTIL COMMAND COMPLETION CALL COMPLETE LD A,B AND 00000010B RET Z ;EXIT IF NO ERRORS CALL ERROR ;E;REMOVE +1 BIAS FROM WINCHESTER SECTOR AND 00011111B OR L LD (DCB+3),A ;STORE LOW ADDRESS BYTE LD A,(RWFLAG) OR A JREAD ERROR STATUS RET RDDCB: DEFB 00001000B ;READ COMMAND OPCODE DEFB 0 ;HIGH ADDRESS DEFB 0 ;MIDDLE ADDRESS DEFB 0 CH ;Z80 DMA PORT ADDRESS SELMUX EQU 0CCH ;DRIVE SEL/READY MUX CONTROL PORT SASI EQU 0D8H ;SASI BUS BASE ADDRESS COMAND EATUS BUFFER ; ; ; RD: LD HL,RDDCB CALL CMDOUT ;OUTPUT READ COMMAND TO XEBEC RD1: IN A,(SASI+1) AND 00100001B CP COB LSE REQUEST-SENSE-STATUS RET WRTDCB: DEFB 00001010B ;WRITE COMMAND OPCODE DEFB 0 ;HIGH ADDRESS DEFB 0 ;MIDDLE ADDRE XEBEC LEAVES COMMAND MODE RET ; ; ; REQ: DI LD HL,INUSE LD A,(HL) LD (HL),1 EI PUSH AF OR A ;TEST IF FOLPPNTROLLER #1 LD A,SEL+OFF OUT (SASI+1),A CMD1: IN A,(SASI+1) AND 00101011B ;MASK TO STATUS INPUT BITS FROM SASI CP COMAN DEFW 256 ;BYTES PER SECTOR ; ; ; ;  JR NZ,ERR1 ;LOOP UNTIL STATUS BYTES AVAILABLE CALL REQ LD HL,ERRBUF LD B,4 LD C,SASI INIR ;READ STATUS BYTES INTOCK FOR SEAGATE ST-506 WINCHESTER ; MAXBLK EQU 1224 ;NUMBER OF BLOCKS ON DISK WINSTUFF: DEFW 0 ;NO SECTOR SKEW TABLE SS DEFB 0 ;LOW ADDRESS DEFB 1 ;BLOCK COUNT DEFB 0 ;CONTROL FIELD ; ; ; COMPLETE: IN A,(SASI) ;READ FIRST COMPLETIYS WERE SELECTED OR NOT LD A,(SELCPY) JR Z,REQ1 AND 00001111B REQ1: PUSH AF OR 00001111B ;SELECT SASI REQ/ACK HANDSHAKED+BUSY+OUTPUT JR NZ,CMD1 ;LOOP UNTIL XEBEC ENTERS COMMAND MODE LD DE,DCB LD BC,2 LDIR ;COPY XEBEX COMMAND BYTES TO O BUFFER ERR2: IN A,(SASI+1) AND 00100001B CP COMAND+INPUT JR NZ,ERR2 ;LOOP UNTIL COMMAND COMPLETION CALL REQ CALL C DEFW 64 ;SECTORS PER TRACK DEFB 5 ;BLOCK SHIFT DEFB 00011111B ;BLOCK MASK DEFB 00000001B ;EXTENT MASK DEFW MAXBLK-1 ON BYTE LD B,A COMP2: IN A,(SASI+1) AND 00001000B JR Z,COMP2 ;LOOP UNTIL MSG INPUT BECOMES ACTIVE IN A,(SASI) ;READ SE FLIPFLOP OUT (SELMUX),A ; THROUGH DMA READY MULTIPLEXOR LD A,10001010B OUT (DMA),A ;PROGRAM DMA READY ACTIVE HIGH REQ2:BUFFER INC HL INC HL INC DE INC DE ;BUMP PAST MIDDLE/LOW ADDRESS BYTES LD BC,2 LDIR LD HL,DCB LD B,6 LD C,SAS .... Notes on BIOS/DDINIT/SYSGEN versions released 26-August-82 ... BIOS: This BIOS release should represent what we wilOMPLETE LD A,1 OR A RET ;RETURN PERMANENT ERROR INDICATION RSSDCB: DEFB 00000011B ;REQUEST SENSE STATUS OPCODE DEFB;MAX BLOCK# DEFW 511 ;MAX DIRECTORY ENTRY# DEFB 11110000B ;ALLOCATION MASK MSB DEFB 00000000B ;' ' LSB DEFWCOND COMPLETION BYTE LD C,A COMP3: IN A,(SASI+1) AND 00001000B JR NZ,COMP3 ;LOOP UNTIL MSG INPUT GOES AWAY AGAIN RET ; LD A,10111111B OUT (DMA),A ;ISSUE READ-DMA-STATUS COMMAND IN A,(DMA) BIT 1,A JR NZ,REQ2 ;LOOP TILL READY IS ACTIVE I OTIR ;PUT COMMAND BYTES OUT TO XEBEC CMD2: IN A,(SASI+1) AND 00101011B CP COMAND+BUSY+OUTPUT JR Z,CMD2 ;LOOP UNTILl be calling a 'distribution' version of the source code for the BIOS. It has been cleaned up so that most mere mortals shou 0 DEFB 0 DEFB 0 DEFB 0 DEFB 0 ; ; ; CMDOUT: LD A,1 OUT (SASI),A LD A,SEL+ON OUT (SASI+1),A ;SELECT XEBEC CO 0 ;CHECK SIZE (NOT REMOVABLE MEDIA) DEFW 0 ;RESERVED TRACKS DEFB 1 ;DEBLOCK SHIFT COUNT DEFB 00000001B ;DEBLOCK MASK ; ; ERROR: LD HL,RSSDCB CALL CMDOUT ;ISSUE READ-SENSE-STATUS COMMAND ERR1: IN A,(SASI+1) AND 00100001B CP DATA+INPUTPOP AF OUT (SELMUX),A POP AF LD (INUSE),A ;RESTORE IN-USE FLAG TO PREVIOUS STATE RET ; ; ; ; ; ; DISK PARAMETER BLC ld be able to assemble it and produce a working system without having to do any patches or funny stuff. The main module 'AUT printer driver. set to 80h/81h/89h for side A or 82h/83h/88h for side B. The one sector loader contains a short tabnable double sided floppies. allocates blocks on other side of disk and doubles directory size DIRSIZ ... number of direu have edited your desired changes in the bios or the equates shown above. A>M80 =AUTOBIOS A>L80 */P:E900 {use serial input port and CONOUT to use built-in crt. Same trick as Bigboard PFM rom's 'S' command, but gets done aued 'MEMDEF' has been added to the CBIOS. This is simply a copy of the monitor rom variables declaration file with the variabOBIOS.MAC' has includes for all the other files such as the boot loader, signon message, deblock routines, hard disk driver le of constants for sio initialization of write reg #4,#3,#5 and the ctc. Edit this table to change parity, baudratectory entries allocated. we may want to change this for compatibility with other systems. BLS ...... CP/M block size parif 59k MSIZE then use E500 here} *AUTOBIOS *AUTOBIOS/X/N/E #ZSID CPM.COM {assumes you created file by saying 'SAVE 34 tomatically by boot. WINCH .... set to 1 to enable XEBEC drivers to be assembled in with bios. Resuting code is > 1500 bles defined using EQU's instead of DEFS's. The main use of MEMDEF is to allow us make symbolic references to the system vars iand system variables EQU's. The following items are the main ones people will be interested in; MSIZE .... memory size in  etc. We may want to make a fancier way to define these parameters, but this will do for a while. XONXOFF .. set tameter (expressed in Kbytes). this should probably not be changed from the 2K value now being used, but we have it jCPM.COM' after running MOVCPM or standard version of SYSGEN} #M980,1F7F,4000 #F100,3FFF,0 #IAUTOBIOS.HEX #ytes long, so requires 59k memsize to run. NFLOPPY .. number of floppys in system. set to 1 or 2 for hard disk sysn the CBIOS cold start initialization. Use this trick to do things like changing the disk step rate, motor turn-off delay, kKbytes. use 60k for floppy-only systems and 59k for hard disk versions. USRDRV ... user number (high nybble) and drive no TRUE to enable this protocol in printer driver. TXMASK ... set to bits to be tested for printer-ready in list routine. ust in case. FIVE EIGHT .... floppy disk type being used. LSTDAT LSTCTL LSTBAUD .. sio ports and ctc chanel for serialR2000 {if 59k MSIZE then use 2400 here} #M4000,55FF,1600 You now have a picture of the reserved tracks as requtems or you will not have enough memory for the disk allocation vectors in most cases. DOUBLE ... set to ture to eeyboard fifo size, disk spin-up delay and goodies like that. SYSGEN: Type the following magic incantations after youmber (low nybble) to log-on after cold start. use 00h unless you are strange. SERIAL ... set to TRUE to cause CONIN to  possible bits are CTS/SYNC/DCD/TBE. (always test TBE, others are optional depending on printer) A new module callD ired by our SYSGEN parked in memory from locations 900h to 2BFFh. You can save this on a file if desired, and then run SYSGE " 256 " " 11 " " 512 " " 6 " " 1024 " " N (our version) to put the system on the reserved tracks of a formatted DD disk. The memory layout for the system tracks in SYSGEN is as follows; address sector ------ ------ 900-97f ... t0/s1 one sector loader for CP/M cold boot 980-9ff ... t0/s2 signon message A00-15FF ... t0/s3 to 26 BIOS code (1.5 to 2.5 Kbytes) 1600-2BFF ... t1/s1 to nn CCP and BDOS portion of CP/M (5.5 Kbytes) 44 sectors if 128 bytes/sector 22 " E F G H I J K L