home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG007.ARK / PILOT.LST < prev    next >
File List  |  1984-04-29  |  138KB  |  2,954 lines

  1.  
  2.  
  3.  
  4. ASM80 :F1:PILOT.SA DEBUG XREF PAGELENGTH(55)
  5.  
  6.  
  7. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE    1
  8.  
  9.  
  10.   LOC  OBJ         SEQ         SOURCE STATEMENT
  11.  
  12.                       1 ;       THIS WORK WAS PREPARED UNDER CONTRACT TO THE LISTER HILL NATIONAL CENTER
  13.                       2 ;       FOR BIOMEDICAL COMMUNICATIONS, NATIONAL LIBRARY OF MEDICINE, BETHESDA,
  14.                       3 ;       MARYLAND BY JOHN A. STARKWEATHER OF THE UNIVERSITY OF CALIFORNIA AT
  15.                       4 ;       SAN FRANCISCO.
  16.                       5 ;
  17.                       6 ;
  18.                       7 ;
  19.                       8 ;       P I L O T    8080    V E R S I O N   1.2
  20.                       9 ;
  21.                      10 ;       9/15/77
  22.                      11 ;
  23.                      12 ;
  24.                      13 ;
  25.   6000               14 ORIGN   EQU     06000H          ;ORIGIN OF PROGRAM.
  26.   62E0               15 PSTRT   EQU     ORIGN+2E0H      ;START OF PILOT INTERPRETER.
  27.   7000               16 PBUFB   EQU     ORIGN+1000H     ;BEGINNING OF PROGRAM BUFFER.
  28.   7FFF               17 PBUFE   EQU     ORIGN+1FFFH     ;END OF PROGRAM BUFFER.
  29.   0048               18 LINE    EQU     72              ;MAX INPUT AT STARTUP.
  30.   FE77               19 VIDEO   EQU     0FE77H          ;EXTERNAL VIDEO DISPLAY ADDR.
  31.   0008               20 MNTR    EQU     0008H           ;EXTERNAL MONITOR ADDRESS
  32.   6100               21 STKPR   EQU     ORIGN+100H      ;START OF STACK
  33.                      22 ;
  34.   00F6               23 PORT    EQU     0F6H    ;MDS CONSOLE INPUT PORT
  35.   00F7               24 STPORT  EQU     0F7H    ;MDS CONSOLE STATUS PORT
  36.   0002               25 RDA     EQU     02H     ;READ DATA AVAILABLE MASK.
  37.   0001               26 TBE     EQU     01H     ;TRANSMIT BUFFER EMPTY MASK.
  38.                      27 ;
  39.   0038               28 INTSRT  EQU     38H     ;MDS INTERRUPT 7 FOR RESTARTING PILOT.
  40.                      29 ;
  41.   0038               30         ORG   INTSRT    ;RESTART PROGRAM BY USE OF INTERRUPT 7.
  42.                      31         ASEG
  43.   0038 C3E062        32         JMP   START      ;ENTRY SETS NORMAL I/O
  44.                      33 ;
  45.                      34         ;LXI   H,CTV      ;ENTRY TO USE VIDEO OUTPUT
  46.                      35         ;SHLD  CO+1       ;  AT STARTUP
  47.                      36         ;SHLD  LO+1
  48.                      37         ;SHLD  PO+1
  49.                      38         ;JMP   RSTRT
  50.                      39 ;CTV:    PUSH  B
  51.                      40         ;MOV   B,C
  52.                      41         ;CALL  VIDEO
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE    2
  60.  
  61.  
  62.   LOC  OBJ         SEQ         SOURCE STATEMENT
  63.  
  64.                      42         ;POP   B
  65.                      43         ;RET
  66.                      44 ;
  67.                      45 ; JUMP TABLE FOR I/O ROUTINES
  68.                      46 ;   ONLY TTY ROUTINES ARE PROVIDED INTERNALLY
  69.                      47 ;
  70.   6100               48         ORG   STKPR
  71.   6100 C3216E        49 CI:     JMP   CHI           ;CHAR INPUT  TO   A REG.
  72.   6103 C3F76D        50 CO:     JMP   CHO           ;CHAR OUTPUT FROM C REG.
  73.   6106 C3216E        51 RI:     JMP   CHI           ;READER INPUT TO  A REG.
  74.   6109 C3F76D        52 LO:     JMP   CHO           ;LIST OUTPUT FROM C REG.
  75.   610C C3F76D        53 PO:     JMP   CHO           ;PUNCH OUTPUT FROM C REG.
  76.   610F C30800        54 EXIT:   JMP   MNTR          ;RETURN TO MONITOR
  77.   6112 C30800        55 EDIT:   JMP   MNTR          ;CALL TO EDITOR
  78.   6115 C32C6C        56 ASCAN:  JMP   BASIC         ;ALTERN INTERPRETER
  79.                      57 ;
  80.                      58 ; DATA AREAS
  81.   6118 0000          59 TOPP:   DW    0             ;TOP OF PROGRAM STORAGE
  82.   611A 0000          60 HLSAV:  DW    0             ;TEMPORARY POINTER (HL)
  83.   611C 0000          61 HLLSAV: DW    0             ;TEMPORARY POINTER (HL)
  84.   611E 0000          62 HL2SAV: DW    0             ;TEMPORARY POINTER (HL)
  85.   6120 0000          63 DESAV:  DW    0             ;TEMPORARY POINTER (DE)
  86.   6122 0000          64 LLSAV:  DW    0             ;LAST LINE POINTER
  87.   6124 0000          65 RETSAV: DW    0             ;ZERO LEVEL OF STACK
  88.   6126 0000          66         DW    0             ;LEVEL 1
  89.   6128 0000          67         DW    0             ;LEVEL 2
  90.   612A 0000          68         DW    0             ;LEVEL 3
  91.   612C 0000          69         DW    0             ;LEVEL 4
  92.   612E 0000          70         DW    0             ;LEVEL 5
  93.   6130 0000          71         DW    0             ;LEVEL 6
  94.   6132 0000          72         DW    0             ;LEVEL 7  (TOP)
  95.   6134 0000          73 APTR:   DW    0             ;A STMT POINTER
  96.   6136 0000          74 EPTR:   DW    0             ;ENTRY POINTER
  97.   6138 0000          75 CPTR:   DW    0             ;CHAR POINTER
  98.   613A 0000          76 IPTR:   DW    0             ;INPUT BUFFER POINTER
  99.   613C 0000          77 MPTR:   DW    0             ;M-STMT POINTER
  100.   613E 0000          78 MEMTP:  DW    0             ;LAST MEMORY LOCATION
  101.   6140 0000          79 OUTADR: DW    0             ;CO,LOPO OUTPUT VECTOR
  102.   6142 0000          80 SCANB:  DW   0            ;SCAN BEGINNING ADDR
  103.   0001               81 CHMAX:  DS    1             ;MAXCHARSACCEPTED
  104.   0001               82 LEVEL:  DS    1          ;CURRENT RTURN LEVEL
  105.   0001               83 LNSKP:  DS    1             ;LINE NUMBER SKIP
  106.   0001               84 MBRCH:  DS    1             ;M-BREAK CHAR
  107.   0001               85 SCNT:   DS    1             ;STRING COUNT
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE    3
  115.  
  116.  
  117.   LOC  OBJ         SEQ         SOURCE STATEMENT
  118.  
  119.   0001               86 TEMP:   DS    1             ;TEMPORARY BINARY VALUE
  120.   0001               87 VARSAV: DS    1             ;VARIABLE SAVED
  121.   0001               88 YNSW:   DS    1             ;YN-SWITCH, 000: NO MATCH
  122.   0051               89 TSAVE:  DS    81            ;T-TEXT AREA
  123.   0051               90 EBUFF:  DS    81            ;ENTRY BUFFER AREA
  124.   0051               91 MSAVE:  DS    81            ;M LIST AREA
  125.   000C               92 LABSAV: DS    12            ;LABEL SAVE AREA
  126.   000B               93 LASTOP: DS    11            ;LAST OP CODE
  127.   0035               94 NVAR:   DS    53            ;NUMERIC VARIABLE STORAGE
  128.   0051               95 WORD:   DS    81            ;WORD AREA
  129.                      96 ;
  130.                      97 ; START AND TERMINATION OF MAIN PROGRAM
  131.                      98 ;   ORG HERE CAN SET BEGINNING OF ROM AREA
  132.                      99 ;
  133.   62E0              100         ORG   PSTRT
  134.   62E0 310061       101 START:  LXI   SP,STKPR       ;INITIALIZE STACK POINTER
  135.   62E3 21FE7F       102         LXI   H,PBUFE-1     ;INITIALIZE APTR
  136.   62E6 223461       103         SHLD  APTR
  137.   62E9 21F762       104         LXI   H,IOJMP       ;SET NORMAL I/O VECTORS
  138.   62EC 110061       105         LXI   D,CI
  139.   62EF 0E18         106         MVI   C,24
  140.   62F1 CDA76C       107         CALL  BLKTFR
  141.   62F4 C30F63       108         JMP   RSTRT
  142.   62F7 C3216E       109 IOJMP:  JMP   CHI           ;COPY OF STD JMP TABLE
  143.   62FA C3F76D       110         JMP   CHO
  144.   62FD C3216E       111         JMP   CHI
  145.   6300 C3F76D       112         JMP   CHO
  146.   6303 C3F76D       113         JMP   CHO
  147.   6306 C30800       114         JMP   MNTR
  148.   6309 C30800       115         JMP   MNTR
  149.   630C C32C6C       116         JMP   BASIC
  150.                     117 ;
  151.   630F 310061       118 RSTRT:  LXI   SP,STKPR       ;INIT STACK ON RESTART
  152.   6312 CD3263       119         CALL  INIT          ;INITIALIZE THE REST
  153.   6315 CD5C63       120         CALL  SCAN          ;SCAN THE BUFFER
  154.   6318 C30F63       121         JMP   RSTRT         ;START OVER
  155.                     122 ;
  156.   631B 30323036     123         DB    '020677',0DH
  157.   631F 3737             
  158.   6321 0D               
  159.                     124 ;
  160.   6322 50494C4F     125         DB    'PILOT-8080, 1.1',0DH
  161.   6326 542D3830         
  162.   632A 38302C20         
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE    4
  170.  
  171.  
  172.   LOC  OBJ         SEQ         SOURCE STATEMENT
  173.  
  174.   632E 312E31           
  175.   6331 0D               
  176.                     126 ;
  177.                     127 ;
  178.                     128 ;
  179.                     129 ; INITIALIZE DATA FOR NEW PROGRAM
  180.                     130 ;
  181.   6332 21C56E       131 INIT:   LXI   H,IBUFF       ;RESET INPUT POINTER
  182.   6335 223A61       132         SHLD  IPTR          ;  TO FRONT OF BUFFER
  183.   6338 224261       133         SHLD  SCANB         ;SET SCAN BEGINNING
  184.   633B 21FF7F       134         LXI   H,PBUFE       ;SET LAST MEMORY LOC
  185.   633E 223E61       135         SHLD  MEMTP
  186.   6341 CD416C       136         CALL  NEWN          ;SET A-POINTER
  187.   6344 CD506C       137         CALL  INITV         ;INITIALIZE VARIABLES
  188.   6347 3601         138         MVI   M,1           ;    SET STOP
  189.   6349 3E48         139         MVI   A,LINE        ;RESET INMAX TO LINE
  190.   634B 324461       140         STA   CHMAX
  191.   634E AF           141         XRA   A             ;ZERO RETURN LEVEL
  192.   634F 324561       142         STA   LEVEL
  193.   6352 324661       143         STA   LNSKP         ;ZERO LN NO. SKIP
  194.   6355 210361       144         LXI   H,CO          ;RESET CONSOLE OUTPUT
  195.   6358 224061       145         SHLD  OUTADR
  196.   635B C9           146         RET
  197.                     147 ;
  198.                     148 ; SCAN OF INPUT BUFFER
  199.                     149 ;   ENTER:   HL=BUFFER ADDR
  200.                     150 ;   RETURNS: HL=LAST ADDR, B=LAST CHAR (01)
  201.                     151 ;
  202.   635C 2A3A61       152 SCAN:   LHLD  IPTR          ;GET POINTER
  203.   635F 7E           153         MOV   A,M           ;GET FIRST CHAR
  204.   6360 FE01         154         CPI   1             ;IF END MARKER
  205.   6362 C8           155         RZ                  ;  THEN RETURN
  206.   6363 FE0D         156         CPI   0DH           ;IF NOT END OF LINE
  207.   6365 C26C63       157         JNZ   CKEND         ;  THEN CK FOR SOURCE END
  208.   6368 23           158         INX   H             ;  ELSE BUMP POINTER
  209.   6369 C35F63       159         JMP   SCAN+3        ;  AND CONTINUE
  210.   636C CDF067       160 CKEND:  CALL  CNTLN         ;HL=EOL, A=BR CHAR
  211.   636F FE01         161         CPI   1             ;IF END MARKER
  212.   6371 C8           162         RZ                  ;  THEN RETURN
  213.   6372 23           163         INX   H             ;HL=START OF NEXT LINE
  214.   6373 223A61       164         SHLD  IPTR          ;SAVE THAT ADDR
  215.   6376 2B           165         DCX   H             ;HL=BREAK CHAR
  216.   6377 CD0168       166         CALL  BACKUP        ;RESET HL TO CURRENT LINE
  217.   637A CD5664       167         CALL  SKLN          ;SKIP ANY LN NOS., ETC.
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE    5
  225.  
  226.  
  227.   LOC  OBJ         SEQ         SOURCE STATEMENT
  228.  
  229.   637D CD7F67       168         CALL  GETCH         ;   GET FIRST TEXT CHAR
  230.   6380 FE3A         169         CPI   ':'           ;IF COLON
  231.   6382 CC9663       170         CZ    CONTIN        ;  THEN CONTINUE SAME OP
  232.   6385 CA5C63       171         JZ    SCAN          ;  IF CALLED THEN NEXT SCAN
  233.   6388 FE2A         172         CPI   '*'           ;IF ASTERISK
  234.   638A CC8F67       173         CZ    GETWD         ;  THEN SKIP LABEL
  235.   638D CA5F63       174         JZ    SCAN+3        ;IF CALLED THEN RESCAN
  236.   6390 CDAA63       175         CALL  OPS           ;PROCESS OPERATIONS
  237.   6393 C35C63       176         JMP   SCAN
  238.                     177 ;
  239.   6396 23           178 CONTIN: INX   H             ;COLON ADDR + 1
  240.   6397 221A61       179         SHLD  HLSAV         ;SAVE IT
  241.   639A 214B62       180         LXI   H,LASTOP      ;  ADDR LAST OP CODE
  242.   639D 222261       181         SHLD  LLSAV         ;SAVE OP CODE ADDR
  243.   63A0 063A         182         MVI   B,':'
  244.   63A2 CD8A68       183         CALL  INDX          ;ADDR COLON POS
  245.   63A5 CDC263       184         CALL  OLDOP         ;USE PART OF OPS
  246.   63A8 AF           185         XRA   A             ; SET RETURN FLAG
  247.   63A9 C9           186         RET
  248.                     187 ;
  249.                     188 ; OP CODES-- INTERPRET OPERATION
  250.                     189 ;   ENTER: HL = FIRST NON-BLANK CHAR IN LINE
  251.                     190 ;   RETURNS: RETURN (ZERO) FLAG SET
  252.                     191 ;
  253.   63AA 222261       192 OPS:    SHLD  LLSAV         ;SAVE OP CODE ADDR
  254.   63AD CDE167       193         CALL  SAVOP         ;SAVE OP CODE
  255.   63B0 2A2261       194         LHLD  LLSAV         ;ADDR OP CODE
  256.   63B3 063A         195         MVI   B,':'         ;  LOOK FOR COLON
  257.   63B5 CD8A68       196         CALL  INDX          ;IF NOT FOUND
  258.   63B8 79           197         MOV   A,C
  259.   63B9 B7           198         ORA   A
  260.   63BA CAD863       199         JZ    ALTSC         ;  THEN TRY ALTERN SCAN
  261.   63BD 23           200         INX   H             ;COLON ADDR + 1
  262.   63BE 221A61       201         SHLD  HLSAV         ;SAVE IT
  263.   63C1 2B           202         DCX   H             ;ADDR POS OF COLON
  264.   63C2 2B           203 OLDOP:  DCX   H             ;ADDR POS BEFORE COLON
  265.   63C3 CD6064       204         CALL  YNCHK         ;IF YN-SW OFF(Y) OR ON(N)
  266.   63C6 B7           205         ORA   A             ;   (A=000)
  267.   63C7 C8           206         RZ                  ;  THEN RETURN
  268.   63C8 CD8364       207         CALL  VARCHK        ;IF VARIABLE PRESENT < 1
  269.   63CB C8           208         RZ                  ;  THEN RETURN
  270.   63CC 2A2261       209         LHLD  LLSAV         ;ADDR OP CODE
  271.   63CF CDC467       210         CALL  GETCTL        ;GET THE CONTROL WORD
  272.   63D2 CDC264       211         CALL  CTLMCH        ;CALL SPECIFIC CONTROL
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE    6
  280.  
  281.  
  282.   LOC  OBJ         SEQ         SOURCE STATEMENT
  283.  
  284.   63D5 FE01         212         CPI   1             ;IF CONTROL FOUND
  285.   63D7 C0           213         RNZ                 ;  THEN RETURN
  286.   63D8 2A2261       214 ALTSC:  LHLD  LLSAV         ;ADDR FIRST CHAR
  287.   63DB CD1561       215         CALL  ASCAN         ;TRY ALTERN SCAN
  288.   63DE C8           216         RZ                  ;IF OK, THEN RETURN
  289.   63DF 2A2261       217         LHLD  LLSAV         ;ELSE ADDR FIRST CHAR
  290.   63E2 221A61       218         SHLD  HLSAV         ;SET POINTER
  291.   63E5 CDCC68       219         CALL  TOP           ;DISPLAY TEXT
  292.   63E8 C9           220         RET
  293.                     221 ;
  294.                     222 ; TEXT CHECK FOR PRESENCE OF LINE FEEDS,
  295.                     223 ;   LINE COUNTS, OR LINE NUMBERS.
  296.                     224 ; SETS LNSKP TO NO. OF CHARS TO SKIP BEFORE TEXT
  297.                     225 ;
  298.   63E9 210070       226 TXTCK:  LXI   H,PBUFF       ;ADDR PROGRAM TEXT
  299.   63EC CDF067       227         CALL  CNTLN         ;ADDR CR
  300.   63EF 23           228         INX   H
  301.   63F0 7E           229         MOV   A,M           ;GET NEXT CHAR
  302.   63F1 FE0A         230         CPI   0AH           ;IF NOT LF
  303.   63F3 C20864       231         JNZ   CKLC          ;  THEN CK FOR LINE COUNT
  304.   63F6 CDF067       232         CALL  CNTLN         ;ELSE CK ANOTHER LINE
  305.   63F9 23           233         INX   H
  306.   63FA 7E           234         MOV   A,M
  307.   63FB FE0A         235         CPI   0AH           ;IF NOT LF
  308.   63FD C20864       236         JNZ   CKLC          ;  THEN CK FOR LINE COUNT
  309.   6400 3A4661       237         LDA   LNSKP         ;ELSE ADD 1 TO LNSKP
  310.   6403 C601         238         ADI   1
  311.   6405 324661       239         STA   LNSKP
  312.   6408 210070       240 CKLC:   LXI   H,PBUFF       ;CK FOR LINE COUNT
  313.   640B CDF067       241         CALL  CNTLN         ;ADDR CR
  314.   640E 23           242         INX   H             ;  NEXT CHAR
  315.   640F CD5664       243         CALL  SKLN          ;SKIP ANY LF
  316.   6412 5E           244         MOV   E,M           ;GET POSSIBLE LINE COUNT
  317.   6413 1600         245         MVI   D,0
  318.   6415 1B           246         DCX   D             ;DECR IT
  319.   6416 19           247         DAD   D             ;ADDR LINE END
  320.   6417 7E           248         MOV   A,M           ;GET CHAR
  321.   6418 FE0D         249         CPI   0DH           ;IF NOT CR
  322.   641A C23264       250         JNZ   CKLN          ;  THEN CK FOR LINE NO.
  323.   641D 23           251         INX   H             ;ELSE CK ANOTHER LINE
  324.   641E CD5664       252         CALL  SKLN
  325.   6421 5E           253         MOV   E,M
  326.   6422 1B           254         DCX   D
  327.   6423 19           255         DAD   D
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE    7
  335.  
  336.  
  337.   LOC  OBJ         SEQ         SOURCE STATEMENT
  338.  
  339.   6424 7E           256         MOV   A,M
  340.   6425 FE0D         257         CPI   0DH           ;IF NOT CR
  341.   6427 C23264       258         JNZ   CKLN          ;  THEN CK FOR LINE NOS.
  342.   642A 3A4661       259         LDA   LNSKP         ;ELSE ADD 1 TO LNSKP
  343.   642D C601         260         ADI   1
  344.   642F 324661       261         STA   LNSKP
  345.   6432 210170       262 CKLN:   LXI   H,PBUFF+1     ;NOW LOOK FOR LN NOS.
  346.   6435 CDF067       263         CALL  CNTLN         ;ADDR CR
  347.   6438 23           264         INX   H             ;  NEXT CHAR
  348.   6439 CD5664       265         CALL  SKLN          ;SKIP LF OR LN CNT
  349.   643C 7E           266         MOV   A,M           ;GET CHAR AFTER LN CT
  350.   643D CD4A64       267         CALL  NUM           ;IF NOT ASCII NUMBER
  351.   6440 C0           268         RNZ                 ;  THEN QUIT
  352.   6441 3A4661       269         LDA   LNSKP         ;ELSE ADD 4 TO LNSKP
  353.   6444 C604         270         ADI   4
  354.   6446 324661       271         STA   LNSKP
  355.   6449 C9           272         RET
  356.                     273 ;
  357.   644A FE30         274 NUM:    CPI   '0'           ;CHECK FOR ASCII NUMBER
  358.   644C F8           275         RM                  ;TOO LOW
  359.   644D FE3A         276         CPI   '9'+1
  360.   644F FA5464       277         JM    YNUM
  361.   6452 B4           278         ORA   H             ;TOO HIGH
  362.   6453 C9           279         RET
  363.   6454 AF           280 YNUM:   XRA   A             ;OK
  364.   6455 C9           281         RET
  365.                     282 ;
  366.                     283 ; SKIP LINE NUMBER AND LINE COUNT
  367.                     284 ;    BASED ON VALUE OF LNSKP
  368.                     285 ;
  369.   6456 3A4661       286 SKLN:   LDA   LNSKP         ;GET SKIP COUNT
  370.   6459 B7           287         ORA   A             ;IF ZERO
  371.   645A C8           288         RZ                  ;  THEN RETURN
  372.   645B 23           289         INX   H             ;SKIP A CHARACTER
  373.   645C 3D           290         DCR   A             ;DECR COUNT
  374.   645D C35964       291         JMP   SKLN+3        ;MORE
  375.                     292 ;
  376.                     293 ;    CHECK FOR Y OR N CONDITIONS
  377.                     294 ; Y AND N FOLLOWING OP CODE
  378.                     295 ;      ACT AS A SWITCH ALONG WITH YN-SWITCH
  379.                     296 ;   ENTER:   HL = ADDR OF COLON
  380.                     297 ;   RETURNS: A = 000 IF NO ACTION REQUIRED
  381.                     298 ;                ELSE A = CHAR BEFORE COLON
  382.                     299 ;            HL = ADDR OF LAST CHAR BEFORE COLON
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE    8
  390.  
  391.  
  392.   LOC  OBJ         SEQ         SOURCE STATEMENT
  393.  
  394.                     300 ;
  395.                     301 
  396.   6460 CD8767       302 YNCHK:  CALL  GETLCH        ;GET LAST CHARACTER
  397.   6463 FE59         303         CPI   'Y'           ;IF Y
  398.   6465 CA6F64       304         JZ    YCHK
  399.   6468 FE4E         305         CPI   'N'           ;IF N
  400.   646A CA7864       306         JZ    NCHK
  401.   646D B7           307         ORA   A             ; ELSE SET SWITCH ON
  402.   646E C9           308         RET                 ;  AND RETURN WITH CHAR
  403.   646F 3A4B61       309 YCHK:   LDA   YNSW          ;IF YN-SWITCH
  404.   6472 B7           310         ORA   A             ;    SHOWS MATCH
  405.   6473 CA8164       311         JZ    DONT          ;  THEN QUIT
  406.   6476 B4           312         ORA   H             ; ELSE SET SWITCH ON
  407.   6477 C9           313         RET                 ;  AND RETURN
  408.   6478 3A4B61       314 NCHK:   LDA   YNSW
  409.   647B B7           315         ORA   A             ;    SHOWS NO MATCH
  410.   647C C28164       316         JNZ   DONT          ;  THEN QUIT
  411.   647F B4           317         ORA   H             ; ELSE SET SWITCH ON
  412.   6480 C9           318         RET                 ;  AND RETURN
  413.   6481 AF           319 DONT:   XRA   A             ; SET SWITCH OFF
  414.   6482 C9           320         RET                 ;  AND RETURN
  415.                     321 ;
  416.                     322 ;     CHECK FOR NUMERIC VARIABLE CONDITIONS
  417.                     323 ; VARIABLE IN PARENTHESES AFTER OP CODE
  418.                     324 ;   CAUSES EXECUTION IF VALUE +1 OR MORE
  419.                     325 ;    ENTER:   A = LAST CHAR BEFORE COLON
  420.                     326 ;    RETURNS: ZERO FLAG OFF IF NO ACTION REQUIRED
  421.                     327 ;
  422.   6483 FE29         328 VARCHK: CPI   ')'           ;IF VARIABLE PRESENT
  423.   6485 CA8A64       329         JZ    VCHK          ;  THEN CHECK IT
  424.   6488 B4           330         ORA   H             ; ELSE SET SWITCH ON
  425.   6489 C9           331         RET                 ;  AND RETURN
  426.   648A 2B           332 VCHK:   DCX   H             ;DECR POINTER
  427.   648B 2B           333         DCX   H             ;  TWICE
  428.   648C 7E           334         MOV   A,M           ;   GET CHAR
  429.   648D FE28         335         CPI   '('           ;IF PAREN NOT PRESENT
  430.   648F C2A764       336         JNZ   BADFRM        ;  THEN COMPLAIN
  431.   6492 23           337         INX   H             ;BUMP POINTER
  432.   6493 46           338         MOV   B,M           ;   SAVE CHAR IN B
  433.   6494 CDB464       339         CALL  VARMCH        ;LOOK IT UP
  434.   6497 FE01         340         CPI   1             ;IF END MARKER
  435.   6499 CAA764       341         JZ    BADFRM        ;  THEN COMPLAIN
  436.   649C 23           342         INX   H             ;  ELSE POINT AT VALUE
  437.   649D 7E           343         MOV   A,M           ;   GET VALUE
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE    9
  445.  
  446.  
  447.   LOC  OBJ         SEQ         SOURCE STATEMENT
  448.  
  449.   649E FE01         344         CPI   01
  450.   64A0 FAA564       345         JM    VOFF          ;  THEN QUIT
  451.   64A3 B4           346         ORA   H             ; ELSE SET SWITCH ON
  452.   64A4 C9           347         RET                 ;  AND RETURN
  453.   64A5 AF           348 VOFF:   XRA   A             ; SET SWITCH OFF
  454.   64A6 C9           349         RET                 ;  AND RETURN
  455.                     350 ;
  456.   64A7 2A2261       351 BADFRM: LHLD  LLSAV         ;SHOW THE LINE
  457.                     352 
  458.   64AA CDCF68       353         CALL  TOP+3
  459.   64AD 215B6E       354         LXI   H,EXPMSG
  460.   64B0 CD316E       355         CALL  ERROR
  461.   64B3 C9           356         RET
  462.                     357 ;
  463.                     358 ; VARIABLE MATCH - LOOKUP OF VARIABLE NAME/VALUE LIST
  464.                     359 ;    ENTER:   VARIABLE NAME CHAR IN B REGISTER
  465.                     360 ;    RETURNS: HL = ADDR OF MATCHED NAME
  466.                     361 ;             IF VAR NOT IN LIST THEN A = 01
  467.                     362 ;
  468.   64B4 215662       363 VARMCH: LXI   H,NVAR
  469.   64B7 7E           364         MOV   A,M
  470.   64B8 FE01         365         CPI   1             ;IF LIST END
  471.   64BA C8           366         RZ                  ;  THEN RETURN
  472.   64BB B8           367         CMP   B             ;IF MATCH
  473.   64BC C8           368         RZ                  ;  THEN RETURN
  474.   64BD 23           369         INX   H             ;  ELSE LOOK AGAIN
  475.   64BE 23           370         INX   H
  476.   64BF C3B764       371         JMP   VARMCH+3
  477.                     372 ;
  478.                     373 ; CONTROL MATCH- CALLS SPECIFIC CONTROL OPERATIONS
  479.                     374 ;   ENTER:   'WORD':CONTROL WORD
  480.                     375 ;   RETURNS: IF WORD NOT IN LIST, THEN 01 RETURNED
  481.                     376 ;            HL: START OF NEXT WORD
  482.                     377 ;
  483.   64C2 11ED64       378 CTLMCH: LXI   D,CTLST       ;  DE=CONTROL LIST ADDR
  484.   64C5 CDD864       379         CALL  LSTMCH        ;LOOK FOR WORD
  485.   64C8 FE01         380         CPI   1             ;IF NOT FOUND
  486.   64CA C8           381         RZ                  ;  THEN RETURN
  487.   64CB EB           382         XCHG
  488.   64CC 23           383         INX   H
  489.   64CD 11D664       384         LXI   D,RTRN        ;PUT RETURN ON STACK
  490.   64D0 D5           385         PUSH  D
  491.   64D1 5E           386         MOV   E,M
  492.   64D2 23           387         INX   H
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   10
  500.  
  501.  
  502.   LOC  OBJ         SEQ         SOURCE STATEMENT
  503.  
  504.   64D3 56           388         MOV   D,M
  505.   64D4 D5           389         PUSH  D             ;CALL ADDR ON STACK
  506.   64D5 C9           390         RET
  507.   64D6 AF           391 RTRN:   XRA   A
  508.   64D7 C9           392         RET
  509.                     393 ;
  510.                     394 ; LIST MATCH - LOOKUP OF WORD/ADDRESS LIST
  511.                     395 ;   ENTER:   'WORD' = WORD TO BE FOUND
  512.                     396 ;            DE = ADDR OF BEGINNING OF LIST
  513.                     397 ;   RETURNS: DE = ADDR OF POINTER (L BYTE)
  514.                     398 ;            IF WORD NOT IN LIST THEN A = 01
  515.                     399 ;
  516.   64D8 218B62       400 LSTMCH: LXI   H,WORD        ;  HL=INPUT WORD
  517.   64DB CD4E67       401         CALL  CMPR          ;COMPARE WORD WITH LIST
  518.   64DE B7           402         ORA   A             ; IF MATCH
  519.                     403 
  520.   64DF C0           404         RNZ                 ;  THEN RETURN
  521.   64E0 23           405         INX   H             ;ELSE HL = DE
  522.   64E1 EB           406         XCHG
  523.   64E2 23           407         INX   H             ;AND INCR HL TO
  524.   64E3 23           408         INX   H             ;NEXT LIST ADDR
  525.   64E4 23           409         INX   H
  526.   64E5 7E           410         MOV   A,M           ;   GET NEXT LIST CHAR
  527.   64E6 FE01         411         CPI   1             ;IF END MARKER
  528.   64E8 C8           412         RZ                  ;  THEN RETURN
  529.   64E9 EB           413         XCHG                ;ELSE RESET DE TO NEXT ITEM
  530.   64EA C3D864       414         JMP   LSTMCH        ;  AND TRY IT
  531.                     415 ;
  532.                     416 ; CONTROL LIST - OP CODES AND KEYWORDS
  533.                     417 ;
  534.   64ED 54           418 CTLST:  DB    'T',0DH
  535.   64EE 0D               
  536.                     419 
  537.   64EF CC68         420         DW    TOP
  538.   64F1 41           421         DB    'A',0DH
  539.   64F2 0D               
  540.   64F3 AB69         422         DW    AOP
  541.   64F5 4D           423         DB    'M',0DH
  542.   64F6 0D               
  543.   64F7 796A         424         DW    MOP
  544.   64F9 4D43         425         DB    'MC',0DH
  545.   64FB 0D               
  546.   64FC 716A         426         DW    MC
  547.   64FE 4A           427         DB    'J',0DH
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   11
  555.  
  556.  
  557.   LOC  OBJ         SEQ         SOURCE STATEMENT
  558.  
  559.   64FF 0D               
  560.   6500 1E66         428         DW    JOP
  561.   6502 52           429         DB    'R',0DH
  562.   6503 0D               
  563.   6504 2E6C         430         DW    ROP
  564.   6506 43           431         DB    'C',0DH
  565.   6507 0D               
  566.   6508 5C6B         432         DW    COP
  567.   650A 55           433         DB    'U',0DH
  568.   650B 0D               
  569.   650C 5B66         434         DW    UOP
  570.   650E 45           435         DB    'E',0DH
  571.   650F 0D               
  572.   6510 2F6C         436         DW    EOP
  573.   6512 59           437         DB    'Y',0DH
  574.   6513 0D               
  575.   6514 CC68         438         DW    TOP
  576.   6516 4E           439         DB    'N',0DH
  577.   6517 0D               
  578.   6518 CC68         440         DW    TOP
  579.   651A 4C4F4144     441         DB    'LOAD',0DH 
  580.   651E 0D               
  581.                     442 ;LOAD NEW PROGRAM
  582.   651F 3A6C         443         DW    LOAD
  583.   6521 494E4D41     444         DB    'INMAX',0DH 
  584.   6525 58               
  585.   6526 0D               
  586.                     445 ;LIMITS CHARS ACCEPTED
  587.   6527 DC65         446         DW    INMAX
  588.   6529 4E455724     447         DB    'NEW$',0DH 
  589.   652D 0D               
  590.                     448 ;ERASE $TEXT
  591.   652E 416C         449         DW    NEWN
  592.   6530 4450         450         DB    'DP',0DH 
  593.   6532 0D               
  594.                     451         ;DISPLAY PROGRAM
  595.   6533 CD6D         452         DW    DPRG  
  596.   6535 5052494E     453         DB    'PRINT',0DH 
  597.   6539 54               
  598.   653A 0D               
  599.                     454 ;PRINT PROGRAM
  600.   653B D76D         455         DW    LPRG
  601.   653D 53415645     456         DB    'SAVE',0DH 
  602.   6541 0D               
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   12
  610.  
  611.  
  612.   LOC  OBJ         SEQ         SOURCE STATEMENT
  613.  
  614.                     457 ;SAVE PROGRAM
  615.   6542 E76D         458         DW    SPRG
  616.   6544 494550       459         DB    'IEP',0DH 
  617.   6547 0D               
  618.                     460 ;INTERPRET EXIST PROG
  619.   6548 CF65         461         DW    IEP
  620.   654A 425945       462         DB    'BYE',0DH
  621.   654D 0D               
  622.   654E 0F61         463         DW    EXIT
  623.   6550 45444954     464         DB    'EDIT',0DH
  624.   6554 0D               
  625.   6555 1261         465         DW    EDIT
  626.                     466 ;COMMON DATAPOINT PILOT CODES NOT IN OPERATION
  627.   6557 4341         467         DB    'CA',0DH
  628.   6559 0D               
  629.   655A 7165         468         DW    CURSR
  630.   655C 4345         469         DB    'CE',0DH
  631.   655E 0D               
  632.   655F A165         470         DW    CLRE
  633.   6561 434C         471         DB    'CL',0DH
  634.   6563 0D               
  635.   6564 AC65         472         DW    CLRL
  636.   6566 4348         473         DB    'CH',0DH
  637.   6568 0D               
  638.   6569 B765         474         DW    CLRH
  639.   656B 524C         475         DB    'RL',0DH
  640.   656D 0D               
  641.   656E C465         476         DW    ROLL
  642.                     477 ;        DB    'WA',0DH
  643.                     478 ;        DW    WAIT
  644.   6570 01           479         DB      1
  645.                     480 ;
  646.   6571 0E1B         481 CURSR:  MVI C,1BH
  647.   6573 CD0361       482         CALL CO
  648.   6576 0E26         483         MVI C,'&'
  649.   6578 CD0361       484         CALL CO
  650.   657B 0E61         485         MVI C,61H
  651.   657D CD0361       486         CALL CO
  652.   6580 2A1A61       487         LHLD HLSAV
  653.   6583 7E           488 CURS1:  MOV A,M
  654.   6584 FE2C         489         CPI ','
  655.   6586 CA9665       490         JZ CURS3
  656.   6589 FE0D         491         CPI 0DH
  657.   658B CA9B65       492         JZ CURS4
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   13
  665.  
  666.  
  667.   LOC  OBJ         SEQ         SOURCE STATEMENT
  668.  
  669.   658E 4F           493         MOV C,A
  670.   658F CD0361       494 CURS2:  CALL CO
  671.   6592 23           495         INX H
  672.   6593 C38365       496         JMP CURS1
  673.   6596 0E72         497 CURS3:  MVI C,'r'
  674.   6598 C38F65       498         JMP CURS2
  675.   659B 0E43         499 CURS4:  MVI C,'C'
  676.   659D CD0361       500         CALL CO
  677.   65A0 C9           501         RET
  678.   65A1 0E1B         502 CLRE:   MVI C,1BH
  679.   65A3 CD0361       503         CALL CO
  680.   65A6 0E4A         504         MVI C,'J'
  681.   65A8 CD0361       505         CALL CO
  682.   65AB C9           506         RET
  683.   65AC 0E1B         507 CLRL:   MVI C,1BH
  684.   65AE CD0361       508         CALL CO
  685.   65B1 0E4B         509         MVI C,'K'
  686.   65B3 CD0361       510         CALL CO
  687.   65B6 C9           511         RET
  688.   65B7 0E1B         512 CLRH:   MVI C,1BH
  689.   65B9 CD0361       513         CALL CO
  690.   65BC 0E48         514         MVI C,'H'
  691.   65BE CD0361       515         CALL CO
  692.   65C1 C3A165       516         JMP CLRE
  693.   65C4 0E1B         517 ROLL:   MVI C,1BH
  694.   65C6 CD0361       518         CALL CO
  695.   65C9 0E53         519         MVI C,'S'
  696.   65CB CD0361       520         CALL CO
  697.   65CE C9           521         RET
  698.                     522 ;WAIT:   RET
  699.                     523 ;
  700.                     524 ; INTERPRET EXISTING PROGRAM
  701.                     525 ;    STARTS SCAN OF PROGRAM BUFFER
  702.                     526 ;
  703.   65CF 210070       527 IEP:    LXI   H,PBUFF
  704.   65D2 223A61       528         SHLD  IPTR          ;SET POINTER
  705.   65D5 224261       529         SHLD  SCANB         ;  AND SCAN BEGINNING
  706.   65D8 CDE963       530         CALL  TXTCK         ;CK FOR CHARS TO SKIP
  707.   65DB C9           531         RET
  708.                     532 ;
  709.   65DC CDED65       533 INMAX:  CALL  NMCTL         ;E = NUMBER CONTROL
  710.   65DF 7B           534         MOV   A,E
  711.   65E0 FE49         535         CPI   73            ;LIMIT TO 72
  712.   65E2 FAE865       536         JM    INMX2
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   14
  720.  
  721.  
  722.   LOC  OBJ         SEQ         SOURCE STATEMENT
  723.  
  724.   65E5 3E48         537         MVI   A,72
  725.   65E7 5F           538         MOV   E,A
  726.   65E8 214461       539 INMX2:  LXI   H,CHMAX       ;  SET INPUT CHAR MAX
  727.   65EB 73           540         MOV   M,E
  728.   65EC C9           541         RET
  729.                     542 ;
  730.                     543 ; CHAR TO BINARY CONVERSION FOR CONTROL ARGUMENTS
  731.                     544 ; NUMBER CONTROL - FINDS 1 OR 2 DIGIT NUMBER OR NAME
  732.                     545 ;  OF VARIABLE IN NEXT WORD. NEGATIVE VALUES SET TO ZERO.
  733.                     546 ;    ENTER:   HLSAV = EXPRESSION ADDRESS
  734.                     547 ;    RETURNS: E = BINARY VERSION OF THE NUMBER
  735.                     548 ;             A = 0DH IF ALREADY AT END OF LINE
  736.                     549 ;             HLSAV = BR CHAR   ADDR
  737.                     550 ;
  738.   65ED 2A1A61       551 NMCTL:  LHLD  HLSAV         ;EXPRESSION ADDR
  739.   65F0 CD7F67       552         CALL  GETCH         ;GET CHAR
  740.   65F3 FE0D         553         CPI   0DH           ; IF CR
  741.   65F5 C8           554         RZ                  ;  THEN RETURN
  742.   65F6 CD8F67       555         CALL  GETWD         ;GET NEXT WORD
  743.   65F9 2B           556         DCX   H             ;BACK UP TO BR CHAR
  744.   65FA 221A61       557         SHLD  HLSAV         ;SAVE POINTER
  745.   65FD 218B62       558         LXI   H,WORD        ;    IN 'WORD'
  746.   6600 CDB368       559         CALL  LETTER        ;IF NOT LETTER
  747.   6603 C21566       560         JNZ   CVNUM         ;  THEN CONVERT A NUMBER
  748.   6606 46           561         MOV   B,M           ;   ELSE SAVE CHAR IN B
  749.   6607 CDB464       562         CALL  VARMCH        ;LOOK IT UP
  750.   660A FE01         563         CPI   1             ;IF END MARKER
  751.   660C CCA764       564         CZ    BADFRM        ;  THEN COMPLAIN
  752.   660F C8           565         RZ                  ;  AND RETURN
  753.   6610 23           566         INX   H             ;ELSE POINT AT VALUE
  754.   6611 5E           567         MOV   E,M           ;   PUT VALUE IN E
  755.   6612 C31866       568         JMP   CVNUM+3       ;  AND QUIT
  756.   6615 CD8466       569 CVNUM:  CALL  GETNM         ;CONVERT NUMBER
  757.   6618 7B           570         MOV   A,E           ;      GET VALUE
  758.   6619 B7           571         ORA   A
  759.   661A F0           572         RP                  ;RETURN IF POSITIVE
  760.   661B 1E00         573         MVI   E,0           ;  ELSE SET TO ZERO
  761.   661D C9           574         RET
  762.                     575 ;
  763.                     576 ; JUMP TO LABEL NAME
  764.                     577 ;   ENTER:   HLSAV = EXPRESSION FIELD
  765.                     578 ;   RETURNS: HL RESET OR MESSAGE
  766.                     579 ;
  767.   661E 2A1A61       580 JOP:    LHLD  HLSAV         ;ADDR EXPRESSION
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   15
  775.  
  776.  
  777.   LOC  OBJ         SEQ         SOURCE STATEMENT
  778.  
  779.   6621 CD7F67       581         CALL  GETCH         ;GET FIRST CHAR
  780.   6624 FE2A         582         CPI   '*'           ;IF *
  781.   6626 CA3A66       583         JZ    JOP2          ;  THEN MOVE WORD
  782.   6629 3E2A         584         MVI   A,'*'
  783.   662B 328B62       585         STA   WORD          ;ELSE ADD *
  784.   662E 118C62       586         LXI   D,WORD+1      ;  THEN MOVE WORD
  785.   6631 2A1A61       587         LHLD  HLSAV
  786.   6634 CDA767       588         CALL  WDTFR
  787.   6637 C33D66       589         JMP   JOP2+3        ;AND CONTINUE
  788.   663A CD8F67       590 JOP2:   CALL  GETWD         ;GET NEXT WORD
  789.   663D 2A4261       591         LHLD  SCANB         ;  START OF SCAN AREA
  790.   6640 CDF066       592         CALL  LOOKL         ;LOOK FOR IT
  791.   6643 FE01         593         CPI   1             ;IF LABEL NOT FOUND
  792.   6645 CC4E66       594         CZ    NTFND         ;  THEN COMPLAIN
  793.   6648 C8           595         RZ                  ;  AND RETURN
  794.   6649 23           596         INX   H
  795.   664A 223A61       597         SHLD  IPTR          ;NEW SCAN POSITION
  796.   664D C9           598         RET                 ;RESTART SCAN
  797.                     599 ;
  798.                     600 ;
  799.   664E 218B62       601 NTFND:  LXI   H,WORD        ;  SHOW THE LABEL
  800.   6651 CD9C6D       602         CALL  DSPLY
  801.   6654 21366E       603         LXI   H,BLMSG
  802.   6657 CD316E       604         CALL  ERROR
  803.   665A C9           605         RET
  804.                     606 ;
  805.   665B CD666C       607 UOP:    CALL  SAVRET        ;SAVE RETURN POINTER
  806.   665E C31E66       608         JMP   JOP
  807.                     609 ;
  808.                     610 ; SET A BLOCK OF LENGTH C TO CHAR B
  809.                     611 ;
  810.   6661 70           612 BLKSET: MOV   M,B           ;   STORE ONE CHAR
  811.   6662 23           613         INX   H             ;BUMP ADDR
  812.   6663 79           614         MOV   A,C           ;   DECR COUNT
  813.   6664 D601         615         SUI   1
  814.   6666 4F           616         MOV   C,A           ;      IF COUNT NOT ZERO
  815.   6667 C26166       617         JNZ   BLKSET        ;  THEN STORE ANOTHER
  816.   666A C9           618         RET
  817.                     619 ;
  818.                     620 ; BLANK THE INPUT BUFFER
  819.                     621 ;
  820.   666B 2A3461       622 BLKBF:  LHLD  APTR          ;DE=TOP OF BUFFER
  821.   666E EB           623         XCHG
  822.   666F 210070       624         LXI   H,PBUFF       ;HL=BOTTOM OF BUFFER
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   16
  830.  
  831.  
  832.   LOC  OBJ         SEQ         SOURCE STATEMENT
  833.  
  834.   6672 0620         625         MVI   B,' '
  835.   6674 70           626 BLKB2:  MOV   M,B
  836.   6675 23           627         INX   H
  837.   6676 CD7D66       628         CALL  ADRCMP
  838.   6679 C27466       629         JNZ   BLKB2
  839.   667C C9           630         RET
  840.                     631 ;
  841.                     632 ; ADDRESS COMPARISON - COMPARES HL + DE
  842.                     633 ;    RETURNS: ZERO AND SIGN FLAGS SET AS THOUGH
  843.                     634 ;             A CONTAINED HL AND DE WAS COMPARED
  844.                     635 ;    CALLED BY BLKBF
  845.                     636 ;
  846.   667D 7C           637 ADRCMP: MOV   A,H           ;      GET H
  847.   667E BA           638         CMP   D             ;COMPARE D
  848.   667F F8           639         RM                  ;IF D > H THEN RETURN
  849.   6680 C0           640         RNZ                 ;IF D NOT = H THEN RETURN
  850.   6681 7D           641         MOV   A,L           ;      GET L
  851.   6682 BB           642         CMP   E             ;COMPARE E
  852.   6683 C9           643         RET                 ;  AND RETURN
  853.                     644 ;
  854.                     645 ;    CHARACTER TO BINARY CONVERSION
  855.                     646 ; GET A DECIMAL NUMBER-- UP TO 99
  856.                     647 ;   ENTER:   HL= CHAR ADDR OF ONE OR TWO DIGIT NUMBER
  857.                     648 ;   RETURNS: BINARY NUMBER IN E
  858.                     649 ;      IF INPUT NOT NUMERIC, THEN E = 0
  859.                     650 ;
  860.   6684 1E00         651 GETNM:  MVI   E,0           ;  INIT. OUTPUT VALUE
  861.   6686 23           652         INX   H             ;LOOK AT NEXT CHAR
  862.   6687 CD0C68       653         CALL  BRCHAR        ;IF BREAK CHAR
  863.   668A CAB466       654         JZ    SDIG          ;  THEN SINGLE DIGIT
  864.   668D FE2B         655         CPI   '+'
  865.   668F CAB466       656         JZ    SDIG
  866.   6692 FE2D         657         CPI   '-'
  867.   6694 CAB466       658         JZ    SDIG
  868.   6697 2B           659         DCX   H             ;ELSE BACK UP
  869.   6698 7E           660         MOV   A,M           ;   GET FIRST CHAR
  870.   6699 FE30         661         CPI   '0'           ;LIMIT RANGE
  871.   669B F8           662         RM                  ;  TO NUMERALS
  872.   669C FE3A         663         CPI   '9'+1
  873.   669E F0           664         RP
  874.   669F D630         665         SUI   '0'           ;REMOVE ASCII BIAS
  875.   66A1 87           666         ADD   A             ;MULT. BY 10
  876.   66A2 5F           667         MOV   E,A           ;        E=A*2
  877.   66A3 87           668         ADD   A             ;  A*4
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   17
  885.  
  886.  
  887.   LOC  OBJ         SEQ         SOURCE STATEMENT
  888.  
  889.   66A4 87           669         ADD   A             ;  A*8
  890.   66A5 83           670         ADD   E             ;  A+E=A*10
  891.   66A6 5F           671         MOV   E,A           ;      SAVE IT
  892.   66A7 23           672         INX   H             ;HL=HL+1
  893.   66A8 7E           673 UNITS:  MOV   A,M           ;   GET SECOND CHAR
  894.   66A9 FE30         674         CPI   '0'           ;LIMIT RANGE
  895.   66AB F8           675         RM                  ;  TO NUMERALS
  896.   66AC FE3A         676         CPI   '9'+1
  897.   66AE F0           677         RP
  898.   66AF D630         678         SUI   '0'           ;REMOVE ASCII BIAS
  899.   66B1 83           679         ADD   E             ;ADD NEW DIGIT
  900.   66B2 5F           680         MOV   E,A           ;        TO E
  901.   66B3 C9           681         RET
  902.   66B4 2B           682 SDIG:   DCX   H             ;BACK UP POINTER
  903.   66B5 C3A866       683         JMP   UNITS         ;CONVERT UNITS POSITION
  904.                     684 ;
  905.                     685 ;    BINARY TO CHARACTER CONVERSION
  906.                     686 ; PUT BINARY NUMBER IN DECIMAL CHARS -99 TO +99
  907.                     687 ;    ENTER:   BINARY NUMBER IN E
  908.                     688 ;             HL = CHARACTER AREA
  909.                     689 ;    RETURNS: HL = ADDR OF 0DH AFTER RIGHT DIGIT
  910.                     690 ;
  911.   66B8 0E00         691 PUTNM:  MVI   C,0           ;  INITIALIZE C
  912.   66BA 7B           692         MOV   A,E           ;      GET BINARY NUMBER
  913.   66BB B7           693         ORA   A             ; IF NEGATIVE
  914.   66BC FCE166       694         CM    NEG           ;  THEN SHOW MINUS SIGN
  915.   66BF FE0A         695         CPI   10            ;IF < 10
  916.   66C1 FACE66       696         JM    FRMCH         ;  THEN FORM CHAR
  917.   66C4 D60A         697         SUI   10            ;  ELSE SUBTR 10
  918.   66C6 5F           698         MOV   E,A           ;        SAVE IN E
  919.   66C7 79           699         MOV   A,C           ;   INCR TENS COUNT
  920.   66C8 C601         700         ADI   1
  921.   66CA 4F           701         MOV   C,A
  922.   66CB C3BA66       702         JMP   PUTNM+2       ;  AND LOOP
  923.   66CE 79           703 FRMCH:  MOV   A,C           ;   GET TENS COUNT
  924.   66CF C630         704         ADI   '0'           ;ADD ASCII BIAS
  925.   66D1 FE30         705         CPI   '0'           ;IF CHAR IS 0
  926.   66D3 CAD866       706         JZ    FRMU          ;  THEN FORM UNITS
  927.   66D6 77           707         MOV   M,A           ;   STORE THE CHAR
  928.   66D7 23           708         INX   H             ;BUMP CHAR ADDR
  929.   66D8 7B           709 FRMU:   MOV   A,E           ;      GET THE UNITS
  930.   66D9 C630         710         ADI   '0'           ;ADD ASCII BIAS
  931.   66DB 77           711         MOV   M,A           ;   STORE THE CHAR
  932.   66DC 23           712         INX   H             ;BUMP POINTER
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   18
  940.  
  941.  
  942.   LOC  OBJ         SEQ         SOURCE STATEMENT
  943.  
  944.   66DD 3E0D         713         MVI   A,0DH         ;   STORE EOL
  945.   66DF 77           714         MOV   M,A
  946.   66E0 C9           715         RET
  947.                     716 ;
  948.   66E1 3E2D         717 NEG:    MVI   A,'-'         ;  STORE MINUS SIGN
  949.   66E3 77           718         MOV   M,A
  950.   66E4 23           719         INX   H             ;BUMP CHAR ADDRESS
  951.   66E5 AF           720         XRA   A             ; MAKE BINARY POSITIVE
  952.   66E6 93           721         SUB   E
  953.   66E7 5F           722         MOV   E,A           ;      SAVE IN E
  954.   66E8 C9           723         RET
  955.                     724 ;
  956.                     725 ; LOOK FOR *LABEL OR $NAME OF STRING VARIABLE
  957.                     726 ;   (LOOKL OR LOOKS)
  958.                     727 ;   ENTER: 'WORD'=LABEL TO BE FOUND, HL=SCAN ADDR
  959.                     728 ;   RETURNS: HL = ADDR OF BLANK AFTER LABEL
  960.                     729 ;            IF LABEL NOT FOUND THEN A = 01
  961.                     730 ;
  962.   66E9 AF           731 LOOKS:  XRA   A             ;SET TEMP FOR NO SKIPS
  963.   66EA 324961       732         STA   TEMP
  964.   66ED C3F766       733         JMP   LOOK
  965.   66F0 B4           734 LOOKL:  ORA   H             ;SET TEMP ON FOR SKIPS
  966.   66F1 324961       735         STA   TEMP
  967.   66F4 CD5664       736         CALL  SKLN          ;SKIP ANY LINE NOS.
  968.   66F7 CD7F67       737 LOOK:   CALL  GETCH         ;NEXT CHAR
  969.   66FA FE01         738         CPI   1             ;IF DATA END
  970.   66FC C8           739         RZ                  ;  THEN RETURN
  971.   66FD FE2A         740         CPI   '*'           ;IF *
  972.   66FF CA1567       741         JZ    CHK           ;  THEN CHECK THE LABEL
  973.   6702 FE24         742         CPI   '$'           ;IF $
  974.   6704 CA1567       743         JZ    CHK           ;  THEN CHECK STRING NAME
  975.   6707 CDF067       744         CALL  CNTLN         ;ELSE GO TO NEXT LINE
  976.   670A 23           745         INX   H
  977.   670B 3A4961       746         LDA   TEMP          ;IF TEMP=0
  978.   670E B7           747         ORA   A
  979.   670F CAF766       748         JZ    LOOK          ;  THEN NO SKIPS
  980.   6712 C3F466       749         JMP   LOOK-3        ;ELSE SKIP LN NOS.
  981.   6715 221A61       750 CHK:    SHLD  HLSAV         ;SAVE POINTER
  982.   6718 CD9967       751         CALL  CNTWD         ;C = WORD LENGTH
  983.   671B 79           752         MOV   A,C
  984.   671C FE0D         753         CPI   13            ;LIMIT TO 12 CHARS
  985.   671E FA2367       754         JM    MVLAB
  986.   6721 0E0C         755         MVI   C,12
  987.   6723 2A1A61       756 MVLAB:  LHLD  HLSAV         ;RETRIEVE POINTER
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   19
  995.  
  996.  
  997.   LOC  OBJ         SEQ         SOURCE STATEMENT
  998.  
  999.   6726 113F62       757         LXI   D,LABSAV      ;  DESTIN ADDR
  1000.   6729 CDA76C       758         CALL  BLKTFR        ;MOV   A,BSAV=LABEL
  1001.   672C EB           759         XCHG                ;HL:DESTIN BR CHAR+1
  1002.   672D 2B           760         DCX   H             ;   DESTIN BR CHAR
  1003.   672E 3E0D         761         MVI   A,0DH         ;   REPLACE WITH 0DH
  1004.   6730 77           762         MOV   M,A
  1005.   6731 213F62       763         LXI   H,LABSAV
  1006.   6734 118B62       764         LXI   D,WORD        ;    WORD ADDR
  1007.   6737 CD4E67       765         CALL  CMPR          ;COMPARE THEM
  1008.   673A B7           766         ORA   A             ; LOOK AT A REGISTER
  1009.   673B C24767       767         JNZ   LFND          ;IF MATCH THEN LABEL FOUND
  1010.   673E 2A1A61       768         LHLD  HLSAV         ;ELSE RETRIEVE POINTER
  1011.   6741 CD9967       769         CALL  CNTWD         ;SKIP LABEL
  1012.   6744 C3F766       770         JMP   LOOK          ;  AND CONTINUE
  1013.   6747 2A1A61       771 LFND:   LHLD  HLSAV         ;RETRIEVE POINTER
  1014.   674A CD9967       772         CALL  CNTWD         ;SKIP LABEL
  1015.   674D C9           773         RET                 ;  AND RETURN
  1016.                     774 ;
  1017.                     775 ; COMPARE STRINGS X AND Y
  1018.                     776 ;   ENTER:   HL= X ITEM ADDR, DE= Y ITEM ADDR
  1019.                     777 ;            BOTH ITEMS TERMINATE IN 0DH
  1020.                     778 ;   RETURNS: A=0 FOR NO MATCH,
  1021.                     779 ;            HL AND DE AT 0DH ADDRESS
  1022.                     780 ;
  1023.   674E 7E           781 CMPR:   MOV   A,M           ;   GET X CHAR
  1024.   674F FE0D         782         CPI   0DH           ; IF END OF LINE
  1025.   6751 CA6667       783         JZ    XEND          ;  THEN END OF X ITEM
  1026.   6754 4F           784         MOV   C,A           ;      SAVE X CHAR IN C
  1027.   6755 23           785         INX   H             ;ADDR Y ITEM
  1028.   6756 EB           786         XCHG
  1029.   6757 7E           787         MOV   A,M           ;   GET Y CHAR
  1030.   6758 FE0D         788         CPI   0DH           ; IF END OF LINE
  1031.   675A CA7667       789         JZ    YENDB         ;  THEN END OF Y ITEM
  1032.   675D B9           790         CMP   C             ;IF A(Y) NOT= C(X)
  1033.   675E C27367       791         JNZ   NOMCH         ;THEN NO MATCH
  1034.   6761 23           792         INX   H             ;ADDR NEXT X ITEM
  1035.   6762 EB           793         XCHG
  1036.   6763 C34E67       794         JMP   CMPR          ;START OVER
  1037.   6766 EB           795 XEND:   XCHG                ;ADDR Y ITEM
  1038.   6767 7E           796         MOV   A,M           ;   GET Y CHAR
  1039.   6768 FE0D         797         CPI   0DH           ; IF END OF LINE
  1040.   676A CA7C67       798         JZ    MCH           ;  THEN MATCH FOUND
  1041.   676D CD9967       799         CALL  CNTWD         ;ADDR Y BR CHAR
  1042.   6770 EB           800         XCHG                ;SET DE
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   20
  1050.  
  1051.  
  1052.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1053.  
  1054.   6771 AF           801         XRA   A             ;  NOMATCH
  1055.   6772 C9           802         RET
  1056.   6773 CD9967       803 NOMCH:  CALL  CNTWD         ;ADDR Y BR CHAR
  1057.   6776 EB           804 YENDB:  XCHG                ;  SET DE
  1058.   6777 CD9967       805         CALL  CNTWD         ;ADDR X BR CHAR
  1059.   677A AF           806         XRA   A             ; NO MATCH
  1060.   677B C9           807         RET
  1061.   677C EB           808 MCH:    XCHG                ;SET DE & HL
  1062.   677D B4           809         ORA   H             ; MATCH
  1063.   677E C9           810         RET
  1064.                     811 ;
  1065.                     812 ; GET CHARACTER-- SKIPS LEADING BLANKS
  1066.                     813 ;   ENTER:   HL=SOURCE ADDR
  1067.                     814 ;   RETURNS: HL=NEXT NON-BLANK ADDR, A=CHAR
  1068.                     815 ;
  1069.   677F 7E           816 GETCH:  MOV   A,M           ;   GET CHARACTER
  1070.   6780 FE20         817         CPI   20H           ;IF NOT BLANK
  1071.   6782 C0           818         RNZ                 ;  THEN RETURN
  1072.   6783 23           819         INX   H             ;  ELSE GET NEXT CHAR
  1073.   6784 C37F67       820         JMP   GETCH
  1074.                     821 ;
  1075.                     822 ; GET LAST CHAR - SCANS BACKWARD, SKIPS BLANKS AND CR'S
  1076.                     823 ;   ENTER:   HL = STRING ADDR
  1077.                     824 ;   RETURNS: HL = LAST NON-BLANK CHAR, A = CHAR
  1078.                     825 ;
  1079.   6787 7E           826 GETLCH: MOV   A,M           ;   GET CHARACTER
  1080.   6788 FE20         827         CPI   20H           ;IF NOT BLANK
  1081.   678A C0           828         RNZ                 ;  THEN RETURN
  1082.   678B 2B           829         DCX   H             ;ELSE GET NEXT CHAR
  1083.   678C C38767       830         JMP   GETLCH
  1084.                     831 ;
  1085.                     832 ; GET WORD -- UP TO FIRST BREAK CHARACTER
  1086.                     833 ;            IGNORES LEADING BLANKS
  1087.                     834 ;   ENTER:   HL=SOURCE ADDR
  1088.                     835 ;   RETURNS: 'WORD'=SOURCE STRING + 0DH
  1089.                     836 ;            HL= BR CHAR+1 ADDR, B= BR CHAR
  1090.                     837 ;            DE= 'WORD' ADDR AFTER 0DH
  1091.                     838 ;            C = NO OF CHARS MOVED INCL BR CHAR
  1092.                     839 ;
  1093.   678F CD7F67       840 GETWD:  CALL  GETCH         ;IGNORE LEADING BLANKS
  1094.   6792 118B62       841         LXI   D,WORD        ;  DESTIN ADDR
  1095.   6795 CDA767       842         CALL  WDTFR         ;MOVE IT
  1096.   6798 C9           843         RET
  1097.                     844 ;
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   21
  1105.  
  1106.  
  1107.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1108.  
  1109.                     845 ; COUNT WORD
  1110.                     846 ;   ENTER:   HL=SOURCE ADDR
  1111.                     847 ;   RETURNS: HL=BR CHAR ADDR
  1112.                     848 ;            A,B=BR CHAR, C=COUNT INCL BR CHAR
  1113.                     849 ;
  1114.   6799 0E01         850 CNTWD:  MVI   C,1           ;  COUNT=1
  1115.   679B CD0C68       851         CALL  BRCHAR        ;IF CHAR=BREAK
  1116.   679E C8           852         RZ                  ;  C=CHAR COUNT
  1117.   679F 79           853         MOV   A,C           ;   GET COUNT
  1118.   67A0 C601         854         ADI   1             ;C=C+1
  1119.   67A2 4F           855         MOV   C,A           ;      STORE IT
  1120.   67A3 23           856         INX   H             ;HL=NEXT
  1121.   67A4 C39B67       857         JMP   CNTWD+2       ;NEXT CHAR
  1122.                     858 ;
  1123.                     859 ; WORD TRANSFER
  1124.                     860 ;   MOVES STRING FROM HL TO DE + 0DH ADDED
  1125.                     861 ;   ENTER:   HL= SOURCE ADDR, DE= DESTIN ADDR
  1126.                     862 ;   RETURNS: HL= SOURCE ADDR AFTER BR CHAR
  1127.                     863 ;            DE= DESTIN ADDR AFTER 0DH
  1128.                     864 ;            B= BR CHAR
  1129.                     865 ;            C= NO OF CHARS MOVED INCL BR CHAR
  1130.                     866 ;
  1131.   67A7 0E01         867 WDTFR:  MVI   C,1           ;  INIT COUNT
  1132.   67A9 CD0C68       868         CALL  BRCHAR        ;IF BREAK CHAR
  1133.   67AC CABB67       869         JZ    MVBR          ;  THEN END OF SOURCE
  1134.   67AF 23           870         INX   H             ;HL= DESTIN ADDR
  1135.   67B0 EB           871         XCHG
  1136.   67B1 70           872         MOV   M,B           ;   MOVE CHARACTER
  1137.   67B2 79           873         MOV   A,C           ;   INCR COUNT
  1138.   67B3 C601         874         ADI   1
  1139.   67B5 4F           875         MOV   C,A
  1140.   67B6 23           876         INX   H             ;HL= NEXT SOURCE ADDR
  1141.   67B7 EB           877         XCHG
  1142.   67B8 C3A967       878         JMP   WDTFR+2
  1143.   67BB 23           879 MVBR:   INX   H             ;HL= DESTIN BR CHAR ADDR
  1144.   67BC EB           880         XCHG
  1145.   67BD 3E0D         881         MVI   A,0DH         ;   REPLACE WITH 0DH
  1146.   67BF 77           882         MOV   M,A
  1147.   67C0 23           883         INX   H             ;HL= SOURCE BR CHAR ADDR+1
  1148.   67C1 EB           884         XCHG
  1149.   67C2 AF           885         XRA   A             ; SET RETURN FLAG
  1150.   67C3 C9           886         RET
  1151.                     887 ;
  1152.                     888 ; GET CONTROL WORD IN 'WORD'
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   22
  1160.  
  1161.  
  1162.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1163.  
  1164.                     889 ;   REPLACES FINAL Y OR N WITH 0DH
  1165.                     890 ;   ENTER:   HL = SOURCE ADDR
  1166.                     891 ;
  1167.   67C4 118B62       892 GETCTL: LXI   D,WORD        ;  DESTIN ADDR
  1168.   67C7 CDA767       893         CALL  WDTFR         ;MOVE WORD
  1169.   67CA 79           894         MOV   A,C           ;   GET COUNT
  1170.   67CB FE03         895         CPI   3             ;IF < 3 CHARS MOVED
  1171.   67CD F8           896         RM                  ;  THEN RETURN
  1172.   67CE 62           897         MOV   H,D           ;   ADDR WORD
  1173.   67CF 6B           898         MOV   L,E
  1174.   67D0 2B           899         DCX   H             ;AVOID COLON
  1175.   67D1 2B           900         DCX   H
  1176.   67D2 CD8767       901         CALL  GETLCH        ;GET LAST CHAR
  1177.   67D5 FE59         902         CPI   'Y'           ;IF Y
  1178.   67D7 CADD67       903         JZ    YNOUT         ;  THEN REMOVE IT
  1179.   67DA FE4E         904         CPI   'N'           ;IF NOT N
  1180.   67DC C0           905         RNZ                 ;  THEN RETURN
  1181.   67DD 3E0D         906 YNOUT:  MVI   A,0DH         ;   REPLACE Y OR N
  1182.   67DF 77           907         MOV   M,A           ;     WITH 0DH
  1183.   67E0 C9           908         RET
  1184.                     909 ;
  1185.                     910 ; SAVE OP CODE THROUGH COLON IN LASTOP
  1186.                     911 ;
  1187.   67E1 063A         912 SAVOP:  MVI   B,':'
  1188.   67E3 CD8A68       913         CALL  INDX          ;COUNT CHARS TO COLON
  1189.   67E6 2A2261       914         LHLD  LLSAV         ;ADDR OP CODE
  1190.   67E9 114B62       915         LXI   D,LASTOP
  1191.   67EC CDA76C       916         CALL  BLKTFR        ;MOVE CHAR STRING
  1192.   67EF C9           917         RET
  1193.                     918 ;
  1194.                     919 ; COUNT LINE
  1195.                     920 ;   ENTER:   HL=SOURCE ADDR
  1196.                     921 ;   RETURNS: C=CHAR COUNT INCL 0DH OR 01
  1197.                     922 ;            HL=BREAK POS., A=BR CHAR
  1198.                     923 ;
  1199.   67F0 0E01         924 CNTLN:  MVI   C,1           ;  COUNT=1
  1200.   67F2 7E           925         MOV   A,M           ;   GET CHARACTER
  1201.   67F3 FE0D         926         CPI   0DH           ; IF 0DH
  1202.   67F5 C8           927         RZ                  ;   C=CHAR COUNT
  1203.   67F6 FE01         928         CPI   1             ;IF 01
  1204.   67F8 C8           929         RZ                  ;  C=CHAR COUNT
  1205.   67F9 79           930         MOV   A,C           ;   GET COUNT
  1206.   67FA C601         931         ADI   1             ;C=C+1
  1207.   67FC 4F           932         MOV   C,A           ;      STORE IT
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   23
  1215.  
  1216.  
  1217.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1218.  
  1219.   67FD 23           933         INX   H             ;HL=NEXT
  1220.   67FE C3F267       934         JMP   CNTLN+2       ;NEXT CHAR
  1221.                     935 ;
  1222.                     936 ; BACKUP-- DECREMENTS HL BY VALUE OF C-1
  1223.                     937 ;   ENTER:   HL START VALUE, C=COUNT
  1224.                     938 ;   RETURNS: NEW HL VALUE
  1225.                     939 ;
  1226.   6801 79           940 BACKUP: MOV   A,C           ;   GET COUNT
  1227.   6802 FE01         941         CPI   1             ;IF COUNT=1
  1228.   6804 C8           942         RZ                  ;  THEN RETURN
  1229.   6805 D601         943         SUI   1             ;C=C-1
  1230.   6807 4F           944         MOV   C,A           ;      STORE C
  1231.   6808 2B           945         DCX   H             ;HL=HL-1
  1232.   6809 C30168       946         JMP   BACKUP
  1233.                     947 ;
  1234.                     948 ; BREAK CHARACTER SEARCH
  1235.                     949 ;   ENTER:   HL=CHAR ADDR
  1236.                     950 ;   RETURNS: A, B = CHARACTER
  1237.                     951 ;            IF BR CHAR THEN Z FLAG TRUE
  1238.                     952 ;
  1239.   680C 7E           953 BRCHAR: MOV   A,M           ;   GET CHAR
  1240.   680D 47           954         MOV   B,A           ;   AND SAVE IT
  1241.   680E FE20         955         CPI   ' '           ;CHECK FOR VARIOUS
  1242.   6810 C8           956         RZ                  ;BREAK CHARACTERS
  1243.   6811 FE0D         957         CPI   0DH           ;   END OF LINE
  1244.   6813 C8           958         RZ
  1245.   6814 FE2C         959         CPI   ','
  1246.   6816 C8           960         RZ
  1247.   6817 FE3B         961         CPI   ';'
  1248.   6819 C8           962         RZ
  1249.   681A FE3A         963         CPI   ':'
  1250.   681C C8           964         RZ
  1251.   681D FE2E         965         CPI   '.'
  1252.   681F C8           966         RZ
  1253.   6820 FE3F         967         CPI   '?'
  1254.   6822 C8           968         RZ
  1255.   6823 FE21         969         CPI   21H           ;EXCLAMATION
  1256.   6825 C8           970         RZ
  1257.   6826 FE22         971         CPI   '"'           ;DOUBLE QUOTE
  1258.   6828 C8           972         RZ
  1259.   6829 FE28         973         CPI   '('           ;L PARENS
  1260.   682B C8           974         RZ
  1261.   682C FE29         975         CPI   ')'           ;R PARENS
  1262.   682E C8           976         RZ
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   24
  1270.  
  1271.  
  1272.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1273.  
  1274.   682F FE27         977         CPI   27H           ;APOSTROPHE
  1275.   6831 C8           978         RZ
  1276.   6832 FE01         979         CPI   1             ;END OF LIST
  1277.   6834 C9           980         RET                 ;BR CHAR NOT FOUND
  1278.                     981 ;
  1279.                     982 ; INDEX - FIND CHAR POSITION OF MATCHED STRING
  1280.                     983 ;    ENTER: HLSAV = STRING ADDR, HLLSAVE = SUBSTR ADDR
  1281.                     984 ;    RETURNS: C = CHAR POS OF MATCH, IF NOMATCH, C=0
  1282.                     985 ;             HLSAV = STRING ADDR OF FIRST MATCHED CHAR
  1283.                     986 ;             EPTR = ADDR OF NEXT CHAR AFTER MATCH
  1284.                     987 ;
  1285.   6835 AF           988 INDEX:  XRA   A
  1286.   6836 324861       989         STA   SCNT          ;INIT STRING COUNT
  1287.   6839 2A1A61       990 INDE2:  LHLD  HLSAV         ;ADDR STRING
  1288.   683C EB           991         XCHG                ;DE = STRING ADDR
  1289.   683D 2A1C61       992         LHLD  HLLSAV        ;ADDR SUBSTRING
  1290.   6840 46           993         MOV   B,M           ;FIRST SUBSTR CHAR IN B
  1291.   6841 23           994         INX   H             ;ADDR STRING
  1292.   6842 EB           995         XCHG
  1293.   6843 CD8A68       996         CALL  INDX          ;LOOK FOR FIRST CHAR
  1294.   6846 79           997         MOV   A,C
  1295.   6847 B7           998         ORA   A             ; IF NOT FOUND
  1296.   6848 C8           999         RZ                  ;  THEN RETURN
  1297.   6849 221A61      1000         SHLD  HLSAV         ;  ELSE SAVE POINTER
  1298.   684C 3A4861      1001         LDA   SCNT          ;GET OLD STRING COUNT
  1299.   684F 81          1002         ADD   C             ;ADD NEW COUNT
  1300.   6850 324861      1003         STA   SCNT          ;  IN SCNT
  1301.   6853 2A1C61      1004         LHLD  HLLSAV        ;ADDR SUBSTR
  1302.   6856 CDF067      1005         CALL  CNTLN         ;COUNT SUBSTR CHARS
  1303.   6859 79          1006         MOV   A,C           ;   REDUCE COUNT TO
  1304.   685A D601        1007         SUI   1             ;  ALPHA CHARS
  1305.   685C 4F          1008         MOV   C,A
  1306.   685D 118B62      1009         LXI   D,WORD        ;  MOVE SAME NUMBER OF
  1307.   6860 2A1A61      1010         LHLD  HLSAV         ;  CHARS FROM STRING
  1308.   6863 CDA76C      1011         CALL  BLKTFR        ;  TO 'WORD'
  1309.   6866 223661      1012         SHLD  EPTR          ;SAVE NEXT CHAR ADDR
  1310.   6869 EB          1013         XCHG                ;ADDR END OF 'WORD'
  1311.   686A 3E0D        1014         MVI   A,0DH         ;   TERMINATE WITH 0DH
  1312.   686C 77          1015         MOV   M,A
  1313.   686D 2A1C61      1016         LHLD  HLLSAV        ;ADDR SUBSTR
  1314.   6870 EB          1017         XCHG                ;DE = SUBSTR ADDR
  1315.   6871 218B62      1018         LXI   H,WORD        ;  ADDR PORTION OF STRING
  1316.   6874 CD4E67      1019         CALL  CMPR          ;COMPARE THEM
  1317.   6877 B7          1020         ORA   A             ; IF FOUND
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   25
  1325.  
  1326.  
  1327.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1328.  
  1329.   6878 C28568      1021         JNZ   SETCNT        ;  THEN SET POSITION COUNT
  1330.   687B 2A1A61      1022         LHLD  HLSAV         ;  ELSE GET STRING POINTER
  1331.   687E 23          1023         INX   H             ;  BUMP IT
  1332.   687F 221A61      1024         SHLD  HLSAV         ;  SAVE IT
  1333.   6882 C33968      1025         JMP   INDE2         ;  AND TRY AGAIN
  1334.   6885 214861      1026 SETCNT: LXI   H,SCNT        ;  PUT STRING COUNT IN C
  1335.   6888 4E          1027         MOV   C,M
  1336.   6889 C9          1028         RET                 ;    AND RETURN
  1337.                    1029 ;
  1338.                    1030 ; INDX - FIND CHARACTER POSITION OF SINGLE LETTER
  1339.                    1031 ;    ENTER:    HL = STRING ADDR, B= CHAR
  1340.                    1032 ;    RETURNS:  C = CHAR POS OF MATCH, IF NOMATCH, C=0
  1341.                    1033 ;              HL = ADDR OF MATCHED CHAR OR EOL
  1342.                    1034 ;
  1343.   688A 0E01        1035 INDX:   MVI   C,1           ;  INIT C REGISTER
  1344.   688C 7E          1036         MOV   A,M           ;   GET CHAR
  1345.   688D B8          1037         CMP   B             ;IF B-CHAR FOUND
  1346.   688E C8          1038         RZ                  ;  THEN RETURN
  1347.   688F FE0D        1039         CPI   0DH           ; IF END OF LINE
  1348.   6891 CA9C68      1040         JZ    ZC            ;  THEN ZERO COUNT
  1349.   6894 79          1041         MOV   A,C           ;     ELSE
  1350.   6895 C601        1042         ADI   1             ;  BUMP COUNT
  1351.   6897 4F          1043         MOV   C,A
  1352.   6898 23          1044         INX   H             ;  BUMP ADDR
  1353.   6899 C38C68      1045         JMP   INDX+2        ;  GO TO NEXT
  1354.   689C AF          1046 ZC:     XRA   A             ; RETURN WITH
  1355.   689D 4F          1047         MOV   C,A           ;        C = 0
  1356.   689E C9          1048         RET
  1357.                    1049 ;
  1358.                    1050 ; SINDX - SPECIAL INDEX FOR POSITION OF $ OR #
  1359.                    1051 ;    ENTER:   HL = STRING ADDRESS
  1360.                    1052 ;    RETURNS: BA = $, #, OR 0DH;  C = CHAR POS
  1361.                    1053 ;             HL = ADDR OF MATCHED CHAR
  1362.                    1054 ;
  1363.   689F 0E01        1055 SINDX:  MVI   C,1           ;  INIT C REGISTER
  1364.   68A1 7E          1056         MOV   A,M           ;   GET CHAR
  1365.   68A2 FE24        1057         CPI   '$'           ;IF $
  1366.   68A4 C8          1058         RZ                  ;  THEN RETURN
  1367.   68A5 FE23        1059         CPI   043O          ;IF #
  1368.   68A7 C8          1060         RZ                  ;  THEN RETURN
  1369.   68A8 FE0D        1061         CPI   0DH           ; IF EOL
  1370.   68AA C8          1062         RZ                  ;  THEN RETURN
  1371.   68AB 79          1063         MOV   A,C           ;   ELSE
  1372.   68AC C601        1064         ADI   1             ;BUMP COUNT
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   26
  1380.  
  1381.  
  1382.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1383.  
  1384.   68AE 4F          1065         MOV   C,A
  1385.   68AF 23          1066         INX   H             ;BUMP ADDR
  1386.   68B0 C3A168      1067         JMP   SINDX+2       ;GO TO NEXT
  1387.                    1068 ;
  1388.                    1069 ; LETTER TESTS WHETHER CHARACTER IS UPCASE A-Z
  1389.                    1070 ;    ENTER:   HL = ADDR OF CHAR
  1390.                    1071 ;    RETURNS: ZERO FLAG TRUE IF IT IS
  1391.                    1072 ;             B = CHARACTER
  1392.                    1073 ;
  1393.   68B3 7E          1074 LETTER: MOV   A,M           ;   GET CHAR
  1394.   68B4 46          1075         MOV   B,M           ;   SAVE IN B
  1395.   68B5 FE41        1076         CPI   41H           ;CHECK RANGE
  1396.   68B7 FAC168      1077         JM    NOTL          ;TOO LOW?
  1397.   68BA FE5A        1078         CPI   5AH
  1398.   68BC F2C168      1079         JP    NOTL          ;TOO HIGH?
  1399.   68BF AF          1080         XRA   A             ;   ELSE RESET ZERO FLAG
  1400.   68C0 C9          1081         RET                 ;  AND RETURN IF LETTER
  1401.   68C1 B4          1082 NOTL:   ORA   H             ; RETURN IF NOT LETTER
  1402.   68C2 C9          1083         RET
  1403.                    1084 ;
  1404.                    1085 ; SETUP GETS CHAR COUNT AND SETS ADDR FOR TEXT MOVES
  1405.                    1086 ;
  1406.   68C3 CDF067      1087 SETUP:  CALL  CNTLN         ;C=CHAR COUNT
  1407.   68C6 41          1088         MOV   B,C           ;   SAVE COUNT
  1408.   68C7 CD0168      1089         CALL  BACKUP        ;RESET HL
  1409.   68CA 48          1090         MOV   C,B           ;   RESET COUNT
  1410.   68CB C9          1091         RET
  1411.                    1092 ;
  1412.                    1093 ; T OPERATION--DISPLAY 'T' STATEMENT
  1413.                    1094 ;   ENTER:   HLSAV= FIRST CHAR OF T EXPRESSION FIELD
  1414.                    1095 ;
  1415.   68CC 2A1A61      1096 TOP:    LHLD  HLSAV         ;RETRIEVE POINTER
  1416.   68CF 223861      1097         SHLD  CPTR          ;SAVE CHAR POINTER
  1417.   68D2 222261      1098         SHLD  LLSAV         ;SAVE FIRST CHAR ADDR
  1418.   68D5 214C61      1099         LXI   H,TSAVE       ;  DESTIN START ADDR
  1419.   68D8 222061      1100         SHLD  DESAV         ;SAVE DESTIN ADDR
  1420.   68DB EB          1101         XCHG                ;AND KEEP IN DE
  1421.   68DC 2A3861      1102 TMORE:  LHLD  CPTR          ;GET CHAR POINTER
  1422.   68DF CD9F68      1103         CALL  SINDX         ;LOOK FOR $ OR #
  1423.   68E2 FE24        1104         CPI   '$'           ;IF $ FOUND
  1424.   68E4 CAEF68      1105         JZ    GETXT         ;  THEN GET LABELED TEXT
  1425.   68E7 FE23        1106         CPI   043O          ;IF # FOUND
  1426.   68E9 CA0069      1107         JZ    GETNUM        ;  THEN GET NUMBER
  1427.   68EC C30669      1108         JMP   TMOVE         ;ELSE MOVE REST OF TEXT
  1428.  
  1429.  
  1430.  
  1431.  
  1432.  
  1433.  
  1434. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   27
  1435.  
  1436.  
  1437.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1438.  
  1439.   68EF CD6469      1109 GETXT:  CALL  INSERT        ;INSERT TEXT
  1440.   68F2 FE01        1110         CPI   1             ;IF FOUND (A NOT 01)
  1441.   68F4 C2DC68      1111         JNZ   TMORE         ;  THEN CONTINUE
  1442.   68F7 114C61      1112         LXI   D,TSAVE       ;  ELSE DISPLAY THE LINE
  1443.   68FA 2A2261      1113         LHLD  LLSAV
  1444.   68FD C30D69      1114         JMP   TALL
  1445.   6900 CD1F69      1115 GETNUM: CALL  INSNUM        ;INSERT NUMBER
  1446.   6903 C3F268      1116         JMP   GETXT+3       ;  AND SEE IF FOUND
  1447.   6906 2A2061      1117 TMOVE:  LHLD  DESAV         ;DESTIN ADDR
  1448.   6909 EB          1118         XCHG
  1449.   690A 2A3861      1119         LHLD  CPTR          ;ADDRESS INPUT
  1450.   690D CDC368      1120 TALL:   CALL  SETUP         ;C = CHAR COUNT
  1451.   6910 CDA76C      1121         CALL  BLKTFR        ;MOVE T-TEXT
  1452.   6913 3E0D        1122         MVI   A,0DH         ;   TERMINATE
  1453.   6915 EB          1123         XCHG
  1454.   6916 77          1124         MOV   M,A
  1455.   6917 214C61      1125         LXI   H,TSAVE       ;  ADDRESS TEXT
  1456.   691A CD9C6D      1126         CALL  DSPLY         ;DISPLAY T STATEMENT
  1457.   691D AF          1127         XRA   A             ; SET RETURN FLAG
  1458.   691E C9          1128         RET
  1459.                    1129 ;
  1460.                    1130 ; INSERT NUMERIC VALUE INTO T-STATEMENT
  1461.                    1131 ;    ENTER:   C = POSITION OF '#'
  1462.                    1132 ;    RETURNS: TSAVE CONTAINS ASSEMBLED T-TEXT
  1463.                    1133 ;             IF LABEL NOT FOUND, THEN A = 01
  1464.                    1134 ;
  1465.   691F 79          1135 INSNUM: MOV   A,C           ;   GET POSITION OF #
  1466.   6920 D601        1136         SUI   1             ;REDUCE COUNT BY 1
  1467.   6922 CA3069      1137         JZ    VBL           ;IF 0 THEN GET VARIABLE
  1468.   6925 4F          1138         MOV   C,A
  1469.   6926 2A2061      1139         LHLD  DESAV         ;DESTIN ADDR
  1470.   6929 EB          1140         XCHG
  1471.   692A 2A3861      1141         LHLD  CPTR          ;GET CHAR POINTER
  1472.   692D CDA76C      1142         CALL  BLKTFR        ;MOVE FRONT OF TEXT
  1473.   6930 44          1143 VBL:    MOV   B,H
  1474.   6931 4D          1144         MOV   C,L
  1475.   6932 EB          1145         XCHG
  1476.   6933 222061      1146         SHLD  DESAV         ;SAVE DESTIN POINTER
  1477.   6936 60          1147         MOV   H,B           ;   GET CHAR POINTER
  1478.   6937 69          1148         MOV   L,C
  1479.   6938 23          1149         INX   H             ;BUMP TO VAR NAME
  1480.   6939 4E          1150         MOV   C,M           ;   SAVE NAME IN C
  1481.   693A 23          1151         INX   H             ;BUMP ADDR
  1482.   693B 223861      1152         SHLD  CPTR          ;SAVE CHAR POINTER
  1483.  
  1484.  
  1485.  
  1486.  
  1487.  
  1488.  
  1489. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   28
  1490.  
  1491.  
  1492.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1493.  
  1494.   693E 41          1153         MOV   B,C           ;   PUT VAR NAME IN B
  1495.   693F CDB464      1154         CALL  VARMCH        ;LOOK UP VAR NAME
  1496.   6942 FE01        1155         CPI   1             ;IF NOT FOUND (A = 01)
  1497.   6944 C8          1156         RZ                  ;  THEN RETURN
  1498.   6945 23          1157         INX   H             ;ELSE POINT AT VALUE
  1499.   6946 5E          1158         MOV   E,M           ;   GET VALUE IN E
  1500.   6947 218B62      1159         LXI   H,WORD        ;  PUT DIGITS IN WORD
  1501.   694A CDB866      1160         CALL  PUTNM
  1502.   694D 2A2061      1161         LHLD  DESAV         ;DESTIN ADDR
  1503.   6950 EB          1162         XCHG
  1504.   6951 218B62      1163         LXI   H,WORD        ;  DIGIT CHAR ADDR
  1505.   6954 CDC368      1164         CALL  SETUP         ;C = CHAR COUNT+1
  1506.   6957 79          1165         MOV   A,C
  1507.   6958 D601        1166         SUI   1
  1508.   695A 4F          1167         MOV   C,A           ;      C = CHAR COUNT
  1509.   695B CDA76C      1168         CALL  BLKTFR        ;MOVE DIGITS
  1510.   695E EB          1169         XCHG
  1511.   695F 222061      1170         SHLD  DESAV         ;SAVE DESTIN ADDR
  1512.   6962 AF          1171         XRA   A             ; SET RETURN FLAG
  1513.   6963 C9          1172         RET
  1514.                    1173 ;
  1515.                    1174 ; INSERT LABELED TEXT INTO T-STATEMENT
  1516.                    1175 ;    ENTER:   C = POSITION OF '$'
  1517.                    1176 ;    RETURNS: TSAVE CONTAINS ASSEMBLED T-TEXT
  1518.                    1177 ;             IF LABEL NOT FOUND, THEN A = 01
  1519.                    1178 ;
  1520.   6964 79          1179 INSERT: MOV   A,C           ;   GET POSITION COUNT
  1521.   6965 D601        1180         SUI   1             ;REDUCE COUNT BY 1
  1522.   6967 CA7569      1181         JZ    LBL           ;IF 0 THEN POINT TO LABEL
  1523.   696A 4F          1182         MOV   C,A
  1524.   696B 2A2061      1183         LHLD  DESAV         ;DESTIN ADDR
  1525.   696E EB          1184         XCHG
  1526.   696F 2A3861      1185         LHLD  CPTR          ;GET CHAR POINTER
  1527.   6972 CDA76C      1186         CALL  BLKTFR        ;MOVE FRONT OF TEXT
  1528.   6975 44          1187 LBL:    MOV   B,H           ; SAVE CHAR POINTER IN BC
  1529.   6976 4D          1188         MOV   C,L
  1530.   6977 EB          1189         XCHG
  1531.   6978 222061      1190         SHLD  DESAV         ;SAVE DESTIN POINTER
  1532.   697B 60          1191         MOV   H,B           ;   GET CHAR POINTER
  1533.   697C 69          1192         MOV   L,C
  1534.   697D CD8F67      1193         CALL  GETWD         ;GET LABEL
  1535.   6980 2B          1194         DCX   H             ;ADDR BR CHAR
  1536.   6981 223861      1195         SHLD  CPTR          ;SAVE CHAR POINTER
  1537.   6984 2A3461      1196         LHLD  APTR          ;HL = START OF LIST
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   29
  1545.  
  1546.  
  1547.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1548.  
  1549.   6987 23          1197         INX   H
  1550.   6988 CDE966      1198         CALL  LOOKS         ;LOOK FOR STRING NAME
  1551.   698B FE01        1199         CPI   1             ;IF NOT FOUND (A = 01)
  1552.   698D C8          1200         RZ                  ;  THEN RETURN
  1553.   698E CD9269      1201         CALL  GETA          ;  ELSE GET A-TEXT
  1554.   6991 C9          1202         RET
  1555.                    1203 ;
  1556.                    1204 ; GET A-TEXT POINTED TO BY MATCHED LABEL
  1557.                    1205 ;    ENTER:   HL = BLANK AFTER MATCHED LABEL
  1558.                    1206 ;             DESAV = DESTIN ADDRESS
  1559.                    1207 ;    RETURNS: A-TEXT MOVED TO DESTINATION
  1560.                    1208 ;             DESAV = NEXT DESTIN ADDRESS
  1561.                    1209 ;
  1562.   6992 23          1210 GETA:   INX   H             ;ADDR FIRST A-CHAR
  1563.   6993 44          1211         MOV   B,H           ;   BC = A-TEXT ADDR
  1564.   6994 4D          1212         MOV   C,L
  1565.   6995 2A2061      1213         LHLD  DESAV         ;DESTIN ADDR
  1566.   6998 EB          1214         XCHG
  1567.   6999 60          1215         MOV   H,B           ;   HL = A-TEXT ADDR
  1568.   699A 69          1216         MOV   L,C
  1569.   699B CDC368      1217         CALL  SETUP         ;C = CHAR COUNT
  1570.   699E 79          1218         MOV   A,C           ;   REDUCE COUNT TO
  1571.   699F D601        1219         SUI   1             ;  EXCLUDE MOVE OF 0DH
  1572.   69A1 4F          1220         MOV   C,A
  1573.   69A2 CDA76C      1221         CALL  BLKTFR        ;MOVE A-TEXT
  1574.   69A5 EB          1222         XCHG
  1575.   69A6 222061      1223         SHLD  DESAV         ;SAVE DESTIN POINTER
  1576.   69A9 AF          1224         XRA   A             ; SET RETURN FLAG
  1577.   69AA C9          1225         RET
  1578.                    1226 ;
  1579.                    1227 ; A OPERATION-- ACCEPT INPUT
  1580.                    1228 ;   ENTER:    HLSAV = ADDR AFTER COLON
  1581.                    1229 ;   RETURNS:  INPUT IN EBUFF
  1582.                    1230 ;   'CTL Z' ALLOWS SINGLE STATEMENT EXECUTION OR QUIT
  1583.                    1231 ;
  1584.   69AB 2A1A61      1232 AOP:    LHLD  HLSAV         ;ADDR EXPRESSION
  1585.   69AE CD7F67      1233         CALL  GETCH         ;GET FIRST CHAR
  1586.   69B1 FE24        1234         CPI   '$'           ;IF NOT $
  1587.   69B3 C2C369      1235         JNZ   NIN           ;  THEN LOOK FOR #
  1588.   69B6 113F62      1236         LXI   D,LABSAV      ;  ELSE ADDR DESTIN
  1589.   69B9 CDA767      1237         CALL  WDTFR         ;  SAVE THE LABEL
  1590.   69BC CDDB69      1238         CALL  ENTRY         ;GET THE ENTRY
  1591.   69BF CD066A      1239         CALL  ASTORE        ;  STORE IT
  1592.   69C2 C9          1240         RET                 ;  THEN EXIT
  1593.  
  1594.  
  1595.  
  1596.  
  1597.  
  1598.  
  1599. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   30
  1600.  
  1601.  
  1602.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1603.  
  1604.   69C3 FE23        1241 NIN:    CPI   043O          ;IF NOT #
  1605.   69C5 C2D769      1242         JNZ   CENT          ;  THEN CALL ENTRY
  1606.   69C8 23          1243         INX   H             ;ELSE ADDR VARIABLE
  1607.   69C9 7E          1244         MOV   A,M           ;   GET THE NAME
  1608.   69CA 324A61      1245         STA   VARSAV        ;AND SAVE IT
  1609.   69CD CDDB69      1246         CALL  ENTRY         ;GET THE ENTRY
  1610.   69D0 CDF269      1247         CALL  CKNUM         ;REQUIRE NUMERIC
  1611.   69D3 CD586A      1248         CALL  NSTORE        ;  STORE THE NUMBER
  1612.   69D6 C9          1249         RET                 ;THEN EXIT
  1613.   69D7 CDDB69      1250 CENT:   CALL  ENTRY
  1614.   69DA C9          1251         RET
  1615.                    1252 ;
  1616.   69DB CDB86C      1253 ENTRY:  CALL  KEYIN         ;GET ONE LINE IN EBUFF
  1617.   69DE 219D61      1254         LXI   H,EBUFF       ;IF ENTRY NOT CTL Z
  1618.   69E1 7E          1255         MOV   A,M
  1619.   69E2 FE1A        1256         CPI   1AH
  1620.   69E4 C0          1257         RNZ                 ;THEN RETURN
  1621.   69E5 23          1258         INX   H             ;ELSE BUMP POINTER
  1622.   69E6 7E          1259         MOV   A,M           ;GET CHAR
  1623.   69E7 FE0D        1260         CPI   0DH           ;IF CR
  1624.   69E9 CA0F63      1261         JZ    RSTRT         ;  THEN RESTART
  1625.   69EC CDAA63      1262         CALL  OPS           ;ELSE DO IMMED OP
  1626.   69EF C3DB69      1263         JMP   ENTRY         ;  AND ACCEPT MORE INPUT
  1627.                    1264 ;
  1628.   69F2 FE30        1265 CKNUM:  CPI   '0'           ;CHECK FOR NUMBER
  1629.   69F4 FAFA69      1266         JM    NERR          ;TOO LOW
  1630.   69F7 FE3A        1267         CPI   '9'+1
  1631.   69F9 F8          1268         RM                  ;MUST BE NUMBER
  1632.   69FA 219D6E      1269 NERR:   LXI   H,NMSG        ;OUT OF RANGE
  1633.   69FD CD316E      1270         CALL  ERROR         ;SEND MESSAGE
  1634.   6A00 CDDB69      1271         CALL  ENTRY         ;TRY AGAIN
  1635.   6A03 C3F269      1272         JMP   CKNUM
  1636.                    1273 ;
  1637.                    1274 ; A ITEM STORE - STORAGE OF LABELED TEXT FROM ENTRY
  1638.                    1275 ;    FROM TOP OF INPUT BUFFER AREA AND SETS POINTER
  1639.                    1276 ;
  1640.   6A06 219D61      1277 ASTORE: LXI   H,EBUFF       ;  SOURCE ADDR
  1641.   6A09 CDF067      1278         CALL  CNTLN         ;C = CHAR COUNT
  1642.   6A0C 41          1279         MOV   B,C           ;   DUPL COUNT IN B
  1643.   6A0D 2A3461      1280         LHLD  APTR          ;LAST A-ADDR
  1644.   6A10 CD396A      1281         CALL  DECA          ;BACK UP DESTIN ADDRESS
  1645.   6A13 79          1282         MOV   A,C           ;   IF CHAR COUNT = 0
  1646.   6A14 B7          1283         ORA   A
  1647.   6A15 C8          1284         RZ                  ;  THEN RETURN
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   31
  1655.  
  1656.  
  1657.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1658.  
  1659.   6A16 219D61      1285         LXI   H,EBUFF       ;  SOURCE ADDR
  1660.   6A19 CDA76C      1286         CALL  BLKTFR        ;MOVE TEXT
  1661.   6A1C 213F62      1287         LXI   H,LABSAV      ;  ADDR LABEL
  1662.   6A1F CDF067      1288         CALL  CNTLN         ;C = CHAR COUNT
  1663.   6A22 41          1289         MOV   B,C           ;   DUPL COUNT IN B
  1664.   6A23 2A3461      1290         LHLD  APTR          ;GET A-POINTER
  1665.   6A26 CD396A      1291         CALL  DECA          ;BACK UP ADDR
  1666.   6A29 79          1292         MOV   A,C           ;   IF CHAR COUNT = 0
  1667.   6A2A B7          1293         ORA   A
  1668.   6A2B C8          1294         RZ                  ;  THEN RETURN
  1669.   6A2C 213F62      1295         LXI   H,LABSAV      ;  SOURCE ADDR
  1670.   6A2F CDA76C      1296         CALL  BLKTFR        ;MOVE THE LABEL
  1671.   6A32 6B          1297         MOV   L,E           ;   ADDR A-TEXT
  1672.   6A33 62          1298         MOV   H,D
  1673.   6A34 2B          1299         DCX   H             ;BACK UP ONE CHAR
  1674.   6A35 3E20        1300         MVI   A,' '         ;AND SET
  1675.   6A37 77          1301         MOV   M,A           ;     BLANK THERE
  1676.   6A38 C9          1302         RET
  1677.                    1303 ;
  1678.                    1304 ; DECREMENT ADDRESS FOR TEXT STORAGE
  1679.                    1305 ;    ENTER:  HL = LAST (LOWEST) ADDRESS USED (01)
  1680.                    1306 ;            B & C = CHAR COUNT IN WORD TO BE MOVED
  1681.                    1307 ;    RETURNS:DE = DESTIN ADDR,  C = CHAR COUNT
  1682.                    1308 ;       APTR POINTS AT STOP(01) BELOW LIST
  1683.                    1309 ;
  1684.   6A39 5D          1310 DECA:   MOV   E,L           ;DESTIN ADDR IN DE
  1685.   6A3A 54          1311         MOV   D,H
  1686.   6A3B 2B          1312         DCX   H             ;DECR POINTER
  1687.   6A3C 7E          1313         MOV   A,M           ;   GET CHARACTER
  1688.   6A3D FE01        1314         CPI   1             ;IF 01 (END OF SPACE)
  1689.   6A3F CA4F6A      1315         JZ    STOVF         ;  THEN STORAGE OVERFLOW
  1690.   6A42 78          1316         MOV   A,B           ;      DECR COUNT
  1691.   6A43 D601        1317         SUI   1
  1692.   6A45 47          1318         MOV   B,A
  1693.   6A46 C2396A      1319         JNZ   DECA          ;BACK UP AGAIN?
  1694.   6A49 223461      1320         SHLD  APTR          ;SAVE A-POINTER
  1695.   6A4C 3601        1321         MVI   M,1           ;SET STOP
  1696.   6A4E C9          1322         RET
  1697.                    1323 ;
  1698.   6A4F 21526E      1324 STOVF:  LXI   H,NRMSG       ;  COMPLAIN OF OVERFLOW
  1699.   6A52 CD316E      1325         CALL  ERROR
  1700.   6A55 0E00        1326         MVI   C,0           ;  SET CHAR COUNT = 0
  1701.   6A57 C9          1327         RET
  1702.                    1328 ;
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   32
  1710.  
  1711.  
  1712.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1713.  
  1714.                    1329 ; NUMBER STORAGE - STORAGE OF NUMERIC VALUE FROM ENTRY
  1715.                    1330 ;             AS VALUE OF VARIABLE NAME IN A-STATEMENT
  1716.                    1331 ;
  1717.   6A58 219D61      1332 NSTORE: LXI   H,EBUFF       ;  SOURCE ADDR
  1718.   6A5B CD7F67      1333         CALL  GETCH         ;ADDR 1ST CHAR
  1719.   6A5E CD8466      1334         CALL  GETNM         ;GET THE NUMBER
  1720.   6A61 214A61      1335         LXI   H,VARSAV      ;  GET THE NAME IN B
  1721.   6A64 46          1336         MOV   B,M
  1722.   6A65 CDB464      1337         CALL  VARMCH        ;LOOK IT UP
  1723.   6A68 FE01        1338         CPI   1             ;IF END MARKER
  1724.   6A6A CCA764      1339         CZ    BADFRM        ;THEN COMPLAIN
  1725.   6A6D C8          1340         RZ                  ;  AND RETURN
  1726.   6A6E 23          1341         INX   H             ;  ELSE BUMP TO NEXT
  1727.   6A6F 73          1342         MOV   M,E
  1728.   6A70 C9          1343         RET
  1729.                    1344 ;
  1730.                    1345 ; M OPERATION - MOVING WINDOW STRING MATCH
  1731.                    1346 ;    COMPARE ITEMS IN LIST WITH LAST INPUT
  1732.                    1347 ;      M-ITEMS HAVE MULTIPLE BLANKS REDUCED TO ONE
  1733.                    1348 ;      INPUT HAS BLANK ADDED AT EACH END AND
  1734.                    1349 ;      MULTIPLE BLANKS REDUCED TO ONE.
  1735.                    1350 ; ENTER: HLSAV = ADDR AFTER LAST COLON, INPUT IN EBUFF
  1736.                    1351 ; RETURNS: YNSW = 0 IF MATCH NOT FOUND WITH LAST ENTRY
  1737.                    1352 ;
  1738.   6A71 214761      1353 MC:     LXI   H,MBRCH       ;SET BR CHAR
  1739.   6A74 365E        1354         MVI   M,'^'         ;  TO CARET (SHIFT N)
  1740.   6A76 C37E6A      1355         JMP   MOP1
  1741.   6A79 214761      1356 MOP:    LXI   H,MBRCH       ;SET BR CHAR TO COMMA
  1742.   6A7C 362C        1357         MVI   M,','
  1743.   6A7E 2A1A61      1358 MOP1:   LHLD  HLSAV         ;ADDR EXPRESSION FIELD
  1744.   6A81 223C61      1359         SHLD  MPTR          ;INIT M-POINTER
  1745.   6A84 CDD36A      1360 NEXTM:  CALL  MMOV          ;MSAVE = M-ITEM
  1746.   6A87 2A3C61      1361         LHLD  MPTR          ;ADDR M-ITEM
  1747.   6A8A 221A61      1362         SHLD  HLSAV
  1748.   6A8D CD2A6B      1363         CALL  SQUEZ         ;REDUCE MULTIPLE BLANKS
  1749.   6A90 219D61      1364         LXI   H,EBUFF
  1750.   6A93 221A61      1365         SHLD  HLSAV         ;HLSAV = STRING ADDR
  1751.   6A96 CDFC6A      1366         CALL  PAD           ;ADD BLANKS AT EACH END
  1752.   6A99 CD2A6B      1367         CALL  SQUEZ         ;REDUCE MULTIPLE BLANKS
  1753.   6A9C 219D61      1368         LXI   H,EBUFF       ;  PUT EBUFF ADDR
  1754.   6A9F 221A61      1369         SHLD  HLSAV         ;  IN HLSAV
  1755.   6AA2 21EE61      1370         LXI   H,MSAVE       ;  PUT MSAVE ADDR
  1756.   6AA5 221C61      1371         SHLD  HLLSAV        ; IN HLLSAV
  1757.   6AA8 CD3568      1372         CALL  INDEX         ;LOOK FOR M-ITEM
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   33
  1765.  
  1766.  
  1767.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1768.  
  1769.   6AAB 79          1373         MOV   A,C
  1770.   6AAC B7          1374         ORA   A             ; IF ITEM FOUND
  1771.   6AAD C4C96A      1375         CNZ   SWY           ;  THEN SET SWITCH YES
  1772.   6AB0 C0          1376         RNZ                 ;  AND RETURN
  1773.   6AB1 2A3C61      1377         LHLD  MPTR          ;RETRIEVE M-POINTER
  1774.   6AB4 2B          1378         DCX   H             ;ADDR BR CHAR
  1775.   6AB5 7E          1379         MOV   A,M           ;   IF END OF LINE
  1776.   6AB6 FE0D        1380         CPI   0DH
  1777.   6AB8 CAC56A      1381         JZ    MDONE         ;  THEN QUIT
  1778.   6ABB 23          1382         INX   H             ;ADDR NEXT CHAR
  1779.   6ABC 7E          1383         MOV   A,M           ;   IF END OF LINE
  1780.   6ABD FE0D        1384         CPI   0DH
  1781.   6ABF CAC56A      1385         JZ    MDONE         ;  THEN QUIT
  1782.   6AC2 C3846A      1386         JMP   NEXTM         ;ELSE MORE M-ITEMS
  1783.   6AC5 CDCE6A      1387 MDONE:  CALL  SWN           ;SET SWITCH NO
  1784.   6AC8 C9          1388         RET
  1785.                    1389 ;
  1786.   6AC9 B4          1390 SWY:    ORA   H             ; SET YN SWITCH YES
  1787.   6ACA 324B61      1391         STA   YNSW
  1788.   6ACD C9          1392         RET
  1789.                    1393 ;
  1790.   6ACE AF          1394 SWN:    XRA   A             ; SET YN SWITCH NO
  1791.   6ACF 324B61      1395         STA   YNSW
  1792.   6AD2 C9          1396         RET
  1793.                    1397 ;
  1794.                    1398 ; M-MOVE: MOVE M-ITEM TO MSAVE
  1795.                    1399 ;   ITEMS ARE SEPARATED BY COMMA OR TERMINATED BY 0DH
  1796.                    1400 ;   ENTER:   MPTR = M-ITEM ADDRESS
  1797.                    1401 ;   RETURNS: HL & MPTR = NEXT M-ITEM ADDR
  1798.                    1402 ;            B = BR CHAR
  1799.                    1403 ;
  1800.   6AD3 2A3C61      1404 MMOV:   LHLD  MPTR          ;GET M-POINTER
  1801.   6AD6 11EE61      1405         LXI   D,MSAVE       ;  DESTIN ADDR
  1802.   6AD9 CDF26A      1406 MMOV2:  CALL  MBR           ;IF BR CHAR OR EOL
  1803.   6ADC CAE76A      1407         JZ    SMOV          ;  THEN STOP THE MOVE
  1804.   6ADF 23          1408         INX   H
  1805.   6AE0 EB          1409         XCHG                ;HL = DESTIN ADDR
  1806.   6AE1 70          1410         MOV   M,B           ;   MOVE CHAR
  1807.   6AE2 23          1411         INX   H
  1808.   6AE3 EB          1412         XCHG                ;HL = NEXT SOURCE ADDR
  1809.   6AE4 C3D96A      1413         JMP   MMOV2         ;CHECK THE NEXT CHAR
  1810.   6AE7 23          1414 SMOV:   INX   H
  1811.   6AE8 EB          1415         XCHG                ;HL = DESTIN BR CHAR ADDR
  1812.   6AE9 3E0D        1416         MVI   A,0DH         ;   PUT AN 0DH THERE
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   34
  1820.  
  1821.  
  1822.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1823.  
  1824.   6AEB 77          1417         MOV   M,A
  1825.   6AEC 23          1418         INX   H
  1826.   6AED EB          1419         XCHG                ;HL = NEXT M-ITEM ADDR
  1827.   6AEE 223C61      1420         SHLD  MPTR          ;SAVE M-POINTER
  1828.   6AF1 C9          1421         RET
  1829.                    1422 ;
  1830.                    1423 ; M-BREAK CHAR BETWEEN ITEMS
  1831.                    1424 ;    ENTER:   HL = CHAR ADDR
  1832.                    1425 ;    RETURNS: A,B = CHAR.  IF BR CHAR THEN Z FLAG TRUE
  1833.                    1426 ;
  1834.   6AF2 7E          1427 MBR:    MOV   A,M           ;   GET CHAR
  1835.   6AF3 47          1428         MOV   B,A           ;   SAVE IT
  1836.   6AF4 FE0D        1429         CPI   0DH           ; IF EOL
  1837.   6AF6 C8          1430         RZ                  ;  THEN RETURN
  1838.   6AF7 3A4761      1431         LDA   MBRCH         ;GET CURRENT BR CHAR
  1839.   6AFA B8          1432         CMP   B
  1840.   6AFB C9          1433         RET
  1841.                    1434 ;
  1842.                    1435 ; PAD ADDS A BLANK TO EACH END OF A STRING
  1843.                    1436 ;   ENTER:   HLSAV = STRING ADDRESS
  1844.                    1437 ;
  1845.   6AFC 218B62      1438 PAD:    LXI   H,WORD
  1846.   6AFF 3E20        1439         MVI   A,' '         ;  SET BLANK AT FRONT OF
  1847.   6B01 77          1440         MOV   M,A
  1848.   6B02 23          1441         INX   H             ;DE = DESTIN ADDR
  1849.   6B03 EB          1442         XCHG
  1850.   6B04 2A1A61      1443         LHLD  HLSAV         ;GET SOURCE ADDR
  1851.   6B07 CDF067      1444         CALL  CNTLN         ;C = CHAR COUNT
  1852.   6B0A 2A1A61      1445         LHLD  HLSAV         ;GET SOURCE ADDR
  1853.   6B0D CDA76C      1446         CALL  BLKTFR        ;MOVE TEXT
  1854.   6B10 EB          1447         XCHG                ;ADDR NEW TEXT END
  1855.   6B11 2B          1448         DCX   H             ;SET BLANK AT
  1856.   6B12 3E20        1449         MVI   A,' '         ;    END OF
  1857.   6B14 77          1450         MOV   M,A           ;     TEMP STRING
  1858.   6B15 23          1451         INX   H             ;SET EOL
  1859.   6B16 3E0D        1452         MVI   A,0DH
  1860.   6B18 77          1453         MOV   M,A
  1861.   6B19 2A1A61      1454         LHLD  HLSAV         ;MOVE NEW STRING
  1862.   6B1C EB          1455         XCHG                ;  TO ORIGINAL
  1863.   6B1D 218B62      1456         LXI   H,WORD        ;    LOCATION
  1864.   6B20 CDF067      1457         CALL  CNTLN
  1865.   6B23 218B62      1458         LXI   H,WORD
  1866.   6B26 CDA76C      1459         CALL  BLKTFR
  1867.   6B29 C9          1460         RET
  1868.  
  1869.  
  1870.  
  1871.  
  1872.  
  1873.  
  1874. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   35
  1875.  
  1876.  
  1877.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1878.  
  1879.                    1461 ;
  1880.                    1462 ; SQUEZ REDUCES MULTIPLE BLANKS TO A SINGLE BLANK
  1881.                    1463 ;   ENTER:   HLSAV = STRING ADDRESS
  1882.                    1464 ;
  1883.   6B2A 2A1A61      1465 SQUEZ:  LHLD  HLSAV         ;ADDR STRING
  1884.   6B2D 221C61      1466         SHLD  HLLSAV        ;SAVE POINTER
  1885.   6B30 7E          1467         MOV   A,M           ;   GET CHAR
  1886.   6B31 FE0D        1468 CKEOL:  CPI   0DH           ; IF EOL
  1887.   6B33 C8          1469         RZ                  ;  THEN RETURN
  1888.   6B34 FE20        1470         CPI   ' '           ;IF BLANK
  1889.   6B36 CA3D6B      1471         JZ    CKNC          ;  THEN CHECK NEXT CHAR
  1890.   6B39 23          1472         INX   H             ;ELSE BUMP ADDR
  1891.   6B3A C32D6B      1473         JMP   SQUEZ+3       ;  AND CONTINUE
  1892.   6B3D 23          1474 CKNC:   INX   H             ;IF NEXT CHAR IS
  1893.   6B3E 7E          1475 CKNC1:  MOV   A,M           ;     NOT BLANK
  1894.   6B3F FE20        1476         CPI   ' '           ;  THEN CHECK IF EOL
  1895.   6B41 C2316B      1477         JNZ   CKEOL
  1896.   6B44 221C61      1478         SHLD  HLLSAV        ;ELSE SAVE ADDRESS
  1897.   6B47 CD506B      1479         CALL  SHIFT         ;  REMOVE A BLANK
  1898.   6B4A 2A1C61      1480         LHLD  HLLSAV        ;  RETRIEVE ADDRESS
  1899.   6B4D C33E6B      1481         JMP   CKNC1         ;  AND CONTINUE
  1900.                    1482 ;
  1901.                    1483 ; SHIFT STRING CHARS LEFT WITH LOSS OF FIRST CHAR
  1902.                    1484 ;   ENTER:   HL = ADDR OF STRING
  1903.                    1485 ;   RETURNS: HL = ADDR OF 0DH
  1904.                    1486 ;
  1905.   6B50 23          1487 SHIFT:  INX   H             ;ADDR NEXT CHAR
  1906.   6B51 46          1488         MOV   B,M           ;   GET IT IN B
  1907.   6B52 2B          1489         DCX   H             ;MOVE IT
  1908.   6B53 70          1490         MOV   M,B
  1909.   6B54 7E          1491         MOV   A,M
  1910.   6B55 FE0D        1492         CPI   0DH           ; IF IT WAS EOL
  1911.   6B57 C8          1493         RZ                  ;  THEN RETURN
  1912.   6B58 23          1494         INX   H             ;  ELSE MOVE ANOTHER
  1913.   6B59 C3506B      1495         JMP   SHIFT
  1914.                    1496 ;
  1915.                    1497 ; C OPERATION:  COMPUTE WITH TEXT OF STATEMENT
  1916.                    1498 ;    LIMITED TO: X = NN  (NN = INTEGER -99 TO +99)
  1917.                    1499 ;                OR X = X + NN  OR X = X - NN
  1918.                    1500 ;                OR X = X + X   OR X = X - X
  1919.                    1501 ;      WHERE X = SINGLE LETTER VARIABLE NAME A-Z
  1920.                    1502 ;           FIRST LETTER ONLY OF LONGER NAME GETS USED
  1921.                    1503 ;    ENTER:   HLSAV = ADDR OF EXPRESSION FIELD
  1922.                    1504 ;
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   36
  1930.  
  1931.  
  1932.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1933.  
  1934.   6B5C 2A1A61      1505 COP:    LHLD  HLSAV         ;ADDR EXPRESSION FIELD
  1935.   6B5F 063D        1506         MVI   B,'='         ;  LOOK FOR EQUAL SIGN
  1936.   6B61 CD8A68      1507         CALL  INDX
  1937.   6B64 79          1508         MOV   A,C
  1938.   6B65 B7          1509         ORA   A             ; IF NOT PRESENT
  1939.   6B66 CACA6B      1510         JZ    EXMSG         ;  THEN COMPLAIN
  1940.   6B69 23          1511         INX   H             ;BUMP POINTER
  1941.   6B6A CD7F67      1512         CALL  GETCH         ;GET THE CHAR
  1942.   6B6D FE2D        1513         CPI   '-'           ;IF NOT MINUS SIGN
  1943.   6B6F C27F6B      1514         JNZ   CGVAL         ;  THEN GET THE VALUE
  1944.   6B72 221C61      1515         SHLD  HLLSAV        ;SAVE THE POINTER
  1945.   6B75 AF          1516         XRA   A
  1946.   6B76 324961      1517         STA   TEMP          ;SET TEMP = 0
  1947.   6B79 2A1C61      1518         LHLD  HLLSAV        ;RETRIEVE POINTER
  1948.   6B7C C3B36B      1519         JMP   SUBV          ;  AND SUBTRACT
  1949.   6B7F CDF26B      1520 CGVAL:  CALL  GVALUE        ;GET THE VALUE
  1950.   6B82 214961      1521         LXI   H,TEMP        ;  SAVE IT
  1951.   6B85 73          1522         MOV   M,E
  1952.   6B86 2A3861      1523         LHLD  CPTR          ;RETRIEVE CHAR POINTER
  1953.   6B89 23          1524         INX   H             ;BUMP POINTER
  1954.   6B8A CD7F67      1525         CALL  GETCH         ;GET CHAR
  1955.   6B8D FE0D        1526         CPI   0DH           ; IF END OF LINE
  1956.   6B8F CAC66B      1527         JZ    AVAL          ;  THEN ASSIGN VALUE
  1957.   6B92 FE2D        1528         CPI   '-'           ;IF MINUS
  1958.   6B94 CAB36B      1529         JZ    SUBV          ;  THEN SUBTRACT VALUE
  1959.   6B97 FE2B        1530         CPI   '+'           ;IF PLUS
  1960.   6B99 CAA26B      1531         JZ    ADDV          ;  THEN ADD VALUE
  1961.   6B9C CDF26B      1532         CALL  GVALUE        ;ELSE GET VALUE
  1962.   6B9F C3C66B      1533         JMP   AVAL          ;ASSIGN VALUE
  1963.   6BA2 23          1534 ADDV:   INX   H             ;BUMP POINTER
  1964.   6BA3 CDF26B      1535         CALL  GVALUE        ;GET THE VALUE
  1965.   6BA6 3A4961      1536         LDA   TEMP          ;GET OLD VALUE
  1966.   6BA9 83          1537         ADD   E             ;ADD VALUES
  1967.   6BAA FE64        1538         CPI   100           ;IF > 99
  1968.   6BAC F2D46B      1539         JP    OVMSG         ;  THEN COMPLAIN
  1969.   6BAF 5F          1540         MOV   E,A           ;      ELSE FORM NEW VALUE
  1970.   6BB0 C3C66B      1541         JMP   AVAL          ;ASSIGN VALUE
  1971.   6BB3 23          1542 SUBV:   INX   H             ;BUMP POINTER
  1972.   6BB4 CDF26B      1543         CALL  GVALUE        ;GET THE VALUE
  1973.   6BB7 3A4961      1544         LDA   TEMP          ;GET OLD VALUE
  1974.   6BBA 93          1545         SUB   E             ;SUBTRACT VALUES
  1975.   6BBB FE9D        1546         CPI   9DH           ;IF >= -99
  1976.   6BBD F2C56B      1547         JP    AVAL-1        ;  THEN CONTINUE
  1977.   6BC0 FE64        1548         CPI   100           ;IF > 99
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   37
  1985.  
  1986.  
  1987.   LOC  OBJ         SEQ         SOURCE STATEMENT
  1988.  
  1989.   6BC2 F2E36B      1549         JP    UNMSG         ;  THEN COMPLAIN
  1990.   6BC5 5F          1550         MOV   E,A
  1991.   6BC6 CD136C      1551 AVAL:   CALL  ASSIGN
  1992.   6BC9 C9          1552         RET
  1993.                    1553 ;
  1994.   6BCA CDCC68      1554 EXMSG:  CALL  TOP           ;SHOW THE BAD EXPR
  1995.   6BCD 215B6E      1555         LXI   H,EXPMSG
  1996.   6BD0 CD316E      1556         CALL  ERROR
  1997.   6BD3 C9          1557         RET
  1998.                    1558 ;
  1999.   6BD4 1E63        1559 OVMSG:  MVI   E,99          ;  SET VALUE TO 99
  2000.   6BD6 CD136C      1560         CALL  ASSIGN
  2001.   6BD9 CDCC68      1561         CALL  TOP           ;SHOW THE EXPR
  2002.   6BDC 216F6E      1562         LXI   H,OVFMSG
  2003.   6BDF CD316E      1563         CALL  ERROR
  2004.   6BE2 C9          1564         RET
  2005.                    1565 ;
  2006.   6BE3 1E9D        1566 UNMSG:  MVI   E,-99         ;  SET VALUE TO -99
  2007.   6BE5 CD136C      1567         CALL  ASSIGN
  2008.   6BE8 CDCC68      1568         CALL  TOP
  2009.   6BEB 217C6E      1569         LXI   H,UNFMSG
  2010.   6BEE CD316E      1570         CALL  ERROR
  2011.   6BF1 C9          1571         RET
  2012.                    1572 ;
  2013.                    1573 ; GVALUE - GETS VALUE OF CONSTANT OR VARIABLE
  2014.                    1574 ;    ENTER:   HL = ADDRESS OF CHAR NAMING THE VARIABLE
  2015.                    1575 ;             CPTR = ADDRESS OF CHAR
  2016.                    1576 ;    RETURNS: E = VALUE
  2017.                    1577 ;             CPTR = ADDRESS OF THE CHARACTER
  2018.                    1578 ;
  2019.   6BF2 CD7F67      1579 GVALUE: CALL  GETCH         ;GET CHAR
  2020.   6BF5 5F          1580         MOV   E,A           ;      SAVE IN E
  2021.   6BF6 CDB368      1581         CALL  LETTER        ;IF LETTER
  2022.   6BF9 CA036C      1582         JZ    LTR           ;  THEN PROCEED
  2023.   6BFC CD8466      1583         CALL  GETNM         ;ELSE EXPECT NUMBER
  2024.   6BFF 223861      1584         SHLD  CPTR          ;SAVE CHAR POINTER
  2025.   6C02 C9          1585         RET
  2026.   6C03 223861      1586 LTR:    SHLD  CPTR          ;SAVE CHAR POINTER
  2027.   6C06 46          1587 CONV:   MOV   B,M           ;   SAVE CHAR IN B
  2028.   6C07 CDB464      1588         CALL  VARMCH        ;LOOK IT UP
  2029.   6C0A FE01        1589         CPI   1             ;IF END MARKER
  2030.   6C0C CCA764      1590         CZ    BADFRM        ;  THEN COMPLAIN
  2031.   6C0F C8          1591         RZ                  ;  AND RETURN
  2032.   6C10 23          1592         INX   H             ;ELSE POINT AT VALUE
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   38
  2040.  
  2041.  
  2042.   LOC  OBJ         SEQ         SOURCE STATEMENT
  2043.  
  2044.   6C11 5E          1593         MOV   E,M           ;   SAVE VALUE IN E
  2045.   6C12 C9          1594         RET
  2046.                    1595 ;
  2047.                    1596 ; ASSIGN SETS A NEW VALUE TO AN OLD OR NEW VARIABLE
  2048.                    1597 ;    ENTER:   HLSAV = ADDR OF EXPRESSION FIELD
  2049.                    1598 ;             BINARY VALUE IN E
  2050.                    1599 ;
  2051.   6C13 2A1A61      1600 ASSIGN: LHLD  HLSAV         ;ADDR EXPRESSION FIELD
  2052.   6C16 CD7F67      1601         CALL  GETCH         ;GET FIRST CHAR
  2053.   6C19 CDB368      1602         CALL  LETTER        ;IF NOT A LETTER
  2054.   6C1C C2CA6B      1603         JNZ   EXMSG         ;  THEN COMPLAIN
  2055.   6C1F 46          1604         MOV   B,M           ;   GET CHAR IN B
  2056.   6C20 CDB464      1605         CALL  VARMCH        ;LOOK IT UP
  2057.   6C23 FE01        1606         CPI   1             ;IF END MARKER
  2058.   6C25 CCA764      1607         CZ    BADFRM        ;  THEN COMPLAIN
  2059.   6C28 C8          1608         RZ                  ;  AND RETURN
  2060.   6C29 23          1609         INX   H             ;  ELSE BUMP TO VALUE ADDR
  2061.   6C2A 73          1610         MOV   M,E
  2062.   6C2B C9          1611         RET                 ;  AND RETURN
  2063.                    1612 ;
  2064.                    1613 ; BASIC INTERPRETATION -
  2065.                    1614 ;   IF PROGRAM TEXT IS NOT LEGAL PILOT, THEN
  2066.                    1615 ;   AN ALTERNATE INTERPRETER SUCH AS BASIC CAN BE
  2067.                    1616 ;   SUPPLIED TO BE TRIED BEFORE PILOT COMPLAINS.
  2068.                    1617 ;
  2069.   6C2C B4          1618 BASIC:  ORA   H             ;DUMMY ILLEGAL RETURN
  2070.   6C2D C9          1619         RET
  2071.                    1620 ;
  2072.                    1621 ; R OPERATION -
  2073.                    1622 ;    ENTER:   HLSAV = R-STATEMENT ADDRESS
  2074.                    1623 ;
  2075.   6C2E C9          1624 ROP:    RET
  2076.                    1625 ;
  2077.                    1626 ; E OPERATION - RETURNS FROM CALL OR ENDS PROGRAM
  2078.                    1627 ;
  2079.   6C2F 3A4561      1628 EOP:    LDA   LEVEL         ;IF RETURN LEVEL = 0
  2080.   6C32 B7          1629         ORA   A             ;   THEN QUIT
  2081.   6C33 CA0F63      1630         JZ    RSTRT
  2082.   6C36 CD8B6C      1631         CALL  RESRET        ;  ELSE SET RETURN FROM
  2083.   6C39 C9          1632         RET                 ;  PILOT CALL
  2084.                    1633 ;
  2085.   6C3A 210070      1634 LOAD:   LXI   H,PBUFF
  2086.   6C3D CD226D      1635         CALL  INPUT
  2087.   6C40 C9          1636         RET
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   39
  2095.  
  2096.  
  2097.   LOC  OBJ         SEQ         SOURCE STATEMENT
  2098.  
  2099.                    1637 ;
  2100.                    1638 ; NEW$ DELETES $NAMES BY RESETTING A-POINTER
  2101.                    1639 ;
  2102.   6C41 2A3461      1640 NEWN:   LHLD  APTR          ;REMOVE STOP CHAR
  2103.   6C44 3620        1641         MVI   M,20H
  2104.   6C46 2A3E61      1642         LHLD  MEMTP         ;ADDR MEMTP
  2105.   6C49 3601        1643         MVI   M,1           ;PLACE STOP CHAR
  2106.   6C4B 2B          1644         DCX   H
  2107.   6C4C 223461      1645         SHLD  APTR          ;STORE MEMTP-1 ADDRESS
  2108.   6C4F C9          1646         RET
  2109.                    1647 ;
  2110.                    1648 ; INITIALIZE NUMERIC VARIABLES
  2111.                    1649 ;   SETS A-Z TO ZERO VALUE
  2112.                    1650 ;
  2113.   6C50 215662      1651 INITV:  LXI   H,NVAR        ;ADDR FRONT OF VAR LIST
  2114.   6C53 0641        1652         MVI   B,'A'         ;START WITH 'A'
  2115.   6C55 78          1653         MOV   A,B
  2116.   6C56 FE5B        1654 NV:     CPI   'Z'+1         ;IF ALPHABET COMPLETE
  2117.   6C58 C8          1655         RZ                  ;THEN RETURN
  2118.   6C59 77          1656         MOV   M,A           ;   STORE THE LETTER
  2119.   6C5A 23          1657         INX   H             ;BUMP ADDRESS
  2120.   6C5B 3E00        1658         MVI   A,0
  2121.   6C5D 77          1659         MOV   M,A           ;   STORE ZERO
  2122.   6C5E 23          1660         INX   H             ;BUMP THE ADDRESS
  2123.   6C5F 78          1661         MOV   A,B           ;      GET LETTER
  2124.   6C60 C601        1662         ADI   1             ;CHANGE TO NEXT LETTER
  2125.   6C62 47          1663         MOV   B,A           ;   SAVE IN B
  2126.   6C63 C3566C      1664         JMP   NV            ;NEXT VARIABLE
  2127.                    1665 ;
  2128.                    1666 ; SAVE RETURN POINTER IN STACK
  2129.                    1667 ;    ENTER:   IPTR = START OF NEXT SOURCE LINE
  2130.                    1668 ;    RETURNS: LEVEL BUMPED ONE HIGHER
  2131.                    1669 ;             IPTR COPIED AT LEVEL POSITION
  2132.                    1670 ;
  2133.   6C66 214561      1671 SAVRET: LXI   H,LEVEL       ;GET CURRENT LEVEL
  2134.   6C69 7E          1672         MOV   A,M
  2135.   6C6A C601        1673         ADI   1             ;BUMP TO NEXT LEVEL
  2136.   6C6C FE08        1674         CPI   8             ;IF < 8
  2137.   6C6E FA786C      1675         JM    SAV2          ;  THEN CONTINUE
  2138.   6C71 21896E      1676         LXI   H,STMSG       ;ELSE STACK OVERFLOW
  2139.   6C74 CD316E      1677         CALL  ERROR
  2140.   6C77 C9          1678         RET
  2141.   6C78 77          1679 SAV2:   MOV   M,A           ;   STORE IT
  2142.   6C79 87          1680         ADD   A             ;DOUBLE IT
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   40
  2150.  
  2151.  
  2152.   LOC  OBJ         SEQ         SOURCE STATEMENT
  2153.  
  2154.   6C7A 4F          1681         MOV   C,A           ;      SAVE IN C
  2155.   6C7B 2A3A61      1682         LHLD  IPTR          ;PUT IPTR IN DE
  2156.   6C7E EB          1683         XCHG
  2157.   6C7F 212461      1684         LXI   H,RETSAV      ;  GET BASE ADDR
  2158.   6C82 7D          1685         MOV   A,L
  2159.   6C83 81          1686         ADD   C             ;BASE + 2 X LEVEL
  2160.   6C84 6F          1687         MOV   L,A           ;      HL = STACK ADDR
  2161.   6C85 72          1688         MOV   M,D           ;   SAVE IPTR
  2162.   6C86 C601        1689         ADI   1
  2163.   6C88 6F          1690         MOV   L,A           ;      HL = STACK ADDR+1
  2164.   6C89 73          1691         MOV   M,E
  2165.   6C8A C9          1692         RET
  2166.                    1693 ;
  2167.                    1694 ; RESET RETURN POINTER FROM STACK
  2168.                    1695 ;    RETURNS: IPTR SET TO LAST SAVED RETURN
  2169.                    1696 ;             LEVEL REDUCED BY ONE
  2170.                    1697 ;
  2171.   6C8B 3A4561      1698 RESRET: LDA   LEVEL         ;GET RETURN LEVEL
  2172.   6C8E 87          1699         ADD   A             ;DOUBLE IT
  2173.   6C8F 4F          1700         MOV   C,A           ;      SAVE IN C
  2174.   6C90 212461      1701         LXI   H,RETSAV      ;  GET BASE ADDR
  2175.   6C93 7D          1702         MOV   A,L
  2176.   6C94 81          1703         ADD   C             ;BASE + 2 X LEVEL
  2177.   6C95 6F          1704         MOV   L,A           ;      HL = STACK ADDR
  2178.   6C96 56          1705         MOV   D,M           ;   SAVE POINTER IN DE
  2179.   6C97 C601        1706         ADI   1
  2180.   6C99 6F          1707         MOV   L,A           ;      HL = STACK ADDR+1
  2181.   6C9A 5E          1708         MOV   E,M
  2182.   6C9B EB          1709         XCHG
  2183.   6C9C 223A61      1710         SHLD  IPTR          ;RESET IPTR
  2184.   6C9F 214561      1711         LXI   H,LEVEL       ;REDUCE LEVEL
  2185.   6CA2 7E          1712         MOV   A,M
  2186.   6CA3 D601        1713         SUI   1
  2187.   6CA5 77          1714         MOV   M,A
  2188.   6CA6 C9          1715         RET
  2189.                    1716 ;
  2190.                    1717 ; BLOCK TRANSFER FROM HL TO DE, C CHARACTERS
  2191.                    1718 ;   RETURNS: HL AND DE AT LAST CHAR+1 ADDR
  2192.                    1719 ;
  2193.   6CA7 79          1720 BLKTFR: MOV   A,C           ;   GET COUNT
  2194.   6CA8 B7          1721         ORA   A             ; IF COUNT = 0
  2195.   6CA9 C8          1722         RZ                  ;  THEN RETURN
  2196.   6CAA 46          1723         MOV   B,M           ;   GET A SOURCE CHARACTER
  2197.   6CAB 23          1724         INX   H             ;GET NEXT DEST ADDR
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   41
  2205.  
  2206.  
  2207.   LOC  OBJ         SEQ         SOURCE STATEMENT
  2208.  
  2209.   6CAC EB          1725         XCHG
  2210.   6CAD 70          1726         MOV   M,B           ;   PUT IT IN DEST LOCATION
  2211.   6CAE 23          1727         INX   H             ;GET NEXT SOURCE ADDR
  2212.   6CAF EB          1728         XCHG
  2213.   6CB0 79          1729         MOV   A,C           ;   DECREMENT COUNT
  2214.   6CB1 D601        1730         SUI   1
  2215.   6CB3 4F          1731         MOV   C,A
  2216.   6CB4 C2A76C      1732         JNZ   BLKTFR        ;IF NONZERO THEN NEXT
  2217.   6CB7 C9          1733         RET
  2218.                    1734 ;
  2219.                    1735 ; KEYBOARD INPUT TO EBUFF
  2220.                    1736 ;   ENTER:  CHMAX= MAXIMUM CHARS ALLOWED IN LINE
  2221.                    1737 ;   DEL (SHIFT O) OR RUBOUT CANCELS LAST CHAR
  2222.                    1738 ;   CTL/U CANCELS CURRENT LINE
  2223.                    1739 ;   USES B FOR CHAR COUNT, C FOR OUTPUT
  2224.                    1740 ;
  2225.   6CB8 219D61      1741 KEYIN:  LXI   H,EBUFF       ;POINT AT EBUFF
  2226.   6CBB 223661      1742         SHLD  EPTR          ;SAVE POINTER
  2227.   6CBE 214461      1743         LXI   H,CHMAX       ;GET MAX COUNT
  2228.   6CC1 46          1744         MOV   B,M
  2229.   6CC2 2A3661      1745 KIN2:   LHLD  EPTR          ;RETRIEVE POINTER
  2230.   6CC5 CD0061      1746         CALL  CI            ;GET CHAR AND ECHO
  2231.   6CC8 FE5F        1747         CPI   5FH           ;IF DEL
  2232.   6CCA CA036D      1748         JZ    CANC          ;  THEN CANCEL LAST CHAR
  2233.   6CCD FE7F        1749         CPI   7FH           ;IF RUBOUT
  2234.   6CCF CA036D      1750         JZ    CANC          ;  THEN CANCEL LAST CHAR
  2235.   6CD2 FE15        1751         CPI   15H           ;IF CTL/U
  2236.   6CD4 CAF86C      1752         JZ    CANL          ;  THEN CANCEL LINE
  2237.   6CD7 FE61        1753         CPI   61H           ;FORCE UPPER CASE
  2238.   6CD9 FADE6C      1754         JM    NTR
  2239.   6CDC EE20        1755         XRI   20H
  2240.   6CDE 77          1756 NTR:    MOV   M,A           ;STORE THE CHAR
  2241.   6CDF 23          1757         INX   H             ;INCR POINTER
  2242.   6CE0 223661      1758         SHLD  EPTR          ;SAVE IT
  2243.   6CE3 FE0D        1759         CPI   0DH           ;IF CR
  2244.   6CE5 CAF46C      1760         JZ    KOUT          ;  THEN STOP ENTRY
  2245.   6CE8 05          1761         DCR   B             ;ELSE DECR CHAR COUNT
  2246.   6CE9 78          1762         MOV   A,B
  2247.   6CEA B7          1763         ORA   A             ;IF COUNT NOT 0
  2248.   6CEB C2C26C      1764         JNZ   KIN2          ;  THEN NEXT CHAR
  2249.   6CEE 0E0D        1765         MVI   C,0DH         ;ELSE END WITH CR
  2250.   6CF0 71          1766         MOV   M,C
  2251.   6CF1 CD0361      1767         CALL  CO            ;  AND SEND IT
  2252.   6CF4 CD1C6D      1768 KOUT:   CALL  LF            ;SEND LINE FEED
  2253.  
  2254.  
  2255.  
  2256.  
  2257.  
  2258.  
  2259. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   42
  2260.  
  2261.  
  2262.   LOC  OBJ         SEQ         SOURCE STATEMENT
  2263.  
  2264.   6CF7 C9          1769         RET                 ;  AND RETURN
  2265.   6CF8 0E3C        1770 CANL:   MVI   C,3CH         ;SEND <
  2266.   6CFA CD0361      1771         CALL  CO 
  2267.   6CFD CD176D      1772         CALL  CRLF          ;SEND CRLF
  2268.   6D00 C3B86C      1773         JMP   KEYIN         ;  START OVER
  2269.   6D03 78          1774 CANC:   MOV   A,B           ;INCR CHAR COUNT
  2270.   6D04 214461      1775         LXI   H,CHMAX       ;  UNLESS AT BEGINNING
  2271.   6D07 4E          1776         MOV   C,M
  2272.   6D08 B9          1777         CMP   C
  2273.   6D09 CAC26C      1778         JZ    KIN2
  2274.   6D0C 04          1779         INR   B
  2275.   6D0D 2A3661      1780         LHLD  EPTR
  2276.   6D10 2B          1781         DCX   H             ;DECR POINTER
  2277.   6D11 223661      1782         SHLD  EPTR
  2278.   6D14 C3C56C      1783         JMP   KIN2+3
  2279.                    1784 ;
  2280.   6D17 0E0D        1785 CRLF:   MVI   C,0DH
  2281.   6D19 CD0361      1786         CALL  CO 
  2282.   6D1C 0E0A        1787 LF:     MVI   C,0AH
  2283.   6D1E CD0361      1788         CALL  CO 
  2284.   6D21 C9          1789         RET
  2285.                    1790 ;
  2286.                    1791 ; INPUT PROGRAM TO BUFFER AREA
  2287.                    1792 ;   DEL (SHIFT O) CANCELS LAST CHAR, CTL/U CANCELS LINE
  2288.                    1793 ;   TERMINATES WITH CTL/Z (1AH)
  2289.                    1794 ;
  2290.   6D22 CD6B66      1795 INPUT:  CALL  BLKBF         ;BLANK THE BUFFER
  2291.   6D25 210070      1796         LXI   H,PBUFF       ;SET POINTER
  2292.   6D28 7E          1797 INPT1:  MOV   A,M           ;GET EXISTING CHAR
  2293.   6D29 222261      1798         SHLD  LLSAV         ;SAVE FIRST CHAR ADDR
  2294.   6D2C FE01        1799         CPI   1             ;IF END MARK
  2295.   6D2E CA826D      1800         JZ    CHOP          ;  THEN CHOP ENTRY
  2296.   6D31 CD0661      1801         CALL  RI            ;GET CHAR
  2297.   6D34 FE20        1802         CPI   ' '           ;IF NOT BLANK
  2298.   6D36 C2456D      1803         JNZ   INPT3+3       ;  THEN CONTINUE
  2299.   6D39 C3286D      1804         JMP   INPT1         ;ELSE SKIP LEADING BLANK
  2300.   6D3C 7E          1805 INPT2:  MOV   A,M           ;GET EXISTING CHAR
  2301.   6D3D FE01        1806         CPI   1             ;IF END MARK
  2302.   6D3F CA826D      1807         JZ    CHOP          ;  THEN CHOP ENTRY
  2303.   6D42 CD0661      1808 INPT3:  CALL  RI            ;GET CHARACTER
  2304.   6D45 FE00        1809         CPI   0             ;IGNORE NULLS
  2305.   6D47 CA426D      1810         JZ    INPT3
  2306.   6D4A FE7F        1811         CPI   7FH           ;IGNORE RUBOUTS
  2307.   6D4C CA426D      1812         JZ    INPT3
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   43
  2315.  
  2316.  
  2317.   LOC  OBJ         SEQ         SOURCE STATEMENT
  2318.  
  2319.   6D4F FE1A        1813         CPI   1AH           ;IF TERM CHAR CTL/Z
  2320.   6D51 CA8E6D      1814         JZ    INEND         ;  THEN END OF INPUT
  2321.   6D54 FE15        1815         CPI   15H           ;IF CTL/U
  2322.   6D56 CA746D      1816         JZ    KLN           ;  THEN KILL THE LINE
  2323.   6D59 FE5F        1817         CPI   5FH           ;IF DEL
  2324.   6D5B CA706D      1818         JZ    CLC           ;  THEN CANCEL LAST CHAR
  2325.   6D5E 77          1819         MOV   M,A           ;ELSE STORE THE CHAR
  2326.   6D5F 23          1820         INX   H             ;AND INCR THE POINTER
  2327.   6D60 FE0D        1821         CPI   0DH           ;IF NOT CR
  2328.   6D62 C23C6D      1822         JNZ   INPT2         ;  THEN GET NEXT CHAR
  2329.   6D65 CD1C6D      1823         CALL  LF            ;ELSE SEND LF
  2330.   6D68 C3286D      1824         JMP   INPT1         ;AND GET NEXT NEW LINE
  2331.   6D6B 77          1825 INPT4:  MOV   M,A           ;STORE CHAR
  2332.   6D6C 23          1826         INX   H             ;INCR POINTER
  2333.   6D6D C33C6D      1827         JMP   INPT2
  2334.   6D70 2B          1828 CLC:    DCX   H             ;CANCEL LAST CHAR
  2335.   6D71 C3426D      1829         JMP   INPT3
  2336.   6D74 0E3C        1830 KLN:    MVI   C,3CH         ;SEND <
  2337.   6D76 CD0361      1831         CALL  CO 
  2338.   6D79 CD176D      1832         CALL  CRLF          ;SEND CRLF
  2339.   6D7C 2A2261      1833         LHLD  LLSAV         ;ADDR FRONT OF LINE
  2340.   6D7F C3426D      1834         JMP   INPT3
  2341.   6D82 2A2261      1835 CHOP:   LHLD  LLSAV         ;ADDR FRONT OF LINE
  2342.   6D85 CD9C6D      1836         CALL  DSPLY
  2343.   6D88 21486E      1837         LXI   H,IOVMSG
  2344.   6D8B CD316E      1838         CALL  ERROR
  2345.   6D8E 3601        1839 INEND:  MVI   M,1           ;STORE END MARK
  2346.   6D90 221861      1840         SHLD  TOPP          ;STORE ADDRESS
  2347.   6D93 CD176D      1841         CALL  CRLF          ;SEND CRLF
  2348.   6D96 214561      1842         LXI   H,LEVEL       ;ZERO RETURN LEVEL
  2349.   6D99 3600        1843         MVI   M,0
  2350.   6D9B C9          1844         RET
  2351.                    1845 ;
  2352.                    1846 ; DISPLAY A CHARACTER STRING TO CR OR 01
  2353.                    1847 ;   ENTER:  HL = STARTING ADDRESS
  2354.                    1848 ;   OUTADR CONTAINS ADDRESS OF CO, LO, OR PO
  2355.                    1849 ;
  2356.   6D9C 7E          1850 DSPLY:  MOV   A,M           ;GET A CHARACTER
  2357.   6D9D 23          1851         INX   H             ;BUMP POINTER
  2358.   6D9E 54          1852         MOV   D,H           ;SAVE IT
  2359.   6D9F 5D          1853         MOV   E,L
  2360.   6DA0 FE01        1854         CPI   1             ;IF 01
  2361.   6DA2 C8          1855         RZ                  ;  THEN RETURN
  2362.   6DA3 4F          1856         MOV   C,A           ;PUT CHAR IN C
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   44
  2370.  
  2371.  
  2372.   LOC  OBJ         SEQ         SOURCE STATEMENT
  2373.  
  2374.   6DA4 2A4061      1857         LHLD  OUTADR        ;MAKE AN INDIRECT CALL
  2375.   6DA7 CDC06D      1858         CALL  OVCTR         ;  TO SEND THE CHAR
  2376.   6DAA FE0D        1859         CPI   0DH           ;IF CR
  2377.   6DAC CAB36D      1860         JZ    ENDOL         ;  THEN EOL
  2378.   6DAF EB          1861         XCHG                ;ELSE RETRIEVE POINTER
  2379.   6DB0 C39C6D      1862         JMP   DSPLY         ;AND DISPLAY MORE
  2380.   6DB3 0E0A        1863 ENDOL:  MVI   C,0AH         ;SEND LINE FEED
  2381.   6DB5 2A4061      1864         LHLD  OUTADR        ;MAKE AN INDIRECT CALL
  2382.   6DB8 CDC06D      1865         CALL  OVCTR         ;  TO SEND IT
  2383.   6DBB EB          1866         XCHG                ;RETRIEVE POINTER
  2384.   6DBC CD5664      1867         CALL  SKLN           ;SKIP ANY LINE NOS.
  2385.   6DBF C9          1868         RET
  2386.   6DC0 E9          1869 OVCTR:  PCHL
  2387.                    1870 ;
  2388.                    1871 ; OUTPUT PROGRAM IN MEMORY TO 01 END MARK
  2389.                    1872 ;
  2390.   6DC1 210070      1873 PRGOUT: LXI   H,PBUFF        ;PGM START ADDR
  2391.   6DC4 CD9C6D      1874         CALL  DSPLY          ;DISPLAY ONE LINE
  2392.   6DC7 FE01        1875         CPI   1              ;IF NOT END MARK
  2393.   6DC9 C2C46D      1876         JNZ   PRGOUT+3       ;  THEN MORE
  2394.   6DCC C9          1877         RET
  2395.                    1878 ;
  2396.   6DCD 210361      1879 DPRG:   LXI   H,CO           ;DISPLAY PROGRAM IN MEMORY
  2397.   6DD0 224061      1880         SHLD  OUTADR
  2398.   6DD3 CDC16D      1881         CALL  PRGOUT
  2399.   6DD6 C9          1882         RET
  2400.                    1883 ;
  2401.   6DD7 210961      1884 LPRG:   LXI   H,LO           ;LIST PROGRAM IN MEMORY
  2402.   6DDA 224061      1885         SHLD  OUTADR
  2403.   6DDD CDC16D      1886         CALL  PRGOUT
  2404.   6DE0 210361      1887         LXI   H,CO           ;RESET TO CONSOLE
  2405.   6DE3 224061      1888         SHLD  OUTADR
  2406.   6DE6 C9          1889         RET
  2407.                    1890 ;
  2408.   6DE7 210C61      1891 SPRG:   LXI   H,PO           ;SAVE PROGRAM
  2409.   6DEA 224061      1892         SHLD  OUTADR
  2410.   6DED CDC16D      1893         CALL  PRGOUT
  2411.   6DF0 210361      1894         LXI   H,CO           ;RESET TO CONSOLE
  2412.   6DF3 224061      1895         SHLD  OUTADR
  2413.   6DF6 C9          1896         RET
  2414.                    1897 ;
  2415.                    1898 ; I/O ROUTINES
  2416.                    1899 ;     USE STPORT (MDS-0F7H) FOR STATUS, PORT (MDS-0F6H) FOR DATA
  2417.                    1900 ;     STATUS BIT 1 (2H) FOR READ DATA AVAIL (RDA)
  2418.  
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   45
  2425.  
  2426.  
  2427.   LOC  OBJ         SEQ         SOURCE STATEMENT
  2428.  
  2429.                    1901 ;     BIT 0 (1H) FOR TRANSMIT BUFFER EMPTY (TBE)
  2430.                    1902 ;
  2431.                    1903 ; OUTPUT CHAR FROM C
  2432.                    1904 ;   LOOKS FOR CTL/Z         INPUT FOR PANIC EXIT
  2433.                    1905 ;
  2434.   6DF7 DBF7        1906 CHO:    IN      STPORT  ;GET STATUS
  2435.   6DF9 E602        1907         ANI     RDA     ;IF NO INPUT
  2436.   6DFB CA066E      1908         JZ      CHO1    ;THEN CONTINUE
  2437.   6DFE CD0061      1909         CALL    CI      ;ELSE SEE WHAT IT IS
  2438.   6E01 FE1A        1910         CPI     1AH     ;IF CNTRL/Z
  2439.   6E03 CA116E      1911         JZ      INTR    ;THEN INTERRUPT
  2440.   6E06 DBF7        1912 CHO1:   IN    STPORT          ;NOW FOR STANDARD OUTPUT
  2441.   6E08 E601        1913         ANI   TBE
  2442.   6E0A CA066E      1914         JZ    CHO1
  2443.   6E0D 79          1915         MOV   A,C
  2444.   6E0E D3F6        1916         OUT   PORT
  2445.   6E10 C9          1917         RET
  2446.                    1918 ;
  2447.   6E11 E5          1919 INTR:   PUSH  H          ;SAVE REGISTERS
  2448.   6E12 D5          1920         PUSH  D
  2449.   6E13 C5          1921         PUSH  B
  2450.   6E14 21B86E      1922         LXI   H,INTMSG   ;INTERRUPT MESSAGE
  2451.   6E17 CD316E      1923         CALL  ERROR
  2452.   6E1A CDDB69      1924         CALL  ENTRY      ;ALLOW RESTART
  2453.   6E1D C1          1925         POP   B          ;ELSE CONTINUE
  2454.   6E1E D1          1926         POP   D
  2455.   6E1F E1          1927         POP   H
  2456.   6E20 C9          1928         RET
  2457.                    1929 ;
  2458.                    1930 ; INPUT CHAR TO A AND ECHO
  2459.                    1931 ;
  2460.   6E21 DBF7        1932 CHI:    IN    STPORT          ;NORMAL INPUT
  2461.   6E23 E602        1933         ANI   RDA
  2462.   6E25 CA216E      1934         JZ    CHI
  2463.   6E28 DBF6        1935         IN    PORT
  2464.   6E2A E67F        1936         ANI   7FH
  2465.   6E2C 4F          1937         MOV   C,A
  2466.   6E2D CD0361      1938         CALL  CO
  2467.   6E30 C9          1939         RET
  2468.                    1940 ;
  2469.                    1941 ; ERROR - DISPLAYS ERROR MESSAGE
  2470.                    1942 ;    ENTER:  HL = ADDRESS OF MESSAGE
  2471.                    1943 ;    RETURNS: ZERO FLAG SET
  2472.                    1944 ;
  2473.  
  2474.  
  2475.  
  2476.  
  2477.  
  2478.  
  2479. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   46
  2480.  
  2481.  
  2482.   LOC  OBJ         SEQ         SOURCE STATEMENT
  2483.  
  2484.   6E31 CD9C6D      1945 ERROR:  CALL  DSPLY
  2485.   6E34 AF          1946         XRA   A
  2486.   6E35 C9          1947         RET
  2487.                    1948 ;
  2488.                    1949 ; ERROR MESSAGES
  2489.                    1950 ;
  2490.   6E36 2D204C41    1951 BLMSG:  DB    '- LABEL NOT FOUND',0DH
  2491.   6E3A 42454C20         
  2492.   6E3E 4E4F5420         
  2493.   6E42 464F554E         
  2494.   6E46 44               
  2495.   6E47 0D               
  2496.                    1952 ;
  2497.   6E48 2F4F5645    1953 IOVMSG: DB    '/OVERFLOW',0DH
  2498.   6E4C 52464C4F         
  2499.   6E50 57               
  2500.   6E51 0D               
  2501.                    1954 ;
  2502.   6E52 2A4E4F20    1955 NRMSG:  DB    '*NO ROOM',0DH
  2503.   6E56 524F4F4D         
  2504.   6E5A 0D               
  2505.                    1956 ;
  2506.   6E5B 2A494C4C    1957 EXPMSG: DB    '*ILLEGAL EXPRESSION',0DH
  2507.   6E5F 4547414C         
  2508.   6E63 20455850         
  2509.   6E67 52455353         
  2510.   6E6B 494F4E           
  2511.   6E6E 0D               
  2512.                    1958 ;
  2513.   6E6F 2A56414C    1959 OVFMSG: DB    '*VALUE >  99',0DH
  2514.   6E73 5545203E         
  2515.   6E77 20203939         
  2516.   6E7B 0D               
  2517.                    1960 ;
  2518.   6E7C 2A56414C    1961 UNFMSG: DB    '*VALUE < -99',0DH
  2519.   6E80 5545203C         
  2520.   6E84 202D3939         
  2521.   6E88 0D               
  2522.                    1962 ;
  2523.   6E89 2A555345    1963 STMSG:  DB    '*USE DEPTH EXCEEDED',0DH
  2524.   6E8D 20444550         
  2525.   6E91 54482045         
  2526.   6E95 58434545         
  2527.   6E99 444544           
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   47
  2535.  
  2536.  
  2537.   LOC  OBJ         SEQ         SOURCE STATEMENT
  2538.  
  2539.   6E9C 0D               
  2540.                    1964 ;
  2541.   6E9D 2A4E554D    1965 NMSG:   DB    '*NUMERIC RESPONSE REQUIRED',0DH
  2542.   6EA1 45524943         
  2543.   6EA5 20524553         
  2544.   6EA9 504F4E53         
  2545.   6EAD 45205245         
  2546.   6EB1 51554952         
  2547.   6EB5 4544             
  2548.   6EB7 0D               
  2549.                    1966 ;
  2550.   6EB8 2A494E54    1967 INTMSG: DB    '*INTERRUPTED',0DH
  2551.   6EBC 45525255         
  2552.   6EC0 50544544         
  2553.   6EC4 0D               
  2554.                    1968 ;
  2555.   6EC5 543A        1969 IBUFF:  DB    'T:',0DH
  2556.   6EC7 0D               
  2557.   6EC8 543A5049    1970         DB    'T:PILOT-8080, 1.1',0DH
  2558.   6ECC 4C4F542D         
  2559.   6ED0 38303830         
  2560.   6ED4 2C20312E         
  2561.   6ED8 31               
  2562.   6ED9 0D               
  2563.                    1971 ;
  2564.   6EDA 3A4C4F41    1972         DB    ':LOAD A NEW PROGRAM?',0DH
  2565.   6EDE 44204120         
  2566.   6EE2 4E455720         
  2567.   6EE6 50524F47         
  2568.   6EEA 52414D3F         
  2569.   6EEE 0D               
  2570.                    1973 ;
  2571.   6EEF 413A        1974         DB    'A:',0DH
  2572.   6EF1 0D               
  2573.                    1975 ;
  2574.   6EF2 4D3A2059    1976         DB    'M: Y',0DH
  2575.   6EF6 0D               
  2576.                    1977 ;
  2577.   6EF7 4A4E3A2A    1978         DB    'JN:*%',0DH
  2578.   6EFB 25               
  2579.   6EFC 0D               
  2580.                    1979 ;
  2581.   6EFD 543A454E    1980         DB    'T:ENTER PILOT PROGRAM',0DH
  2582.   6F01 54455220         
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   48
  2590.  
  2591.  
  2592.   LOC  OBJ         SEQ         SOURCE STATEMENT
  2593.  
  2594.   6F05 50494C4F         
  2595.   6F09 54205052         
  2596.   6F0D 4F475241         
  2597.   6F11 4D               
  2598.   6F12 0D               
  2599.                    1981 ;
  2600.   6F13 3A544552    1982         DB    ':TERMINATE INPUT WITH CTL/Z',0DH
  2601.   6F17 4D494E41         
  2602.   6F1B 54452049         
  2603.   6F1F 4E505554         
  2604.   6F23 20574954         
  2605.   6F27 48204354         
  2606.   6F2B 4C2F5A           
  2607.   6F2E 0D               
  2608.                    1983 ;
  2609.   6F2F 4C4F4144    1984         DB    'LOAD:',0DH
  2610.   6F33 3A               
  2611.   6F34 0D               
  2612.                    1985 ;
  2613.   6F35 2A252049    1986         DB    '*% IEP:',0DH
  2614.   6F39 45503A           
  2615.   6F3C 0D               
  2616.                    1987 ;
  2617.                    1988 ; ORG HERE CAN SET START OF RAM PROGRAM BUFFER SPACE
  2618.                    1989 ;
  2619.   7000             1990         ORG   PBUFB
  2620.   7000 01          1991 PBUFF:  DB    1
  2621.                    1992 ;
  2622.                    1993 ; SOURCE PROGRAM AND $STRING STORAGE HERE TO MEMTP
  2623.   62E0             1994         END     START
  2624.  
  2625. PUBLIC SYMBOLS
  2626.  
  2627.  
  2628. EXTERNAL SYMBOLS
  2629.  
  2630.  
  2631. USER SYMBOLS
  2632. ADDV   A 6BA2    ADRCMP A 667D    ALTSC  A 63D8    AOP    A 69AB    APTR   A 6134    ASCAN  A 6115    ASSIGN A 6C13    
  2633. ASTORE A 6A06    AVAL   A 6BC6    BACKUP A 6801    BADFRM A 64A7    BASIC  A 6C2C    BLKB2  A 6674    BLKBF  A 666B    
  2634. BLKSET A 6661    BLKTFR A 6CA7    BLMSG  A 6E36    BRCHAR A 680C    CANC   A 6D03    CANL   A 6CF8    CENT   A 69D7    
  2635. CGVAL  A 6B7F    CHI    A 6E21    CHK    A 6715    CHMAX  A 6144    CHO    A 6DF7    CHO1   A 6E06    CHOP   A 6D82    
  2636. CI     A 6100    CKEND  A 636C    CKEOL  A 6B31    CKLC   A 6408    CKLN   A 6432    CKNC   A 6B3D    CKNC1  A 6B3E    
  2637. CKNUM  A 69F2    CLC    A 6D70    CLRE   A 65A1    CLRH   A 65B7    CLRL   A 65AC    CMPR   A 674E    CNTLN  A 67F0    
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644. ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0         MODULE   PAGE   49
  2645.  
  2646.  
  2647. CNTWD  A 6799    CO     A 6103    CONTIN A 6396    CONV   A 6C06    COP    A 6B5C    CPTR   A 6138    CRLF   A 6D17    
  2648. CTLMCH A 64C2    CTLST  A 64ED    CURS1  A 6583    CURS2  A 658F    CURS3  A 6596    CURS4  A 659B    CURSR  A 6571    
  2649. CVNUM  A 6615    DECA   A 6A39    DESAV  A 6120    DONT   A 6481    DPRG   A 6DCD    DSPLY  A 6D9C    EBUFF  A 619D    
  2650. EDIT   A 6112    ENDOL  A 6DB3    ENTRY  A 69DB    EOP    A 6C2F    EPTR   A 6136    ERROR  A 6E31    EXIT   A 610F    
  2651. EXMSG  A 6BCA    EXPMSG A 6E5B    FRMCH  A 66CE    FRMU   A 66D8    GETA   A 6992    GETCH  A 677F    GETCTL A 67C4    
  2652. GETLCH A 6787    GETNM  A 6684    GETNUM A 6900    GETWD  A 678F    GETXT  A 68EF    GVALUE A 6BF2    HL2SAV A 611E    
  2653. HLLSAV A 611C    HLSAV  A 611A    IBUFF  A 6EC5    IEP    A 65CF    INDE2  A 6839    INDEX  A 6835    INDX   A 688A    
  2654. INEND  A 6D8E    INIT   A 6332    INITV  A 6C50    INMAX  A 65DC    INMX2  A 65E8    INPT1  A 6D28    INPT2  A 6D3C    
  2655. INPT3  A 6D42    INPT4  A 6D6B    INPUT  A 6D22    INSERT A 6964    INSNUM A 691F    INTMSG A 6EB8    INTR   A 6E11    
  2656. INTSRT A 0038    IOJMP  A 62F7    IOVMSG A 6E48    IPTR   A 613A    JOP    A 661E    JOP2   A 663A    KEYIN  A 6CB8    
  2657. KIN2   A 6CC2    KLN    A 6D74    KOUT   A 6CF4    LABSAV A 623F    LASTOP A 624B    LBL    A 6975    LETTER A 68B3    
  2658. LEVEL  A 6145    LF     A 6D1C    LFND   A 6747    LINE   A 0048    LLSAV  A 6122    LNSKP  A 6146    LO     A 6109    
  2659. LOAD   A 6C3A    LOOK   A 66F7    LOOKL  A 66F0    LOOKS  A 66E9    LPRG   A 6DD7    LSTMCH A 64D8    LTR    A 6C03    
  2660. MBR    A 6AF2    MBRCH  A 6147    MC     A 6A71    MCH    A 677C    MDONE  A 6AC5    MEMTP  A 613E    MMOV   A 6AD3    
  2661. MMOV2  A 6AD9    MNTR   A 0008    MOP    A 6A79    MOP1   A 6A7E    MPTR   A 613C    MSAVE  A 61EE    MVBR   A 67BB    
  2662. MVLAB  A 6723    NCHK   A 6478    NEG    A 66E1    NERR   A 69FA    NEWN   A 6C41    NEXTM  A 6A84    NIN    A 69C3    
  2663. NMCTL  A 65ED    NMSG   A 6E9D    NOMCH  A 6773    NOTL   A 68C1    NRMSG  A 6E52    NSTORE A 6A58    NTFND  A 664E    
  2664. NTR    A 6CDE    NUM    A 644A    NV     A 6C56    NVAR   A 6256    OLDOP  A 63C2    OPS    A 63AA    ORIGN  A 6000    
  2665. OUTADR A 6140    OVCTR  A 6DC0    OVFMSG A 6E6F    OVMSG  A 6BD4    PAD    A 6AFC    PBUFB  A 7000    PBUFE  A 7FFF    
  2666. PBUFF  A 7000    PO     A 610C    PORT   A 00F6    PRGOUT A 6DC1    PSTRT  A 62E0    PUTNM  A 66B8    RDA    A 0002    
  2667. RESRET A 6C8B    RETSAV A 6124    RI     A 6106    ROLL   A 65C4    ROP    A 6C2E    RSTRT  A 630F    RTRN   A 64D6    
  2668. SAV2   A 6C78    SAVOP  A 67E1    SAVRET A 6C66    SCAN   A 635C    SCANB  A 6142    SCNT   A 6148    SDIG   A 66B4    
  2669. SETCNT A 6885    SETUP  A 68C3    SHIFT  A 6B50    SINDX  A 689F    SKLN   A 6456    SMOV   A 6AE7    SPRG   A 6DE7    
  2670. SQUEZ  A 6B2A    START  A 62E0    STKPR  A 6100    STMSG  A 6E89    STOVF  A 6A4F    STPORT A 00F7    SUBV   A 6BB3    
  2671. SWN    A 6ACE    SWY    A 6AC9    TALL   A 690D    TBE    A 0001    TEMP   A 6149    TMORE  A 68DC    TMOVE  A 6906    
  2672. TOP    A 68CC    TOPP   A 6118    TSAVE  A 614C    TXTCK  A 63E9    UNFMSG A 6E7C    UNITS  A 66A8    UNMSG  A 6BE3    
  2673. UOP    A 665B    VARCHK A 6483    VARMCH A 64B4    VARSAV A 614A    VBL    A 6930    VCHK   A 648A    VIDEO  A FE77    
  2674. VOFF   A 64A5    WDTFR  A 67A7    WORD   A 628B    XEND   A 6766    YCHK   A 646F    YENDB  A 6776    YNCHK  A 6460    
  2675. YNOUT  A 67DD    YNSW   A 614B    YNUM   A 6454    ZC     A 689C    
  2676.  
  2677. ASSEMBLY COMPLETE,  NO ERRORS
  2678.  
  2679.  
  2680.  
  2681. ISIS-II ASSEMBLER SYMBOL CROSS REFERENCE, V2.0                     PAGE   1
  2682.  
  2683. ADDV   1531   1534# 
  2684. ADRCMP  628    637# 
  2685. ALTSC   199    214# 
  2686. AOP     422   1232# 
  2687. APTR     73#   103    622   1196   1280   1290   1320   1640   1645  
  2688. ASCAN    56#   215  
  2689. ASSIGN 1551   1560   1567   1600# 
  2690. ASTORE 1239   1277# 
  2691. AVAL   1527   1533   1541   1547   1551# 
  2692. BACKUP  166    940#   946   1089  
  2693. BADFRM  336    341    351#   564   1339   1590   1607  
  2694. BASIC    56    116   1618# 
  2695. BLKB2   626#   629  
  2696. BLKBF   622#  1795  
  2697. BLKSET  612#   617  
  2698. BLKTFR  107    758    916   1011   1121   1142   1168   1186   1221   1286   1296   1446   1459   1720#  1732  
  2699. BLMSG   603   1951# 
  2700. BRCHAR  653    851    868    953# 
  2701. CANC   1748   1750   1774# 
  2702. CANL   1752   1770# 
  2703. CENT   1242   1250# 
  2704. CGVAL  1514   1520# 
  2705. CHI      49     51    109    111   1932#  1934  
  2706. CHK     741    743    750# 
  2707. CHMAX    81#   140    539   1743   1775  
  2708. CHO      50     52     53    110    112    113   1906# 
  2709. CHO1   1908   1912#  1914  
  2710. CHOP   1800   1807   1835# 
  2711. CI       49#   105   1746   1909  
  2712. CKEND   157    160# 
  2713. CKEOL  1468#  1477  
  2714. CKLC    231    236    240# 
  2715. CKLN    250    258    262# 
  2716. CKNC   1471   1474# 
  2717. CKNC1  1475#  1481  
  2718. CKNUM  1247   1265#  1272  
  2719. CLC    1818   1828# 
  2720. CLRE    470    502#   516  
  2721. CLRH    474    512# 
  2722. CLRL    472    507# 
  2723. CMPR    401    765    781#   794   1019  
  2724. CNTLN   160    227    232    241    263    744    924#   934   1005   1087   1278   1288   1444   1457  
  2725. CNTWD   751    769    772    799    803    805    850#   857  
  2726. CO       50#   144    482    484    486    494    500    503    505    508    510    513    515    518    520   1767  
  2727.        1771   1786   1788   1831   1879   1887   1894   1938  
  2728. CONTIN  170    178# 
  2729.  
  2730.  
  2731.  
  2732. ISIS-II ASSEMBLER SYMBOL CROSS REFERENCE, V2.0                     PAGE   2
  2733.  
  2734. CONV   1587# 
  2735. COP     432   1505# 
  2736. CPTR     75#  1097   1102   1119   1141   1152   1185   1195   1523   1584   1586  
  2737. CRLF   1772   1785#  1832   1841  
  2738. CTLMCH  211    378# 
  2739. CTLST   378    418# 
  2740. CURS1   488#   496  
  2741. CURS2   494#   498  
  2742. CURS3   490    497# 
  2743. CURS4   492    499# 
  2744. CURSR   468    481# 
  2745. CVNUM   560    568    569# 
  2746. DECA   1281   1291   1310#  1319  
  2747. DESAV    63#  1100   1117   1139   1146   1161   1170   1183   1190   1213   1223  
  2748. DONT    311    316    319# 
  2749. DPRG    452   1879# 
  2750. DSPLY   602   1126   1836   1850#  1862   1874   1945  
  2751. EBUFF    90#  1254   1277   1285   1332   1364   1368   1741  
  2752. EDIT     55#   465  
  2753. ENDOL  1860   1863# 
  2754. ENTRY  1238   1246   1250   1253#  1263   1271   1924  
  2755. EOP     436   1628# 
  2756. EPTR     74#  1012   1742   1745   1758   1780   1782  
  2757. ERROR   355    604   1270   1325   1556   1563   1570   1677   1838   1923   1945# 
  2758. EXIT     54#   463  
  2759. EXMSG  1510   1554#  1603  
  2760. EXPMSG  354   1555   1957# 
  2761. FRMCH   696    703# 
  2762. FRMU    706    709# 
  2763. GETA   1201   1210# 
  2764. GETCH   168    552    581    737    816#   820    840   1233   1333   1512   1525   1579   1601  
  2765. GETCTL  210    892# 
  2766. GETLCH  302    826#   830    901  
  2767. GETNM   569    651#  1334   1583  
  2768. GETNUM 1107   1115# 
  2769. GETWD   173    555    590    840#  1193  
  2770. GETXT  1105   1109#  1116  
  2771. GVALUE 1520   1532   1535   1543   1579# 
  2772. HL2SAV   62# 
  2773. HLLSAV   61#   992   1004   1016   1371   1466   1478   1480   1515   1518  
  2774. HLSAV    60#   179    201    218    487    551    557    580    587    750    756    768    771    990   1000   1010  
  2775.        1022   1024   1096   1232   1358   1362   1365   1369   1443   1445   1454   1465   1505   1600  
  2776. IBUFF   131   1969# 
  2777. IEP     461    527# 
  2778. INDE2   990#  1025  
  2779. INDEX   988#  1372  
  2780.  
  2781.  
  2782.  
  2783. ISIS-II ASSEMBLER SYMBOL CROSS REFERENCE, V2.0                     PAGE   3
  2784.  
  2785. INDX    183    196    913    996   1035#  1045   1507  
  2786. INEND  1814   1839# 
  2787. INIT    119    131# 
  2788. INITV   137   1651# 
  2789. INMAX   446    533# 
  2790. INMX2   536    539# 
  2791. INPT1  1797#  1804   1824  
  2792. INPT2  1805#  1822   1827  
  2793. INPT3  1803   1808#  1810   1812   1829   1834  
  2794. INPT4  1825# 
  2795. INPUT  1635   1795# 
  2796. INSERT 1109   1179# 
  2797. INSNUM 1115   1135# 
  2798. INTMSG 1922   1967# 
  2799. INTR   1911   1919# 
  2800. INTSRT   28#    30  
  2801. IOJMP   104    109# 
  2802. IOVMSG 1837   1953# 
  2803. IPTR     76#   132    152    164    528    597   1682   1710  
  2804. JOP     428    580#   608  
  2805. JOP2    583    589    590# 
  2806. KEYIN  1253   1741#  1773  
  2807. KIN2   1745#  1764   1778   1783  
  2808. KLN    1816   1830# 
  2809. KOUT   1760   1768# 
  2810. LABSAV   92#   757    763   1236   1287   1295  
  2811. LASTOP   93#   180    915  
  2812. LBL    1181   1187# 
  2813. LETTER  559   1074#  1581   1602  
  2814. LEVEL    82#   142   1628   1671   1698   1711   1842  
  2815. LF     1768   1787#  1823  
  2816. LFND    767    771# 
  2817. LINE     18#   139  
  2818. LLSAV    64#   181    192    194    209    214    217    351    914   1098   1113   1798   1833   1835  
  2819. LNSKP    83#   143    237    239    259    261    269    271    286  
  2820. LO       52#  1884  
  2821. LOAD    443   1634# 
  2822. LOOK    733    737#   748    749    770  
  2823. LOOKL   592    734# 
  2824. LOOKS   731#  1198  
  2825. LPRG    455   1884# 
  2826. LSTMCH  379    400#   414  
  2827. LTR    1582   1586# 
  2828. MBR    1406   1427# 
  2829. MBRCH    84#  1353   1356   1431  
  2830. MC      426   1353# 
  2831.  
  2832.  
  2833.  
  2834. ISIS-II ASSEMBLER SYMBOL CROSS REFERENCE, V2.0                     PAGE   4
  2835.  
  2836. MCH     798    808# 
  2837. MDONE  1381   1385   1387# 
  2838. MEMTP    78#   135   1642  
  2839. MMOV   1360   1404# 
  2840. MMOV2  1406#  1413  
  2841. MNTR     20#    54     55    114    115  
  2842. MOP     424   1356# 
  2843. MOP1   1355   1358# 
  2844. MPTR     77#  1359   1361   1377   1404   1420  
  2845. MSAVE    91#  1370   1405  
  2846. MVBR    869    879# 
  2847. MVLAB   754    756# 
  2848. NCHK    306    314# 
  2849. NEG     694    717# 
  2850. NERR   1266   1269# 
  2851. NEWN    136    449   1640# 
  2852. NEXTM  1360#  1386  
  2853. NIN    1235   1241# 
  2854. NMCTL   533    551# 
  2855. NMSG   1269   1965# 
  2856. NOMCH   791    803# 
  2857. NOTL   1077   1079   1082# 
  2858. NRMSG  1324   1955# 
  2859. NSTORE 1248   1332# 
  2860. NTFND   594    601# 
  2861. NTR    1754   1756# 
  2862. NUM     267    274# 
  2863. NV     1654#  1664  
  2864. NVAR     94#   363   1651  
  2865. OLDOP   184    203# 
  2866. OPS     175    192#  1262  
  2867. ORIGN    14#    15     16     17     21  
  2868. OUTADR   79#   145   1857   1864   1880   1885   1888   1892   1895  
  2869. OVCTR  1858   1865   1869# 
  2870. OVFMSG 1562   1959# 
  2871. OVMSG  1539   1559# 
  2872. PAD    1366   1438# 
  2873. PBUFB    16#  1990  
  2874. PBUFE    17#   102    134  
  2875. PBUFF   226    240    262    527    624   1634   1796   1873   1991# 
  2876. PO       53#  1891  
  2877. PORT     23#  1916   1935  
  2878. PRGOUT 1873#  1876   1881   1886   1893  
  2879. PSTRT    15#   100  
  2880. PUTNM   691#   702   1160  
  2881. RDA      25#  1907   1933  
  2882.  
  2883.  
  2884.  
  2885. ISIS-II ASSEMBLER SYMBOL CROSS REFERENCE, V2.0                     PAGE   5
  2886.  
  2887. RESRET 1631   1698# 
  2888. RETSAV   65#  1684   1701  
  2889. RI       51#  1801   1808  
  2890. ROLL    476    517# 
  2891. ROP     430   1624# 
  2892. RSTRT   108    118#   121   1261   1630  
  2893. RTRN    384    391# 
  2894. SAV2   1675   1679# 
  2895. SAVOP   193    912# 
  2896. SAVRET  607   1671# 
  2897. SCAN    120    152#   159    171    174    176  
  2898. SCANB    80#   133    529    591  
  2899. SCNT     85#   989   1001   1003   1026  
  2900. SDIG    654    656    658    682# 
  2901. SETCNT 1021   1026# 
  2902. SETUP  1087#  1120   1164   1217  
  2903. SHIFT  1479   1487#  1495  
  2904. SINDX  1055#  1067   1103  
  2905. SKLN    167    243    252    265    286#   291    736   1867  
  2906. SMOV   1407   1414# 
  2907. SPRG    458   1891# 
  2908. SQUEZ  1363   1367   1465#  1473  
  2909. START    32    101#  1994  
  2910. STKPR    21#    48    101    118  
  2911. STMSG  1676   1963# 
  2912. STOVF  1315   1324# 
  2913. STPORT   24#  1906   1912   1932  
  2914. SUBV   1519   1529   1542# 
  2915. SWN    1387   1394# 
  2916. SWY    1375   1390# 
  2917. TALL   1114   1120# 
  2918. TBE      26#  1913  
  2919. TEMP     86#   732    735    746   1517   1521   1536   1544  
  2920. TMORE  1102#  1111  
  2921. TMOVE  1108   1117# 
  2922. TOP     219    353    420    438    440   1096#  1554   1561   1568  
  2923. TOPP     59#  1840  
  2924. TSAVE    89#  1099   1112   1125  
  2925. TXTCK   226#   530  
  2926. UNFMSG 1569   1961# 
  2927. UNITS   673#   683  
  2928. UNMSG  1549   1566# 
  2929. UOP     434    607# 
  2930. VARCHK  207    328# 
  2931. VARMCH  339    363#   371    562   1154   1337   1588   1605  
  2932. VARSAV   87#  1245   1335  
  2933.  
  2934.  
  2935.  
  2936. ISIS-II ASSEMBLER SYMBOL CROSS REFERENCE, V2.0                     PAGE   6
  2937.  
  2938. VBL    1137   1143# 
  2939. VCHK    329    332# 
  2940. VIDEO    19# 
  2941. VOFF    345    348# 
  2942. WDTFR   588    842    867#   878    893   1237  
  2943. WORD     95#   400    558    585    586    601    764    841    892   1009   1018   1159   1163   1438   1456   1458  
  2944. XEND    783    795# 
  2945. YCHK    304    309# 
  2946. YENDB   789    804# 
  2947. YNCHK   204    302# 
  2948. YNOUT   903    906# 
  2949. YNSW     88#   309    314   1391   1395  
  2950. YNUM    277    280# 
  2951. ZC     1040   1046# 
  2952.  
  2953. CROSS REFERENCE COMPLETE