* CS/80 bootrom transcribed from 12992J listing * SR bits 0-2 = unit * SR 6-11 normally set to select code but not necessary (I think..) ORG 77700B IBI EQU 21B START LIA 1 GET SWITCH REGISTER AND XXX AND OUT UNIT IOR UNIT PUT IN UNIT COMMAND STA UNIT SAVE FOR BUS CLE * * WAIT FOR DRIVE 0 READY * JSB BTCTL SEND UDC,PPOL LIA IBI READ INPUT REGISTER * ASR 7 SHIFT DRIVE RESPONSE TO LSB OCT 101027 assembler doesn't support ASR 7 * SLA,RSS DID DRIVE 0 RESPOND OCT 002011 avoid bugs JMP *-3 NO GO WAIT * CLC 0,C SHUT DOWN EVERYTHING ELSE JSB BTCTL SEND TALK,READ,BUS HOLDER CCE JSB BTCTL TELL CARD TO LISTEN * * PERFORM DMA TRANSFER * LDA DMACW LOAD DMA CONTROL WORD OTA 6 OUTPUT TO DCPC CLC 2 READY DCPC LDA ADDR1 LOAD DMA BUFFER ADDRESS OTA 2 OUTPUT TO DCPC LDA DMAWC LOAD DMA WORD COUNT STC 2 READY DCPC OTA 2 OUTPUT TO DCPC STC 6,C START DCPC TEST SFC 6 SKIP IF DMA NOT DONE JSB ADDR2,I SUCCESSFUL END OF TRANSFER SFS IBI SKIP IF DISC ABORTED TRANSFER JMP TEST WAIT...WAIT...WAIT ADDR1 HLT 11B ERROR HALT (also load address 2011) * * PROGRAM CONSTANT TABLE * UNCLR OCT 677 UNLISTEN OCT 737 UNTALK DMAWC OCT 176624 UNIVERSAL CLEAR,LBO/DMA WORD COUNT OCT 624 SECOND UNIVERSAL CLEAR LIST OCT 440 LISTEN BUS ADDRESS 0 CMSEC OCT 745 COMMAND MESSAGE UNIT OCT 40 UNIT READ OCT 1000 READ UNLST OCT 677 UNLISTEN TALK OCT 500 DEVICE TALK EXEC OCT 100556 EXECUTION MESSAGE ADDR2 OCT 102055 BOOT EXTENSION STARTING ADDRESS CTLP OCT 4003 INT=LBO,T,CIC XXX OCT 47 PPE,L,T,CIC OCT 4003 INT=LBO,T,CIC OCT 413 ATN,P,L,CIC OCT 1015 INT=EOI,P,L,CIC NOP * * * BTCTL NOP CLC IBI,C RESET IBI BM LDA CTLP LOAD CONTROL WORD OTA IBI OUTPUT TO IBI STC IBI RETURN IBI TO DATA MODE ISZ BM INCREMENT CONTROL WORD POINTER SEZ,CME JMP BTCTL,I RETURN LABL LDA UNCLR LOAD DATA WORD ISZ LABL INCREMENT WORD POINTER OTA IBI OUTPUT TO HPIB SSA,RSS SKIP IF LAST WORD JMP LABL GO BACK FOR NEXT WORD SFS IBI SKIP IF LAST WORD SENT TO BUS JMP *-1 WAIT FOR ACCEPTANCE JMP BTCTL+1 DMACW ABS IBI ABS -START END