A;;tz Bank 0 > 0 1 2 3 4 5 6 7 8 9 A B C D E F ^ ^ ^ ^ ^ ^ ^ ^ X X X X X X X X Type (F, H) F Drive (A-D) A Size (L, S) L Speed (F, S) S Seek Tests 1 OK 2 OK 3 OK 4 OK 5 OK 6 OK 7 OK 8 OK 9 OK 0 OK 4CH OK 10H OK 20H OK 0 OK 1 OK Restore OK 4CH OK Read/Write Tests Data Read OK Write Test MAY DESTROY Data CR=Proceed ESC=Abort ^[ A;;ba Bank 0 > 0 1 2 3 4 5 6 7 8 9 A B C D E F ^ ^ ^ ^ ^ ^ ^ ^ X X X X X X X X Preparing to boot, ESC to abort Standby MICAH 64k CP/M version 2.2 SUPER BIOS version 2.53 Copyright (c) 1980, S. D. Ninad MICro Applications & Hardware A>dir A: MCPM64 COM : ASM COM : BEGDAT REL : BEGDAT Z80 A: BIOS REL : BIOS Z80 : BOOT REL : BOOT Z80 A: CONFIG COM : DDCOPY COM : DDT COM : DEBLOCK ASM A: DISKERR REL : DISKERR Z80 : DRIVES REL : DRIVES Z80 A: DUMP ASM : DUMP COM : ED COM : INIT COM A: LABGEN COM : LNKCPM SUB : LOAD COM : SYSGEN COM A: MICAHMOV REL : NDIO REL : NDIO Z80 : PERSCI REL A: PIP COM : STAT COM : SUBMIT COM : WARMBOOT REL A: WARMBOOT Z80 : XSUB COM : EXPAND COM : LISTF COM A: ATRIB COM : XDIR COM : SCREEN COM : MOVCPM COM A: DEBUG COM : LISTF SUB A>stat A: R/W, Space: 298k A>type bios.z80 TITLE CBIOS CREATED BY NINAD REM REM This BIOS is for CP/M 2.2 REM ; ; February, 1980 - revised for double sided ; October, 1980 - revised for double density ; Feburary, 1981 - revised to correct problems with double ; density ; ; COPYRIGHT (C) 1978, 1981 ; SWAMI DEVA NINAD ; REM This module is entered only on COLD BOOT. The rest of the REM BIOS functions are implemented in separate modules. REM See the WBOOT module for more information. ; ; Module Linkage: ; ENTRY BIOS,BOOT,WBOOTE,WBOOTA,FSELDSK,SELD,GOCPM ENTRY CPMB,BDOS ENTRY EXPTR EXT CONIN,CONOUT,CONST,LIST,LOUT,READER,PUNCH,LSTAT EXT WBOOT,FWBOOT EXT HOME,HOMEDR,SELDSK,SETTRK,SETSEC,SETDMA,READ,WRITE,SECTRAN EXT TRKNO,SECNO,DSKNO,SIDNO,DSKBF,REQDSK,UNACNT,HSTACT EXT DISKERR EXT DRIVE0,DEVTBL,TRNTBL EXT INIT,ENDDAT,DEVTBL ; ; TRUE: EQU 0FFFFH ;VALUE OF "TRUE" FALSE: EQU NOT TRUE ; ; VERS: EQU 22 ;CPM VERSION NUMBER CCPSIZ: EQU 0800H IF VERS EQ 14 BDOSIZ: EQU 0D00H ENDIF IF VERS EQ 13 BDOSIZ: EQU 0C00H ENDIF IF VERS GE 20 BDOSIZ: EQU 0E00H ENDIF SYSIZE: EQU CCPSIZ+BDOSIZ NSECTS: EQU SYSIZE/128 DDTRST: EQU 7*8 ;DDT RESTART LOCATION ; ; ; VARIOUS EQUATES ; CR: EQU 0DH ;CARRIAGE RETURN LF: EQU 0AH ;LINE FEED TBE: EQU 80H ;XMIT BUFFER EMPTY STATUS BIT OFFSET: EQU 2 ;NUMBER OF DISK TRACKS USED BY CP/M DISKA: EQU 04H ;ADDRESS OF LAST LOGGED DISK ON WARM START BUFF: EQU 80H ;DEFAULT BUFFER ADDRESS ; ; EQUATES FOR THE DISK SYSTEM ; BORG: EQU 080H ;WHERE BOOT ACTUALLY EXECUTES DPB: EQU BORG+105 ;DISK PARAMETER BLOCK ON BOOT TRACK SIZE: EQU BORG+120 ;DISKETTE SIZE SIDE: EQU BORG+122 ;DISKETTE SIDES (DS=DOUBLE,SS=SINGLE) DENS: EQU BORG+124 ;DISKETTE DENSITY (DD=DOUBLE,SD=SINGLE) RESV: EQU BORG+126 ;NOT IMPLEMENTED SDFLAG: EQU BORG+127 ;SIDE, DENSITY FLAG (SEE DRIVES.Z80) ; ; ; PERFORM FOLLOWING FUNCTIONS ; BOOT COLD START ; WBOOT WARM START (SAVE I/O BYTE) ; (BOOT AND WBOOT ARE THE SAME FOR MDS) ; CONST CONSOLE STATUS ; REG-A = 00 IF NO CHARACTER READY ; REG-A = FF IF CHARACTER READY ; CONIN CONSOLE CHARACTER IN (RESULT IN REG-A) ; CONOUT CONSOLE CHARACTER OUT (CHAR IN REG-C) ; LIST LIST OUT (CHAR IN REG-C) ; PUNCH PUNCH OU\ (CHAR IN REG-C) ; READER PAPER TAPE READER IN (RESULT TO REG-A) ; HOME MOVE TO TRACK 00,NOT USED CALL READ OR WRITE OF TRACK 00 IF REQUIRED ; ; ; ; SELDSK SELECT DISK GIVEN BY REG-C (0,1,2...) ; SETTRK SET TRACK ADDRESS (0,...76) FOR SUBSEQUENT READ/WRITE ; SETSEC SET SECTOR ADDRESS (1,...,26) FOR SUBSEQUENT READ/WRITE ; SETDMA SET SUBSEQUENT DMA ADDRESS (INITIALLY 80H) ; ; (READ AND WRITE ASSUME PREVIOUS CALLS TO SET UP THE IO PARAMETERS) ; READ READ TRACK/SECTOR TO PRESET DMA ADDRESS ; WRITE WRITE TRACK/SECTOR FROM PRESET DMA ADDRESS ; ; JUMP VECTOR FOR INDIVIUAL ROUTINES BIOS: JP BOOT WBOOTA: JP FWBOOT WBOOTE: EQU $-2 JP CONST JP CONIN JP CONOUT JP LIST JP PUNCH JP READER JP HOME FSELDSK:JP SLDBOOT SELD: EQU $-2 JP SETTRK JP SETSEC JP SETDMA JP READ JP WRITE JP LSTAT ;LIST STATUS POINTER JP SECTRAN ;SECTOR TRANSLAT ; ; THESE ENTRY POINTS ADDED FOR EASE OF LOCATION BY ; MICAHMOV, MICAHGEN, LABGEN, CONFIG, AND MCPM ; JP INIT ;INITIALIZE TUARTS JP ENDDAT ;END OF DATA AREA DB 0C3H ;JUMP INSTRUCTION EXPTR: DW BIOS-SYSIZE+CCPSIZ+11H ;ACTUAL BDOS ENTRY POINT ; BOOT: DI XOR A,A LD (DISKA),A ;RESET DEFAULT DISK DRIVE LD (DSKNO),A ;SELECT DRIVE 0 LD HL,0FFE6H ;BIT MAP FOR TUART INITIALIZATION LD E,2 ;2 BYTES PER WORD LD C,03H ;START AT PORT 3 BYTELOOP: LD B,8 ;8 BITS PER BYTE MASKLOOP: SRL L ;CHECK BIT JR NC,NOINIT ;SKIP IF OFF SUB A ;CLEAR A OUT (C),A ;RESET (C) DEC C INC A OUT (C),A ;MASK (C) INC C NOINIT: LD A,16 ;INCREMENT TO NEXT TUART MASK PORT ADD A,C LD C,A DJNZ MASKLOOP LD L,H DEC E JR NZ,BYTELOOP LD A,0C9H ;GET RETURN INSTRUCTION LD (BIOS+6),A ;MAKE CONSTAT, LD (BIOS+9),A LD (BIOS+12),A ; CONOUT, LD (DISKERR),A ; AND DISKERR DUMMY ROUTINES FOR BOOT LD SP,BUFF+80H ; LD A,(BIOS-SYSIZE+4FH) LD (DEVTBL+1),A IN A,31H ;READ TRACK REGISTER LD (DEVTBL+2),A CALL HOME ; ;GO TO CP/M ; ; ; DONE WITH THE LOAD, RESET DEFAULT BUFFER ADDRESS GOCPM: ;(ENTER HERE FROM COLD START BOOT) ; SET DEFAULT BUFFER ADDRESS TO 80H ; ; RESET MONITOR ENTRY POINTS XOR A,A LD (UNACNT),A LD (HSTACT),A LD A,0C3H LD (0),A LD HL,WBOOTA LD (1),HL ;JMP WBOOT AT LOCATION 00 LD (5),A ; DB 21H ;LD HL,NNNN INSTRUCTION BDOS: DW BIOS-SYSIZE+CCPSIZ+6 ; LD (6),HL ;JMP BDOS AT LOCATION 5 ; DB 0C3H ;JP NNNN INSTRUCTION CPMB: DW BIOS-SYSIZE ; ; SELECT DISK ROUTINE FOR BOOTING ; SLDBOOT: LD A,C LD (REQDSK),A DB 21H ;LD HL,NNNN DW BIOS-SYSIZE+50H RET ; END 20140510 MICAH 64k CP/M version 2.2 SUPER BIOS version 2.53 Copyright (c) 1980, S. D. Ninad MICro Applications & Hardware A>dir A: MCPM64 COM : ASM COM : BEGDAT REL : BEGDAT Z80 A: BIOS REL : BIOS Z80 : BOOT REL : BOOT Z80 A: CONFIG COM : DDCOPY COM : DDT COM : DEBLOCK ASM A: DISKERR REL : DISKERR Z80 : DRIVES REL : DRIVES Z80 A: DUMP ASM : DUMP COM : ED COM : INIT COM A: LABGEN COM : LNKCPM SUB : LOAD COM : SYSGEN COM A: MICAHMOV REL : NDIO REL : NDIO Z80 : PERSCI REL A: PIP COM : STAT COM : SUBMIT COM : WARMBOOT REL A: WARMBOOT Z80 : XSUB COM : EXPAND COM : LISTF COM A: ATRIB COM : XDIR COM : SCREEN COM : MOVCPM COM A: DEBUG COM : LISTF SUB MICAH LISTF UTILITY, Version 3.1 "X" in the EX column indicates EXPAND 6.0 compatibility Listed files from drive A: Name Exts Recs K EX Name Exts Recs K EX ASM.COM 1 64 8 ATRIB.COM 1 33 5 BEGDAT.REL 1 3 1 BEGDAT.Z80 1 13 2 BIOS.REL 1 5 1 BIOS.Z80 1 38 5 BOOT.REL 1 2 1 BOOT.Z80 1 14 2 CONFIG.COM 1 61 8 DDCOPY.COM 1 41 6 DDT.COM 1 38 5 DEBLOCK.ASM 1 80 10 DEBUG.COM 1 78 10 DISKERR.REL 1 6 1 DISKERR.Z80 1 37 5 DRIVES.REL 1 4 1 DRIVES.Z80 1 42 6 DUMP.ASM 1 33 5 DUMP.COM 1 4 1 ED.COM 1 52 7 EXPAND.COM 1 23 3 INIT.COM 1 24 3 LABGEN.COM 1 26 4 LISTF.COM 1 48 6 LISTF.SUB 1 12 2 LNKCPM.SUB 1 2 1 LOAD.COM 1 14 2 MCPM64.COM 1 90 12 MICAHMOV.REL 1 1 1 MOVCPM.COM 1 100 13 NDIO.REL 1 4 1 NDIO.Z80 1 57 8 PERSCI.REL 1 15 2 PIP.COM 1 58 8 SCREEN.COM 1 87 11 STAT.COM 1 41 6 SUBMIT.COM 1 10 2 SYSGEN.COM 1 13 2 Press any key to continue Name Exts Recs K EX Name Exts Recs K EX WARMBOOT.REL 1 3 1 WARMBOOT.Z80 1 21 3 XDIR.COM 1 13 2 XSUB.COM 1 6 1 Totals: 42 files, 42 extents, 1316 records, 184 k Successful LISTF.SUB creation A>xdir DIRECTORY DRIVE - A ASM COM 8K DUMP COM 2K SUBMIT COM 2K ATRIB COM 6K ED COM 8K SYSGEN COM 2K BEGDAT REL 2K EXPAND COM 4K WARMBOOTREL 2K BEGDAT Z80 2K INIT COM 4K WARMBOOTZ80 4K BIOS REL 2K LABGEN COM 4K XDIR COM 2K BIOS Z80 6K LISTF COM 6K XSUB COM 2K BOOT REL 2K LISTF SUB 2K BOOT Z80 2K LNKCPM SUB 2K CONFIG COM 8K LOAD COM 2K DDCOPY COM 6K MCPM64 COM 12K DDT COM 6K MICAHMOVREL 2K DEBLOCK ASM 10K MOVCPM COM 14K DEBUG COM 10K NDIO REL 2K DISKERR REL 2K NDIO Z80 8K DISKERR Z80 6K PERSCI REL 2K DRIVES REL 2K PIP COM 8K DRIVES Z80 6K SCREEN COM 12K DUMP ASM 6K STAT COM 6K 42 FILES 298K BYTES REMAINING ON DISK MICAH LISTF UTILITY, Version 3.1 "X" in the EX column indicates EXPAND 6.0 compatibility Listed files from drive A: Name Exts Recs K EX Name Exts Recs K EX BEGDAT.Z80 1 13 2 BIOS.Z80 1 38 5 BOOT.Z80 1 14 2 DISKERR.Z80 1 37 5 DRIVES.Z80 1 42 6 NDIO.Z80 1 57 8 WARMBOOT.Z80 1 21 3 Totals: 7 files, 7 extents, 222 records, 31 k Successful LISTF.SUB creation MICAH Disk Formatting Program version 3.0 WARNING: This program destroys all the data on the disk without chance of recovery. Press Control-C at any prompt to exit. Place a not-write protected diskette in drive B: Is it OK to format DOUBLE SIDED and DOUBLE DENSITY [Y/N]? y Place a not-write protected diskette in drive B: Is it OK to format DOUBLE SIDED and DOUBLE DENSITY [Y/N]? A>dir b: NO FILE MICAH Double Density Copy Program Version 7.3 (Copyright 1978, 1981 MICAH) Cromemco 4FDC and 16FDC Drivers Builtin Be sure that Soruce and Destination are formatted and labelled properly SOURCE ON A, DESTINATION ON B ("Y"=yes, "Q"=quit, "I"=info) >> Track 00, Side 01 Track 00, Side 01 Read Error, Drive A, Track 00, Sector 01, Cylinder 01, Status 10 Continue A bad sector has been detected. Do you want to restart this job? 'Y' = Yes 'Q' = Exit program 'R' = Retry READ or WRITE operation again Select option >> A bad sector has been detected. Do you want to restart this job? 'Y' = Yes 'Q' = Exit program 'R' = Retry READ or WRITE operation again Select option >> A>pip *b:=a:*.* COPYING - MCPM64.COM ASM.COM BEGDAT.REL BEGDAT.Z80 BIOS.REL BIOS.Z80 BOOT.REL BOOT.Z80 CONFIG.COM DDCOPY.COM DDT.COM DEBLOCK.ASM DISKERR.REL DISKERR.Z80 DRIVES.REL DRIVES.Z80 DUMP.ASM DUMP.COM ED.COM INIT.COM LABGEN.COM LNKCPM.SUB LOAD.COM SYSGEN.COM MICAHMOV.REL NDIO.REL NDIO.Z80 PERSCI.REL PIP.COM STAT.COM SUBMIT.COM WARMBOOT.REL WARMBOOT.Z80 XSUB.COM EXPAND.COM LISTF.COM ATRIB.COM XDIR.COM SCREEN.COM MOVCPM.COM DEBUG.COM LISTF.SUB * A>labegge# labgen b: MICAH CP/M LABEL GENERATION, version 2.5 for Cromemco 4FDC and 16FDC controllers This program creates and maintains Cromemco compatible labels. The following table indicates the conventions of the diskettes created by LABGEN on 8" media: SIDES DENSITY NUMBER of STORAGE DIRECTORY CAPACITY ENTRIES Single Single 64 243K Double Single 128 492K Single Double 128 508K Double Double 256 1216K LABGEN created diskettes can be utilized with systems requiring CDOS. Default values are displayed in [brackets]. Select Drive (A, B, C, etcetera) - > B WARNING: There is no label currently on the disk. The entire directory may be destroyed in the process of label generation. Do you want to EXIT now to check the DIRectory? [No] - > Diskette label [Userdisk] : - > diskb Diskette date [00/00/00] : - > 12/12/99 Single or Double sided [S] : - > d WARNING: You are changing from DOUBLE sided to SINGLE sided or from SINGLE sided to DOUBLE sided. There is NO HARDWARE checking for DOUBLE sided when DOUBLE sided labels are generated The entire directory may be destroyed in the process of label generation. Do you want to EXIT now to check the DIRectory? [No] - > Label written Exiting to CP/M A>dir *.com A: MCPM64 COM : ASM COM : CONFIG COM : DDCOPY COM A: DDT COM : DUMP COM : ED COM : INIT COM A: LABGEN COM : LOAD COM : SYSGEN COM : PIP COM A: STAT COM : SUBMIT COM : XSUB COM : EXPAND COM A: LISTF COM : ATRIB COM : XDIR COM : SCREEN COM A: MOVCPM COM : DEBUG COM A>sysgen b: MICAH CP/M AND MP/M SYSTEM GENERATION, version 2.5 for Cromemco 4FDC and 16FDC controllers Source Drive (or RETURN to skip) - > a Source on A, then type RETURN Function Complete Destination Drive (or RETURN to reboot) - > b Destination on B, then type RETURN Function Complete Exiting to CP/M A>stat b: Bytes Remaining On B: 1204k A> MICAH CP/M SYSTEM CONFIGURATION, version 2.6 Note that double sided drives are automatically supported. Remember that a double sided diskette must have a label for proper operation. Source Drive for MOVCPM COM (^C to exit) - > Source file on A, then type RETURN Function Complete Valid functions for the CONFIG program are: D - to select disk drive characteristics T - to select TUART characteristics or to select a printer port for MP/M P - to select initial printer device (CP/M only) E - to exit from the program with update of file Q - to exit from the program without update of file Select function - > Enter drive A type (P=PerSci, S=Small, O=Other 8", E=End) - > Enter drive B type (P=PerSci, S=Small, O=Other 8", E=End) - > Enter drive C type (P=PerSci, S=Small, O=Other 8", E=End) - > Enter drive D type (P=PerSci, S=Small, O=Other 8", E=End) - > Working - Do Not interrupt Function Complete Exiting to CP/M A>atrib MICAH ATTRIBUTE PROGRAM version 1.0 This program performs the following functions: f) Resets CDOS directory attributes to be compatible with CP/M NOTE: this function works with single sided, single density CDOS compatible diskettes not write protected. e) Sets CP/M directory attributes for use with EXPAND when EXPAND resides within the BIOS NOTE: this function requires CP/M 2.0 or higher. Type RETURN to go back to menu. c) Resets directory entry to CDOS compatiblity. u) Unerase DIRECTORY entry s) Save DIRECTORY as a disk file (SYS.DIR) Select function (q to EXIT) -> q