/SERIAL-BASED DISK SYSTEM TEST /KYLE OWEN - 1/28/2014 VERS="C&77 BASER=6400 BASET=6410 /BASER=6030 /BASET=6040 SKCF=BASER SKSF=BASER+1 SKCC=BASER+2 SKRS=BASER+4 SKIE=BASER+5 SKRB=BASER+6 STFL=BASET STSF=BASET+1 STCF=BASET+2 STPC=BASET+4 STSK=BASET+5 STLS=BASET+6 *0 TEST, JMS I ENTRY 2010 /READ 0020 PAGES IN FIELD 1 0000 /FROM 0000 RBLK, 0000 /STARTING BLOCK 0000 HLT /ERROR EXIT CLA CLL OSR RAR SZL HLT JMS I ENTRY 2010 /READ 0020 PAGES IN FIELD 1 4000 /FROM 4000 RBLK2, 0010 /STARTING BLOCK 0010 HLT /ERROR EXIT CLA CLL OSR RTR SZL HLT JMS I ENTRY 6010 /WRITE 0020 PAGES IN FIELD 1 4000 /FROM 4000 WBLK, 0000 /STARTING BLOCK 0000 HLT /ERROR EXIT CLA CLL OSR RTR RAR SZL HLT JMS I ENTRY 6010 /WRITE 0020 PAGES IN FIELD 1 0000 /FROM 0000 WBLK2, 0010 /STARTING BLOCK 0010 HLT /ERROR EXIT CLA CLL OSR RTR RTR SZL HLT JMP TEST INCR, 0020 ENTRY, ENTRY2 *7600 ZBLOCK 7 ENTRY1, VERS CLA CLL /CLEAR LINK FOR FIRST PLATTER SETUP, SKCF /CLEAR RECEIVE FLAG TAD WKUP /ADD WAKEUP CHARACTER JMS SENDC /SEND WAKEUP CHARACTER CLA RDF /GET CURRENT FIELD TAD SCDI /ADD CDI DCA SFIELD /DEPOSIT MODIFIED CIF /SKSF /WAIT FOR RESPONSE /JMP .-1 /SKCF /CLEAR FLAG TAD I ENTRY1 /GET FUNCTION JMS SNDNUM /TELL SERVER FUNCTION ISZ ENTRY1 /LOOK AT BUFFER ADDRESS TAD I ENTRY1 /GET BUFFER ADDRESS JMS SNDNUM /TELL SERVER BUFFER ADDRESS TAD I ENTRY1 /GET BUFFER ADDRESS DCA SLOC /STORE BUFFER ADDRESS ISZ ENTRY1 /LOOK AT STARTING BLOCK NUMBER TAD I ENTRY1 /GET STARTING BLOCK NUMBER JMS SNDNUM /TELL SERVER STARTING BLOCK NUMBER ISZ ENTRY1 /LOOK AT ERROR RETURN JMS GETNUM /RECEIVE CDF INSTRUCTION DCA CDFSTO JMS GETNUM /RECEIVE NEGATIVE WORD COUNT DCA WORDCT GETACK, JMS GETNUM /4000=READ, 4001=WRITE, 0000=DONE, 2000=ERROR SNA /WAS IT ZERO? JMP EXIT /YES, EXIT CLL RAL /NO, IS HIGH BIT SET? SNL JMP ERROR /NO, ERROR! SZA CLA /YES, READ OR WRITE? JMP TXPG /TIME TO WRITE RXLP, JMS GETNUM /GET WORD CDFSTO, HLT /MODIFIED TO CDF DCA I SLOC /STORE CONTENTS CDF 0 ISZ SLOC /NEXT LOCATION NOP ISZ WORDCT /INCREMENT WORD COUNT...DONE? JMP RXLP /NO, KEEP LOOPING JMP GETACK /ANY OTHER REQUESTS? ENTRY2, VERS /SECOND ENTRY POINT CLA TAD ENTRY2 /GET ARGUMENT ADDRESS DCA ENTRY1 /STORE IT IN COMMON PLACE CLA CLL IAC /SET AC = 1 FOR 2ND PLATTER JMP SETUP /CONTINUE WITH SETUP SENDC, 0 /SEND CHARACTER IN AC STLS STSF JMP .-1 JMP I SENDC SNDNUM, 0 /SEND NUMBER AS TWO CONSECUTIVE CHARACTERS JMS SENDC /SEND BOTTOM 8 BITS OF WORD BSW /SEND TOP 6 BITS OF WORD PLUS SOME, LET SERVER HANDLE IT JMS SENDC CLA JMP I SNDNUM GETNUM, 0 SKCC /CLEAR AC AND FLAG SKSF /SKIP IF FLAG SET JMP .-1 SKRB /READ BUFFER BSW /SWAP BYTES SKSF /SKIP IF FLAG SET JMP .-1 SKRS /OR BUFFER WITH AC JMP I GETNUM TXPG, TAD CDFSTO /GET DATA FIELD DCA TXCDF /MODIFY CDF FOR TRANSFER TXCDF, HLT /MODIFIED TO CDF TAD I SLOC /GET WORD CDF 0 /BACK TO FIELD 0 ISZ SLOC /NEXT LOCATION NOP JMS SNDNUM /SEND IT ISZ WORDCT /INCREMENT WORD COUNT...DONE? JMP TXCDF /NO, KEEP LOOPING JMP GETACK /ANY MORE REQUESTS? EXIT, ISZ ENTRY1 /NORMAL EXIT SFIELD, HLT /MODIFIED TO CDI JMP I ENTRY1 /EXIT WITH FATAL ERROR ERROR, CLL CML RAR /ROTATE ERROR CODE AND SET NEGATIVE BIT JMP SFIELD /ERROR EXIT SCDI, CDI 0 SLOC, 0 WORDCT, 0 WKUP, 101 ZBLOCK 7743-. $