ASMB,R,B,L,T,C HED *** ASYNCHRONOUS CARD READER DRIVER ACR01 *** NAM ACR01,6 ENT ACR01,H7260 EXT .ENTR,EXEC * * * LOGICAL DRIVER FOR THE 7260A CARD READER *** * * LU NOP H7260 NOP LINE NOP IXT NOP * * INITIALIZATION SECTION *** * * ACR01 NOP JSB .ENTR GET PARAMETERS DEF LU FROM CALLING PROGRAM LDB IXT SET EXTENSION ADDRESS STB X1 FOR EXEC ADB P04$ *EQT22 LDA READ READ SECTION ENTRY POINT STA B,I CONFIGURE EQT 22 INB *EQT23 LDA WRITE WRITE SECTION ENTRY POINT STA B,I CONFIGURE EQT23 INB *EQT24 LDA CONTL CONTROL SECTION ENTRY POINT STA B,I CONFIGURE EQT24 LDA IXT SET UP EQT ADDRESSES JSB SETQI OF EXTENSION EQT LDA IQT18,I GET EQT EXTENSION LENGTH LDB D28 PRIME FOR TRACE TABLE CPA D31 TRACE SPECIFIED ? CLB NO - CLEAR POINTER STB IQT48,I SET UP INDEX LDA LINE,I GET THE PLEX DATA RAR,RAR ROTATE RAR,SLA IS IT RIGHT SPEED ? RSS YES - GO AHEAD JMP BAD NO - REJECT AND P17$ MASK OUT JUNK STA B SAVE THE BAUD RATE BLF,BLF ROTATE IOR B SET UP INPUT RATE STA IQT21,I = OUTPUT RATE BLF,BLF RESET BAUD RATE CPB P01$ IS IT 110 BPS ? CLA,INA,RSS YES - SET TWO STOP BITS CLA NO - ONLY ONE RAL,RAL ROTATE A INA EVEN - SET A REG. RAL,ALF ROTATE AGAIN IOR P07$ SET UP CHARACTER LENGTH ALF,RAR PRE-ROTATE OF 3 LDB LINE,I GET LINE PLEX SLB WITH ECHO ? JMP BAD YES - REJECT RRR 3 NO - SET UP 15/14 STA IQT19,I SAVE FINAL WORD LDB P20.$ SET UP STB IQT41,I "HOT 7260". LDA LU,I GET LOGICAL UNIT AND P77$ AND CONFIGURE ADA P100$ EXEC CALL TO STA LU PHYSICAL DRIVER LDA SPEC PASS ADDRESS OF STA IQT25,I SPECIAL CHAR. ADDRESS LDA N80$ INITIALIZE A STA IQT45,I COLUMN REGISTER * JSB EXEC CALL EXEC DEF *+5 TO CALL THE DEF P03$ PHYSICAL DRIVER DEF LU LOGICAL UNIT DEF P00$ DUMMY X1 DEF * EXTENSION ADDR. AND P377$ PRESERVE STATUS JMP ACR01,I RETURN TO THE USER * BAD LDA P01$ A=1 FOR JMP ACR01,I REJECTING SKP * * CONTROL REQUESTS PROCESSING *** * * CONTL DEF *+1 CONTROL SECTION ADDRESS NOP JSB SETQ SET UP EQT'S ADDRESSES CLA JSB LOG LOG TO TRACE TABLE JSB CLEAR CLEAR FLAGS LDA EQT9,I GET REQUEST CODE AND P7700 MASK OUT JUNK CPA P200$ IS IT LINE OPEN ? JMP OPEN YES - CPA P4000 IS IT SELECT HOPPER ? JMP CNT40 YES CPA P4100 IS IT BELL ? JMP CNT41 YES CPA P4200 IS IT PASS JMP LNGTH # OF COLUMNS ? CPA P4300 STOP COMMAND ? JMP STOP YES CPA P4400 IS IT FOR "HOT 7260" ? JMP TCS1 YES CPA P4500 IS IT CLEAR "HOT" ? JMP TCS2 YES CPA P4600 IS IT MID CARD TERMINATION ? JMP MID YES - CNRT3 CLA NO - OTHER CNRT1 ISZ CONTL+1 AND EXECUTE JMP CONTL+1,I CONTINUATION * HOPPER SELECT *** CNT40 LDA P200$ FLAG=BIT 7 OF SWRT STA EQT39,I EQT 39 LDA BWRT$ WRITE CODE FOR PHY. IOR P12$ INSERT LF JMP CNRT1 AND START A WRITE OP. * BELL *** CNT41 LDA P04$ FLAG=BIT 2 JMP SWRT AND START WRITING BAD1 ISZ EQT4,I STATUS=ILL. REQUEST JMP CONTL+1,I AND COMPLETION * NUMBER OF COLUMNS *** LNGTH LDA EQT10,I GET # OF ADA N97$ COLUMNS SSA,RSS IF MORE THAN JMP BAD1 96 - REJECT LDA EQT10,I FETCH AGAIN CMA,INA IF ZERO OR SSA,RSS NEGATIVE JMP BAD1 REJECT STA EQT45,I SET UP VALUE JMP CONTL+1,I COMPLETE * STOP COMMAND *** STOP LDA P400$ SET FLAG BIT JMP SWRT AND START A WRITE * TCS PROCESSING *** TCS1 LDA EQT41,I SET FLAG IOR P20.$ IN EQT41 JMP *+3 FOR "HOT" TCS2 LDA EQT41,I CLEAR FLAG AND P1757 FOR "HOT" STA EQT41,I IN EQT41,I JMP CONTL+1,I COMPLETION. * MID CARD TERMINATION *** MID LDB EQT10,I GET PARAMETERS LDA EQT41,I GET FLAG WORD RAL,CLE,RAL ROTATE RIGHT TWO SZB CHECK PARAM. CCE SET FLAG ERA,RAR ROTATE LEFT TWO STA EQT41,I STORE IT JMP CONTL+1,I COMPLETION * LINE OPEN PROCESSING *** OPEN LDA EQT10,I GET LINE OPEN PARAM. RAL,CLE,ERA CLEAR AUTO-SPEED OPTION STA EQT10,I STORE IT BACK JMP CNRT3 CONTINUATION SKP * * WRITE REQUESTS PROCESSING *** * * WRITE DEF *+1 WRITE SECTION ADDRESS NOP JSB SETQ SET UP EQT'S ADDRESSES LDA P02$ A=2 FOR WRITING JSB LOG LOG TO TRACE TABLE SSB,RSS IS IT INITIALIZED ? JMP WRIT1 NO - GO AHEAD CLB,INB YES - SET ILLEGAL JSB STATS REQUEST BELL1 CLA CLEAR STA EQT39,I FLAGS JMP WRITE+1,I AND COMPLETE * * WRIT1 JSB BITCK CHECK STATUS JMP WRIT2 - TIME OUT JMP WRIT3 - LINE ERROR NOP - DATA ERROR JSB TMCK CLEAR TIME OUT LDA EQT39,I GET FLAG WORD WRIT4 CLB CLEAR A COUNTER RAR,SLA COMMAND SEND ? JMP X.ON YES - GO SEND X-ON RAR,SLA AND SCAN TO JMP FOUND FIND THE INB COMMAND JMP *-3 LOOP BACK FOUND ADB TADD COMMAND TABLE LDA EQT39,I SET UP IOR P02$ FLAG IN STA EQT39,I EQT 39 LDA B,I GET COMMAND CNRT2 LDB TIME NO TIME OUT CHANGE ISZ WRITE+1 AND KEEP ON JMP WRITE+1,I OUTPUTTING * X.ON CCE,SSA OUTPUT X-ON ? JMP CHECK NO - ALREADY DONE ELA YES - SET FLAG STA EQT39,I IN EQT 39 LDA P21$ LOAD X-ON JMP CNRT2 AND CONTINUATION * CHECK RAR,CLE,ELA CLEAR BOTH CLE,ELA FLAGS STA EQT39,I IN EQT39 AND P434$ IS IT RETRANSMIT SZA,RSS DEMAND OR REJECT ? JMP BACK YES - RETURN TO READ SECTION AND P404$ NO - MASK OUT SZA IS IT BELL OR STOP ? JMP BELL1 YES - COMPLETE LDB EQT40,I NO - IMAGE OFF / ON LDA P100$ RBR,SLB GET USER'S REQUEST LDA P40$ AND SET UP RE X-MIT STA EQT39,I OR DEMAND . JMP WRIT4 OUTPUT THE COMMAND BACK LDA BREAD READ CODE JMP CNRT2 AND START READING * * WRIT2 LDB P03$ SET THREE JSB STATS AS STATUS. JSB TRANS SET TRANSMISSION LOG JMP WRITE+1,I COMPLETE * * WRIT3 JSB ERRL SET 2 SECONDS CLA ISZ WRITE+1 RETURN TO JMP WRITE+1,I PHYSICAL DRIVER * * TADD DEF *+1 P07$ OCT 7 BELL OCT 24 IMAGE OFF P22$ OCT 22 IMAGE ON P10$ OCT 10 RETRANSMIT OCT 31 DEMAND P13$ OCT 13 REJECT OCT 11 STOP * SPEC DEF *+1 DEC -1 CR OCT 15 CARRIAGE RETURN * TIME NOP SKP * * * CLEAR NOP ENTRY POINT CLB CLEAR STB EQT14,I TRANSMISSION LOG LDA EQT41,I CLEAR FIRST FLAG AND P760. AND # OF STA EQT41,I RE X-MIT RAL SET UP A MID STA EQT47,I CARD TERMINATION FLAG LDA EQT45,I INITIALIZE STA EQT43,I A COUNTER. STB EQT39,I FLAGS WORD STB TIME TIME OUT VALUE STB EQT46,I CLEAR WORD JSB STATS CLEAR STATUS JMP CLEAR,I RETURN * * STATS NOP ENTRY POINT LDA EQT4,I GET STATUS AND P1774 KEEP LEFT BYTE IOR B MERGE STATUS STA EQT4,I STORE IT JMP STATS,I RETURN * * TMCK NOP ENTRY POINT LDA EQT39,I GET FLAG WORD RAL,CLE,RAL ROTATE CLB CLEAR TIME-OUT SSA TIME-OUT IN PROGRESS ? INB YES - KILL IT RAL,CLE,ERA CLEAR BIT IN RAR,RAR EQT39 STA EQT39,I AND STB TIME RETURN JMP TMCK,I * * ERRL NOP LDB N20$ SET 2 SECONDS LDA EQT39,I AS TIME OUT AND P2000 IF NO TIME SZA WAS NOT ALREADY CLB RUNNING STB TIME SAVE IT LDA EQT39,I SET UP IOR P2000 FLAG IN STA EQT39,I EQT39 TO JMP ERRL,I TWO SECONDS * * TRANS NOP LDA EQT14,I GET TRANSMISSION LDB EQT11,I CHECK THE SSB MODE OF REQUEST JMP TRANS,I CHARACTER ? INA WORD - CONVERT ARS IN WORD STA EQT14,I STORE AND JMP TRANS,I RETURN * * BITCK NOP LDB N03$ CHECK RAL,SLA BIT OF JMP BITCK,I A REGISTER ISZ BITCK AND INB,SZB RETURN JMP *-4 DEPEND ON JMP BITCK,I BIT 15-14-13 SKP * * * READ REQUESTS PROCESSING *** * * READ DEF *+1 READ SECTION ENTRY POINT NOP JSB SETQ SET UP EQT ADDRESSES CLA,INA A=1 FOR READING JSB LOG LOG TO TRACE TABLE SSB,RSS INITIATE ? JMP READ1 NO * * INITIALIZATION SECTION OF READ REQUEST *** * JSB CLEAR YES - CLEAR FLAGS LDA N10$ INITIATE TO -10 STA EQT13,I A COUNTER OF RETRY LDB EQT9,I GET REQUEST CODE BLF,CLE,RBL ROTATE AND STUCK IN ELB,RBL BIT 10 INTO BIT 8 ELB,RBL THEN, CHECK IF CLE,SLB PACKED BINARY REQUEST CCE YES - SET A FLAG RBR,SLB,RBL CHECK IF JMP RXMIT RETRANSMIT STB EQT44,I SAVE REQUEST OK STB EQT40,I TWICE LDA P20$ SET IMAGE ON SSB BINARY ? JMP BINRY YES - GO AHEAD SEZ,RSS NO - ASCII ? JMP ASCI1 YES BAD2 CLB,INB NO - ILLEGAL REQUEST JSB STATS UPDATE STATUS JMP READ+1,I COMPLETION * RETRANSMIT REQUEST *** RXMIT LDA EQT44,I FIRST OF ALL ALF,ALF CHECK IF A RAR,SLA PREVIOUS READ RSS HAS BEEN MADE JMP BAD2 NO - REJECT LDA EQT44,I GET PREVIOUS REQUEST SSA ASCII ? JMP BINR NO - WAS BINARY SSB,RSS NEW ASCII TOO ? JMP OK YES - NOTHING SPECIAL LDA EQT47,I NO - MID CARD SSA TERMINATION ? JMP OK NO - NOTHING SPECIAL LDA P04$ YES - BINARY AFTER IOR B ASCII WITH MID CARD TERM. LDB A JMP OK SET SPECIAL FLAG BINR SSB NEW BINARY TOO ? JMP OK YES - NOTHING SPECIAL LDA P10$ NO - ASCII AFTER IOR B IMAGE - SET LDB A JMP OK SPECIAL FLAG * ASCII REQUESTS *** ASCI1 LDB EQT11,I CHECK THE LENGTH SZB,RSS IF ZERO JMP READ+1,I COMPLETION RIGHT AWAY LDA P10$ SET IMAGE OFF SAVE3 STA EQT39,I IN EQT 39 LDA BWRT$ WRITE CODE IOR P12$ INSERT LF CONTR LDB TIME TIME OUT PURPOSE ISZ READ+1 AND ASK A JMP READ+1,I CONTINUATION * IMAGE REQUESTS *** BINRY LDB EQT11,I IS IT SSB IN WORD ? JMP BAD2 NO - REJECT JMP SAVE3 YES - OK * * CONTINUATION SECTION OF READ REQUESTS *** * READ1 JSB BITCK CHECK STATUS OF THE LINE JMP READ2 - TIME OUT JMP READ3 - LINE ERROR JMP READ4 - DATA ERROR JSB TMCK STOP TIME-OUT START LDA EQT39,I CHECK IF SSA CR WAS JMP CMPL1 EXPECTED LDA SAVA NO - GET DATA AND P177$ MASK OUT JUNK STA SAVA SAVE IT LDB EQT41,I GET FIRST DATA FLAG SSB CHECK IT JMP DATA2 NOT THE FIRST * FIRST INTERRUPT = STATUS *** CLB CLEAR A FLAG CPA P37$ IS IT NOT READY ? LDB P02$ YES - NOT READY STATUS CPA P07$ IS IT HOPPER BAD JMP TCS3 YES - CHECK "HOT" CPA P13$ IS IT REJECT BAD ? LDB P06$ YES . REJECT FAIL STATUS CPA P14$ IS IT REJECT SUCCESFUL ? JMP CR1 YES - GO WAIT THE CR CPA P22$ IS IT READY ? JMP TCS3 YES - CHECK "HOT" CPA P11$ IS IT PICK FAIL ? JMP FAIL1 YES CCE,SZB,RSS IS IT FIRST DATA ? JMP DATA1 YES JSB STATS NO - WRONG STATUS CR1 LDA EQT39,I SET BIT 15 CCE TO ONE RAL,ERA TO WAIT STA EQT39,I THE CR JMP READ6 CONTINUATION RETURN TCS3 LDA EQT41,I CHECK IF AND P20.$ " HOT " PROCESSING. SZA,RSS JMP NOTCS NO - GO SET STATUS LDA EQT40,I YES - SET UP IOR P2000 FLAG IN