|
DataMuseum.dkPresents historical artifacts from the history of: Commodore CBM-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Commodore CBM-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 3083 (0xc0b) Types: TextFile Notes: UNIX file Names: »t.asm«
└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code └─⟦0a3c255ba⟧ UNIX Filesystem └─ ⟦this⟧ »assm/t.asm«
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;*************************************************************************************************************************** ;*************************************************************************************************************************** ; CSI-DOS-VERSION 3.2j ; COPYWRITE (C) 1985 ; BY COMPUTER SPECIALTIES INC. ; SID TODD & OTIS LUTZ ;*************************************************************************************************************************** ;*************************************************************************************************************************** ; ; ; For 10MB, 4 Head, 306 Cylinder Disk. ; ; Things fixed: ; V3.2 11/15/85 FAH ; (a) Fixes the disk full error @ 6MB of data. ; (b) Fixes the # of blocks free. ; (Rd) (c) Fixes backup to serial device. ; (Re) (d) Compacted START area of code. 23 bytes freed. ; (Rf-Rh) (e) Various timing change attempts - none permanent. ; (Ri) (f) C128 fixes : (1) Remove line to SRQ (hardware fix ; required for now. Fixes LOAD/SAVE problem. ; (2) Make delay at start of OSW ; shorter - fixes read timeout on EOI to C128. ; NOTE: one intermittent problem left - EOI timing ; to ST10C??? ; (Rj) (g) Per Dave Siracusa @ CBM Ts = 60 uS, Tv = 80uS ; ; V3.3 next! ; ; ; ; ; VR EQU 'V' ;V FOR VERSION VRN EQU '3' ;VERSION NUMBER OF DOS MAXTRK EQU 154 ;MAX TRACK NUMBER (1/2 FISACAL NUMBER) WBUF EQU 4000H ;DRIVE BUFFER START ADDR BRSEC EQU 02H ;BAM START SECTOR BLCYL EQU 34 ;BAM LOW CYLINDER NUMBER BHCYL EQU 00 ;BAM HIGH CYLINDER NUMBER BHEAD EQU 0 ;BAM HEAD NUMBER BCOUNT EQU 21 ;NUMBER OF SECTORS FOR BAM BRAM EQU 8B00H ;BAM RAM START ADDR BTCOUNT EQU 34 ;NUMBER OF BYTES PER TRACK IN BAM DMASK EQU 1AH ;INTERRUPT MASK BACKUP OFF EMASK EQU 18H ;INTERRUPT MASK BACKUP ON SIM EQU 30H ; SIM 8085 instruction. RIM EQU 20H ; RIM 8085 instruction. ; ; ORG 0000h JMP START ; BUNEW DB 'N0:BACKUP,01' ; BUOPEN DB '0:BACKUP' ; HDIR DB '$0' ; TYPLST0 DB 44H,53H,50H,55H,4CH ; MODLST DB 82,87,65,77 ; ORG 002CH ;BDRQ INTERUPT FROM WDC JMP RESET ; ORG 0034H ;BACKUP JMP HBACKUP ; ORG 003CH ;INRQ FROM WDC JMP JDONE ;SET JOB DONE ; ; START LXI SP,60F0H ; CLEAR LXI H,8000H ; 8000 -> H,L Clear 8000 - 82FF CLLOOP XRA A ; 0 -> A MOV M,A INX H MOV A,H ANI 83H JNZ CLLOOP JMP CLEAR1 ; ORG 0065H ; re-sync the system CLEAR1 MVI A,0C0H ;TURN READY IND OFF DB 30H MVI A,EMASK DB 30H ;SIM:SET INTERRUPT MASKS S0 MVI A,0FH ;SET PAR PORTS TO OUTPUT OUT 60H MVI A,3FH ;SET FIFO TO 256 BLOCK SERIAL DATA CLK HIGH OUT 63H MVI A,3EH OUT 63H LDA 5007H ;WAIT TILL DRIVE READY ANI 0FEH ;MASK ERROR BIT CPI 50H JNZ S0 MVI A,6FH ;SETS REN AND IFC ACTIVE OUT 62H MVI B,0FFH ;INIT IEEE DEVICES S01 MVI A,0FFH S02 DCR A JNZ S02 DCR B JNZ S01 MVI A,07FH ;SET IEEE CONTROL AND DATA STA IEEECNT OUT 62H MVI A,0FFH OUT 61H EI MVI A,0FFH STA 5001H ;SET WDC TO NO REDUCE WRITE CURRENT STA LINUSE END