Loading REVAS From Cassette Thå  standarä  REVAÓ  cassettå ió  recordeä  iî  straighô Tarbelì  format®  Iô startó witè á 2µ seconä synã streaí thaô yoõ caî uså tï adjusô youò interface® Followinç thå synã streaí ió 1µ secondó oæ carrier¬  anä theî thå firsô loaä module® Thå cassettå containó ³ loaä modules» thå firsô modulå ió 1400È byteó lonç anä ió nameä REVAS®  Iæ yoõ dï noô havå thå CPÍ system¬  thió ió  thå onlù  modulå oæ interesô tï you®  Thå seconä modulå ió 400È byteó long¬  anä  ió nameä REVAS.COM®  Thå thirä modulå ió 1400È  byteó lonç anä ió nameä REVAS.LOD. REVAÓ (thå firsô module© maù bå loadeä anywherå yoõ  wisè iî  memorù  anä executeä bù jumpinç tï thå loaä  address®  Durinç firsô  execution¬  thå  relocatinç  codå  ió  destroyeä  anä  thå resultinç copù oæ REVAÓ ió nï longeò relocatable®  Thus¬  tï makå I/Ï patcheó tï thå jumð vectors¬  thå modificationó musô bå  madå tï  thå copù immediatelù afteò loading®  Thå modifieä copù caî bå saveä  (oî tape¬  foò example¬  oò oî disc)»  thå  relocatabilitù featurå wilì stilì bå valiä iæ yoõ havå donå nï morå thaî  changå thå  argumentó oæ thå I/Ï jumð vector®  Oncå executed¬  REVAÓ  ió exactlù 1000È byteó long. REVAS.COÍ  anä REVAS.LOÄ shoulä bå loadeä intï memorù onå aô  á timå anä saveä froí locatioî 100È (thå CPÍ tpa©  usinç  CPÍ commands® Morå detailó arå giveî iî thå appendeä REVAS/CPÍ guide. Beforå  loadinç  REVAS¬   inserô  thå  cassettå  iî  youò recordeò  witè  thå  interfacå disconnecteä sï yoõ caî  heaò  thå data®  Plaù thå tapå froí thå beginning® Thå firsô sounä yoõ heaò wilì bå thaô oæ thå synã stream¬  theî thå carrieò tone® Notå thå placeó  wherå thå steadù tonå oæ thå carrieò ió replaceä  bù  thå 'noise§ sounä oæ thå recordeä data®  Thå programó arå recordeä iî thå ordeò listeä above¬ witè abouô 1µ secondó betweeî copies® No÷ positioî  thå  tapå  á fe÷ secondó aheaä oæ thå  copù  yoõ  want¬ reconnecô  thå  Tarbelì  interface¬  anä copù  thå  prograí  intï memory. 1 REVAS IMPLEMENTATION I/O Interface Description REVAÓ  ió  designeä tï supporô onå logicaì  inpuô  devicå (thå console© anä ³ logicaì outpuô deviceó (console¬  punch¬  anä printer). Thå  physicaì  deviceó  referenceä bù thå  logicaì  nameó (console¬  punch¬  anä  printer©  arå determineä bù  youò  driveò routineó  anä thå jumð vectoró iî REVAÓ thaô poinô tï  them®  Yoõ could¬ foò example¬ havå thå puncè actuallù writå oî á disã file. Alì I/Ï transactionó takå placå througè thå jumð  vectoró locateä  neaò thå beginninç oæ thå REVAÓ program®  Theså  vectoró arå showî iî thå listinç below®  Yoõ musô verifù thaô theså jumpó poinô  tï thå propeò driveò routineó iî youò system®  Iæ yoõ  arå usinç  á monitoò froí Technicaì Desigî Labó anä iô ió locateä  aô 0F000H¬  theî nï changeó wilì bå necessary®  Otherwise¬  yoõ musô changå  thå jumð argumentó sï thaô theù poinô tï youò owî  driveò routines. Thå  driveò routineó musô observå thå followinç  registeò usagå conventions:       Á bytå tï bå outpuô ió transmitteä iî thå 'C§      registeò  anä wilì bå iî thå 'C§ anä 'A§ registeró      oî  returî froí thå outpuô driver®  Aî inpuô  bytå      (froí  thå console© ió expecteä tï bå iî  thå  'A§      register®  Thå contenô oæ alì otheò registeró musô      bå returneä unchangeä durinç aî I/Ï operation. 2 REVAS IMPLEMENTATION REVAS Entry & I/O Vector ADDR CODE LABEL OPR OPA COMMENTS 0020 31 XXXX REVAS: LXI SP,STACK ;LOCATE STACK ;ADDR is the address relative to the load ;address BEFORE execution. During execution, ;all of this code is moved down 20H bytes, ;so that the instruction labeled REVAS is ;located at relative address 0000. ;XXXX depends on Version number of REVAS 0023 C3 XXXX JMP START ;GO TO WORK 0026 C3 12F0 CSTS: JMP 0F012H ;CONSOLE STATUS ;RETURNS WITH 0FFH IN ACCUMULATOR IF THERE IS ;CONSOLE INPUT WAITING, 00 IF NOT. 0029 C3 03F0 CNSLIN: JMP 0F003H ;CONSOLE INPUT 002C C3 09F0 CSLOUT: JMP 0F009H ;CONSOLE OUTPUT 002F C3 0FF0 LPOUT: JMP 0F00FH ;PRINTER OUTPUT 0032 C3 0CF0 POUT: JMP 0F00CH ;PUNCH OUTPUT 0035 C3 1EF0 TRAP: JMP 0F01EH ;RETURN TO MONITOR ;RETURN FROM THE MONITOR WITH ALL REGISTERS ;(INCLUDING THE STACK PTR AND THE PC) ;RESTORED TO THEIR STATES AT THE TIME OF THE ;JUMP TO TRAP WILL PERMIT CONTINUED EXECUTION ;OF REVAS WHERE IT LEFT OFF. IF YOUR MONITOR ;ROUTINES DO NOT INCLUDE THIS FACILITY, THEN ;RETURN SHOULD BE THROUGH A JUMP TO REVAS ;(I.E. JUMP TO RELATIVE LOCATION 0000) 3 REVAS IMPLEMENTATION Symbol Table Pointers after execution REL ADDR CONTENT DESCRIPTION 0FF5 TFLAG: 0=EMPTY TABLE; 1=NOT EMPTY 0FF6 A1: ADDR OF FIRST ENTRY OF INDEX TABLE 0FF8 A3: ADDR OF LAST ENTRY OF INDEX TABLE 0FFA A4: ADDR OF FIRST ENTRY IN LABEL TABLE 0FFC A2: POINTER TO NEXT AVAILABLE LOCATION FOR LABEL ENTRY (RELATIVE TO FIRST ENTRY) 0FFE A5: POINTER TO LAST LOCATION IN THE LABEL TABLE RELATIVE TO THE FIRST ENTRY 1000 DEFAULT LOCATION OF INDEX TABLE (THIS ADDR WOULD BE IN A1: ABOVE) Patch Locations after execution REL ADDR CODE REMARKS 0850 3B Comment Field Delimiter 0908 AE Right Justify Label Field EE=Left Justify Lbl Field 091C 3A Label Terminator 0EA1 2E 42 59 54 C5 '.BYTE' Pseudo-Op For Tables 0EA6 2E 45 4E C4 '.END' Pseudo-Op 0EAA 0D 0A 00 80 00 CRLF For List Device 0EAF 0D 0A 00 80 00 CRLF For Other Devices 0ECE 06 86 Lockout bytes, ^F^F (To change an ASCII string such as this to some other string such as 'DB', observe the following two rules: 1. You must use the same number of characters, filling out with blanks if necessary. 2. The last byte in the string must have bit 7 set. I.e., the parity bit must be equal to one.) 0037 38 LC: Line Counter 0038 5 TM: Top Margin 0039 5 BM: Bottom Margin 003A 38 LP: Text Lines/Page Immediate command characters 0445 52 R=RET to Command Mode 0187 53 S=Suspend Disassembly 4 REVAS IMPLEMENTATION Line Format Modification Thå  linå  buffeò  ió 6° byteó lonç anä  ió  divideä  intï  ¶ fields®  Thå  lengtè oæ eacè fielä ió specifieä iî á formaô  lisô startinç  aô  0018H®  Iô containó · words¬  eacè oæ whicè ió  thå absolutå addresó oæ thå starô oæ á field® Thå fielä startinç witè thå seventè addresó ió noô used® Thå firsô addresó iî thå lisô ió thå starô oæ thå linå buffeò afteò execution. Format List REL HEX SYMBOL FIELD FIELD DESCRIPTION ADDR WORD 0018 D40E LB 1 address field 001A D90E LB+5 2 object code 001C E50E LB+17 3 label field 001E ED0E LB+25 4 operator field 0020 F30E LB+31 5 operand field 0022 080F LB+52 6 comment field 0024 0D0F LB+57 defines end of field 6 Page Format Control Pagå  formaô foò thå lisô devicå outpuô ió controlleä  bù TM¬ LP¬ anä BM® TÍ specifieó thå numbeò oæ blanë lineó aô thå toð oæ thå page¬  LÐ specifieó thå numbeò oæ texô lineó peò page¬ anä BÍ specifieó thå numbeò oæ blanë lineó aô thå bottoí oæ thå page® Totaì pagå lengtè ió thuó thå suí oæ theså threå  constants®  Yoõ caî changå TÍ oò BÍ tï anù 8_biô value¬ includinç zero® LÐ maù bå assigneä anù 8_biô valuå excepô zero®  Theså assignmentó arå madå bù modifyinç thå appropriatå patcè locations. Nulls After CRLF Thå  CRLF-Nulló sequencå ió separatelù specifieä foò  thå Lisô  Devicå  anä  foò  alì  otheò  outpuô  devices®  (Seå  Patcè Locations© Aó supplied¬  REVAÓ outputó ² nulló afteò á linå feed® Yoõ  caî changå thió tï froí zerï tï threå nulló bù changinç  thå bytå iî thå sequencå foò whicè biô · ió set®  Foò zerï nulls¬ thå sequencå musô bå changeä tï 0D_8A_00_00_00» foò ³ nulló changå tï 0D_0A_00_00_80. 5 REVAS IMPLEMENTATION REVAS COMMAND SUMMARY A Assign location of symbol tables B Build internal tables C Control output of comment field D Disassemble using tables if present E Insert '.END' pseudo-op into output stream F Find all instructions that use the given address H Halt at top of list page ^H Don't halt at top of list page G Go to a user routine and execute it I Initialize tables to empty state K Kill table entries L Label assignment for any object program location ^L (ASCII Form Feed) advances to top of page M Mark a location as instruction or table O Output device assignment P Print the symbol table S Symbol assignment for instructions T Symbol assignment for table locations X Produce a cross reference listing Immediate Action Commands ^C Trap to monitor (and return from TDL Monitor) R return to command mode S stop disassembly, wait for keybd entry 6