Jump to content
IGNORED

TIPI Usage and Support


jedimatt42

Recommended Posts

1 hour ago, Lee Stewart said:

 

>10 (the value of LINK) is not a reference to the DSR’s list, but rather the address in the branch table, near the beginning of GROM0, of the DSRLNK branch:

  Hide contents


********************************************************************************
*                                                                              *
*                       CONSOLE GROM 0 ANALYSIS TI99/4A                        *
*                                                                              *
*                              9.6.84 H. Martin                                *
*                                                                              *
********************************************************************************
Header:
0000 : DATA  >AA02  Header
0002 : DATA  >0000  
0004 : DATA  >0000  Power-up (isn't here)
0006 : DATA  >0000  Program (isn't here)
0008 : DATA  >1310  DSR
000A : DATA  >1320  Subroutine
000C : DATA  >0000  Interrupt (isn't here)
000E : DATA  >0000  
Jump table:
0010 : BR    GROM@>03D9  GROM DSRLNK        <<<------<<<
0012 : BR    GROM@>0439  GSR return
   .
   .
   .

 

 

The BYTE (>08) following the CALL is the DSR’s reference to level 3 routines, I believe.

 

...lee

Hmmm I am using the same exact GPL routine Editor Assembler uses, so why does it not crash Editor Assembler or Classic99 as there would be a error?

  • Like 1
Link to comment
Share on other sites

I think I might know the issue here. When I save using CALL PSAVE and CALL PLOAD I am creating a file with no headers or address locations, just size.

TI Disk controllers do not care and just save the Program Image file or load it.

When I try to use DM2K to copy my files it crashes with DSR Erroo error and says CRU Device Error

TIPI really can not deal with my files like these, I can catalog them but not move or copy or delete them.

  • Like 1
  • Sad 1
Link to comment
Share on other sites

18 minutes ago, GDMike said:

Sounds like you found it

Yes but that would mean TIPI is doing something unlike Disk Controllers or Hard Drive Controllers or Classic99 or MESS that all have no issues.
I have used this for since 2001 so I am not the problem really unless we have a new standard that has changed.

Something new is being done with the file system is obvious.

Just for a test I copied DM2K off of TIPI files onto Classic99 DSK4. and ran it, guess what no issues Catalog, Copy or Move....found issue!

TIPI seems to do something unlike others with those files.

So here is a attachment of the program disk files.

PLOADPSAVE.zip

Link to comment
Share on other sites

8 minutes ago, RXB said:

I think I might know the issue here. When I save using CALL PSAVE and CALL PLOAD I am creating a file with no headers or address locations, just size.

TI Disk controllers do not care and just save the Program Image file or load it.

When I try to use DM2K to copy my files it crashes with DSR Erroo error and says CRU Device Error

TIPI really can not deal with my files like these, I can catalog them but not move or copy or delete them.

If you are doing a DSRLNK from Grom, don't you still have to still setup a PAB that tells starting/ending locations, file type beyond the length?  I don't see how even the TI Disk controller would know what to save and/or how much and where-from, if you don't give it those pieces of information.  Even if the information is in some workspace, it would seem like some kind of PAB needs to be built and passed before calling the TIPI DSR routines.  I guess it is possible the GPL is building that header for you someplace but whether it is a legitimate header, sounds like it may be part of the issue.

 

If you use a file editor from Windows and look at a TIPI file, it has a TIFILES header for the first >80 bytes.  Those >80 bytes don't transfer with the file during the load, rather it is sorta equivalent to the File Descriptor Record, less the sector bitmap details.  

 

I think the only way the TIPI knows how to mark the file, is you must give it that information.  From your detail with DM2K not being able to copy those files, it looks like there is either missing, or a total complete lack of a TIFILES header.  Use TIDIR on one of those files that you can't display, and look at it with the hex editor at the first >80 bytes.  I think the first  >10 or first >20 gives all the details on the file.

 

Beery

 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

6 minutes ago, BeeryMiller said:

If you are doing a DSRLNK from Grom, don't you still have to still setup a PAB that tells starting/ending locations, file type beyond the length?  I don't see how even the TI Disk controller would know what to save and/or how much and where-from, if you don't give it those pieces of information.  Even if the information is in some workspace, it would seem like some kind of PAB needs to be built and passed before calling the TIPI DSR routines.  I guess it is possible the GPL is building that header for you someplace but whether it is a legitimate header, sounds like it may be part of the issue.

 

If you use a file editor from Windows and look at a TIPI file, it has a TIFILES header for the first >80 bytes.  Those >80 bytes don't transfer with the file during the load, rather it is sorta equivalent to the File Descriptor Record, less the sector bitmap details.  

 

I think the only way the TIPI knows how to mark the file, is you must give it that information.  From your detail with DM2K not being able to copy those files, it looks like there is either missing, or a total complete lack of a TIFILES header.  Use TIDIR on one of those files that you can't display, and look at it with the hex editor at the first >80 bytes.  I think the first  >10 or first >20 gives all the details on the file.

 

Beery

 

Ok if that is the case why is TIPI the only one that has a issue? I have used Corcomp, Myarc, Horizon RAMDISK, MESS, Classic99 and SCSI with no issues since 2001.

TIPI is a fantastic product and idea and I love it, but God did not make and design it perfectly anymore then RXB has ever been perfect.

I posted  an attachment of the files and you can use TIDir to look at them. But I also posted a copy of one.

Link to comment
Share on other sites

Rich,

 

I looked at one of the files you posted in its entirety in the forum, and then looked at the notes on the TIFILES header at TIFAQ II (99er.net) .  I don't see an obvious issue in those first 16 bytes for a Program Image file.

 

I might suggest trying to find a file like CHARS that is under 8K, copy it to the TIPI, and see what happens if you can load it.  That might tell you something about the first 6 bytes of the file, but I don't think that should be any different.  If it does work, then save it back out but under a different filename and compare the two files and see if you can then load the newly created file.

 

Right now, just trying to give you ideas on where you might need to troubleshoot.


Beery

 

  • Like 1
Link to comment
Share on other sites

6 minutes ago, BeeryMiller said:

Rich,

 

I looked at one of the files you posted in its entirety in the forum, and then looked at the notes on the TIFILES header at TIFAQ II (99er.net) .  I don't see an obvious issue in those first 16 bytes for a Program Image file.

 

I might suggest trying to find a file like CHARS that is under 8K, copy it to the TIPI, and see what happens if you can load it.  That might tell you something about the first 6 bytes of the file, but I don't think that should be any different.  If it does work, then save it back out but under a different filename and compare the two files and see if you can then load the newly created file.

 

Right now, just trying to give you ideas on where you might need to troubleshoot.


Beery

 

The files are a copy of all VDP in the TI99/4A, to be exact the first 2079 bytes of VDP of Screen, Colors, Character Definition and Sprite Tables.

Here is a demo of it on video: RXBBLOADBSAVEAMS.avi - YouTube

This video is from 2011 

  • Like 1
Link to comment
Share on other sites

2 hours ago, RXB said:

Hmmm I am using the same exact GPL routine Editor Assembler uses, so why does it not crash Editor Assembler or Classic99 as there would be a error?

 

I am pretty sure you are not using the same DSRLNK as Editor/Assembler. You are using the console’s GPL DSRLNK. Editor/Assembler uses its own DSRLNK from where it copied it in low expansion RAM, which only searches peripheral ROMs (no tape or GROM DSRs are searched).

 

...lee

  • Like 1
Link to comment
Share on other sites

14 hours ago, RXB said:

No as it is in GPL first it search's all the GPL DSR for the Device Name then it goes to ROM and searches.

Right, however, removing the floppy controller - which also responds to DSKx requests - was intended to quickly rule out that the floppy controller is 'intercepting' a request you think should be going to the TIPI.  I haven't had a chance to read all of the new posts.

  • Like 3
Link to comment
Share on other sites

Right, however, removing the floppy controller - which also responds to DSKx requests - was intended to quickly rule out that the floppy controller is 'intercepting' a request you think should be going to the TIPI.  I haven't had a chance to read all of the new posts.

That would make sense because the tipi doesn't log any of the requests

 

If the tipi doesn't log something that means it wasn't asked for it

 

Sent from my LM-V600 using Tapatalk

 

 

 

  • Like 1
Link to comment
Share on other sites

1 hour ago, Lee Stewart said:

 

I am pretty sure you are not using the same DSRLNK as Editor/Assembler. You are using the console’s GPL DSRLNK. Editor/Assembler uses its own DSRLNK from where it copied it in low expansion RAM, which only searches peripheral ROMs (no tape or GROM DSRs are searched).

 

...lee

OMG I wrote a version of Editor Assembler. You think I do not know what I am looking at in GPL?

Spoiler

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0001 
Version 2.0 (Weiand 1985)     Options : LCSFPF                                  
[0001]                
[0002]               ***********************************************************
[0003]                      COPY 'DSK5.MYXB7-A'
<0001>                      TITL 'REA GROM 7'
<0002>               *
<0003>               * GROM
<0004>               *
<0005> 0000          G0000  EQU   >0000
<0006> 0001          G0001  EQU   >0001
<0007> 0010          DSRLNK EQU   >0010
<0008> 0012          DSRRET EQU   >0012
<0009> 001C          BERR   EQU   >001C
<0010> 0038          BGETSS EQU   >0038
<0011> 6372          RXB    EQU   >6372
<0012>               *
<0013>               * CPU
<0014>               *
<0015> 8318          CHRCUR EQU   >8318
<0016> 831C          PABPTR EQU   >831C
<0017> 831E          COUNT  EQU   >831E            CATALOG COUNT FILES
<0018> 8320          CURADD EQU   >8320
<0019> 8322          CODE   EQU   >8322
<0020> 8324          STLN   EQU   >8324
<0021> 8326          ENDLN  EQU   >8326
<0022> 8342          XTOKEN EQU   >8342
<0023> 8347          LDFLAG EQU   >8347
<0024> 8348          FLAG   EQU   >8348
<0025> 8349          FLAG2  EQU   >8349
<0026> 834A          FAC    EQU   >834A
<0027> 834B          FAC1   EQU   >834B
<0028> 834C          FAC2   EQU   >834C
<0029> 834D          FAC3   EQU   >834D
<0030> 834E          FAC4   EQU   >834E
<0031> 834F          FAC5   EQU   >834F
<0032> 8350          FAC6   EQU   >8350
<0033> 8351          FAC7   EQU   >8351
<0034> 8352          FAC8   EQU   >8352
<0035> 8353          FAC9   EQU   >8353
<0036> 8354          ERCODE EQU   >8354
<0037> 8355          FAC11  EQU   >8355
<0038> 8356          FAC12  EQU   >8356
<0039> 8356          VPAB   EQU   >8356
<0040> 835C          ARG    EQU   >835C
<0041> 836E          VSTACK EQU   >836E
<0042> 8373          SUBSTK EQU   >8373
<0043> 8374          KBNO   EQU   >8374
<0044> 8375          KEY    EQU   >8375
<0045> 8379          ITIMER EQU   >8379
<0046> 837D          VCHAR  EQU   >837D
<0047>               *
<0048>               * GENERAL
<0049>               *
<0050> 0001          AID    EQU   1
<0051> 0002          CLEAR  EQU   2
<0052> 0006          REDO   EQU   6
<0053> 000C          PROCD  EQU   12
<0054> 000D          ENTER  EQU   13
<0055> 000E          BEGIN  EQU   14
<0056> 000F          BACK   EQU   15
<0057> 0020          SPACE  EQU   32
<0058>               * XML's ************
<0059> 0002          ROUND  EQU   >02
<0060> 0023          CIF    EQU   >23
<0061>               * VDP **************
<0062> 077F          COLOR  EQU   >077F

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0002 
REA GROM 7
<0063>               ***********************************************************
<0064>                      GROM >E000
<0065>                      AORG >0000
<0066>                      TITL  'E/A GROM'
<0067>               * GROM Header
<0068> E000 AA,10,01        BYTE  >AA,>10,>01,>00
       E003 00
<0069>               * RXB PATCH CODE FOR RXB MODULE *
<0070> E004 00,00           DATA >0000             * POWER UP
<0071> E006 E0,10           DATA  MENU             * Cartridge menu
<0072> E008 FC,B7           DATA  VEIW40           * DSRs
<0073> E00A 00,00           DATA  >0000            * SUBROUTINES
<0074> E00C 00,00,00        DATA  >0000,>0000
       E00F 00
<0075> E010 00,00    MENU   BYTE  >00,>00
<0076> E012 E0,25           DATA  SOLDEA
<0077> E014 10,52,58        STRI  'RXB SUPER E/A   '
       E017 42,20,53
       E01A 55,50,45
       E01D 52,20,45
       E020 2F,41,20
       E023 20,20
<0078> E025 06,E6,DB SOLDEA CALL  NESCRN
<0079> E028 CA,42,38 OLDEA  CHE   >38,@XTOKEN
<0080> E02B 60,32           BS    CLREA
<0081> E02D CA,42,31        CHE   >31,@XTOKEN
<0082> E030 60,37           BS    NEWEA
<0083> E032 06,EF,65 CLREA  CALL  CLRREA
<0084> E035 86,42           CLR   @XTOKEN
<0085> E037 87,8F,9D NEWEA  DCLR  @>2000
       E03A 00
<0086> E03B 06,E6,E1 GE029  CALL  EASCRN
<0087> E03E 86,44           CLR   @>8344           * SEARCH FLAG
<0088> E040 BF,4A,0B        DST   >0B00,@FAC
       E043 00
<0089> E044 06,00,4A        CALL  UPCASE
<0090> E047 86,74    GE056  CLR   @KBNO
<0091> E049 BF,4A,09        DST   >0900,@FAC
       E04C 00
<0092> E04D 06,00,18        CALL  LOCASE
<0093> E050 86,A8,00        CLR   V@>0800
<0094> E053 35,00,FF        MOVE  >00FF,V@>0800,V@>0801
       E056 A8,01,A8
       E059 00
<0095> E05A 39,00,06        MOVE  6,G@VREGS,#1
       E05D 01,ED,DC
<0096> E060 06,EE,22        CALL  BUGS
<0097> E063 31,00,10        MOVE  16,G@CURPAT,V@>08F0
       E066 A8,F0,ED
       E069 CC
<0098> E06A 31,00,10        MOVE  16,G@DARROW,V@>0C10
       E06D AC,10,E1
       E070 7F
<0099>               *
<0100>               *  Display Main Menu
<0101>               *
<0102> E071 BE,73,7E MMENU  ST    >7E,@SUBSTK
<0103> E074 87,22           DCLR  @CODE
<0104> E076 87,48           DCLR  @FLAG
<0105> E078 86,47           CLR   @LDFLAG
<0106> E07A 07,20           ALL   SPACE
<0107> E07C CA,42,38 GE116  CHE   >38,@XTOKEN
<0108> E07F 60,86           BS    MSCRN
<0109> E081 CA,42,31        CHE   >31,@XTOKEN

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0003 
E/A GROM
<0110> E084 61,8F           BS    MYEAXB
<0111> E086 87,7E    MSCRN  HOME
<0112> E088 08              FMT
<0113> E089 FF,08           COL   8
<0114> E08B 0F,46,49        HTEX  'FIRMWARE CONTROL'
       E08E 52,4D,57
       E091 41,52,45
       E094 20,43,4F
       E097 4E,54,52
       E09A 4F,4C
<0115> E09C A0              ROW+  1
<0116> E09D FF,00           COL   0
<0117> E09F 5F,5F           HCHAR 32,95
<0118> E0A1 A0              ROW+  1
<0119> E0A2 FF,02           COL   2
<0120> E0A4 1C,52,58        HTEX  'RXB Editor & Assembler V=2001'
       E0A7 42,20,45
       E0AA 64,69,74
       E0AD 6F,72,20
       E0B0 26,20,41
       E0B3 73,73,65
       E0B6 6D,62,6C
       E0B9 65,72,20
       E0BC 56,3D,32
       E0BF 30,30,31
<0121> E0C2 A0              ROW+  1
<0122> E0C3 FF,00           COL   0
<0123> E0C5 5F,5F           HCHA  32,95
<0124> E0C7 A0              ROW+  1
<0125> E0C8 FF,08           COL   8
<0126> E0CA 11,30,20        HTEX  '0    SCREEN COLORS'
       E0CD 20,20,20
       E0D0 53,43,52
       E0D3 45,45,4E
       E0D6 20,43,4F
       E0D9 4C,4F,52
       E0DC 53
<0127> E0DD A1              ROW+  2
<0128> E0DE FF,08           COL   8
<0129> E0E0 0A,31,20        HTEX  '1    EDITOR'
       E0E3 20,20,20
       E0E6 45,44,49
       E0E9 54,4F,52
<0130> E0EC A1              ROW+  2
<0131> E0ED FF,08           COL   8
<0132> E0EF 0D,32,20        HTEX  '2    ASSEMBLER'
       E0F2 20,20,20
       E0F5 41,53,53
       E0F8 45,4D,42
       E0FB 4C,45,52
<0133> E0FE A1              ROW+  2
<0134> E0FF FF,08           COL   8
<0135> E101 10,33,20        HTEX  '3    LOAD and RUN'
       E104 20,20,20
       E107 4C,4F,41
       E10A 44,20,61
       E10D 6E,64,20
       E110 52,55,4E
<0136> E113 A1              ROW+  2
<0137> E114 FF,08           COL   8
<0138> E116 07,34,20        HTEX  '4    RUN'
       E119 20,20,20
       E11C 52,55,4E
<0139> E11F A1              ROW+  2

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0004 
E/A GROM
<0140> E120 FF,08           COL   8
<0141> E122 14,35,20        HTEX  '5    RUN PROGRAM FILE'
       E125 20,20,20
       E128 52,55,4E
       E12B 20,50,52
       E12E 4F,47,52
       E131 41,4D,20
       E134 46,49,4C
       E137 45
<0142> E138 A1              ROW+  2
<0143> E139 FF,08           COL   8
<0144> E13B 11,36,20        HTEX  '6    R X B  LOADER'
       E13E 20,20,20
       E141 52,20,58
       E144 20,42,20
       E147 20,4C,4F
       E14A 41,44,45
       E14D 52
<0145> E14E A1              ROW+  2
<0146> E14F FF,08           COL   8
<0147> E151 0D,37,20        HTEX  '7    DIRECTORY'
       E154 20,20,20
       E157 44,49,52
       E15A 45,43,54
       E15D 4F,52,59
<0148> E160 A1              ROW+  2
<0149> E161 FF,08           COL   8
<0150> E163 09,2E,20        HTEX  '.    R X B'
       E166 20,20,20
       E169 52,20,58
       E16C 20,42
<0151> E16E FB              FEND
<0152> E16F 03       NEWSCN SCAN
<0153> E170 41,6F           BR    NEWSCN
<0154> E172 D6,75,2E        CEQ   >2E,@KEY
<0155> E175 61,7C           BS    RTRXB
<0156> E177 D6,75,0F        CEQ   BACK,@KEY
<0157> E17A 41,99           BR    GE11F
<0158> E17C 05,63,72 RTRXB  B     RXB
<0159> E17F 00,10,18 DARROW DATA  >0010,>18FC,>1810,>0000 * RIGHT ARROW
       E182 FC,18,10
       E185 00,00
<0160> E187 00,20,60        DATA  >0020,>60FC,>6020,>0000 * LEFT ARROW
       E18A FC,60,20
       E18D 00,00
<0161> E18F 87,AF,22 MYEAXB DCLR  V@>2250
       E192 50
<0162> E193 BC,75,42        ST    @XTOKEN,@KEY
<0163> E196 BE,42,EA        ST    >EA,@XTOKEN
<0164> E199 A6,75,30 GE11F  SUB   >30,@KEY
<0165> E19C CA,75,0A        CHE   >0A,@KEY
<0166> E19F 61,6F           BS    NEWSCN
<0167> E1A1 8A,75           CASE  @KEY
<0168> E1A3 41,B7           BR    COLORS           * SCREEN COLOR 0
<0169> E1A5 42,46           BR    EDITOR                          1
<0170> E1A7 48,2D           BR    ASSEM                           2
<0171> E1A9 49,E4           BR    LANDR            * EA3          3
<0172> E1AB 4A,59           BR    RUN                             4
<0173> E1AD 47,16           BR    PRGRM            * EA5          5
<0174> E1AF 4E,D9           BR    XBINP            * XBINPT       6
<0175> E1B1 56,C4           BR    DIRECT           * DIRECTORY    7
<0176> E1B3 40,28           BR    OLDEA                           8
<0177> E1B5 40,28           BR    OLDEA                           9
<0178>               *******************************

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0005 
E/A GROM
<0179>               *
<0180> E1B7 07,20    COLORS ALL   SPACE
<0181> E1B9 06,E6,E1        CALL  EASCRN
<0182> E1BC 08              FMT
<0183> E1BD FF,0B           COL   >0B
<0184> E1BF FE,01           ROW   1
<0185> E1C1 09,2A,20        HTEX  '* COLORS *'
       E1C4 43,4F,4C
       E1C7 4F,52,53
       E1CA 20,2A
<0186> E1CC FF,03           COL   3
<0187> E1CE A2              ROW+  3
<0188> E1CF 0D,46,4F        HTEX  'FORGROUND  = F'
       E1D2 52,47,52
       E1D5 4F,55,4E
       E1D8 44,20,20
       E1DB 3D,20,46
<0189> E1DE FF,03           COL   3
<0190> E1E0 A2              ROW+  3
<0191> E1E1 0D,42,41        HTEX  'BACKGROUND = B'
       E1E4 43,4B,47
       E1E7 52,4F,55
       E1EA 4E,44,20
       E1ED 3D,20,42
<0192> E1F0 FF,03           COL   3
<0193> E1F2 A4              ROW+  5
<0194> E1F3 1A,41,4E        HTEX  'ANY OTHER KEY FOR MAIN MENU'
       E1F6 59,20,4F
       E1F9 54,48,45
       E1FC 52,20,4B
       E1FF 45,59,20
       E202 46,4F,52
       E205 20,4D,41
       E208 49,4E,20
       E20B 4D,45,4E
       E20E 55
<0195> E20F FB              FEND
<0196> E210 03       COLSCN SCAN
<0197> E211 42,10           BR   COLSCN
<0198> E213 BC,00,A7        ST   V@COLOR,@>8300    * Get COLOR byte
       E216 7F
<0199> E217 E6,00,04        SRL  4,@>8300          * Foreground
<0200> E21A BC,01,A7        ST   V@COLOR,@>8301    * Get COLOR byte
       E21D 7F
<0201> E21E E2,01,04        SLL  4,@>8301          * Strip left bits
<0202> E221 E6,01,04        SRL  4,@>8301          * Restore bits
<0203> E224 D6,75,46        CEQ  'F',@KEY
<0204> E227 42,2D           BR   COLBAC
<0205> E229 90,00           INC  @>8300            * Foreground+1
<0206> E22B 42,3A           BR   COLEND
<0207> E22D D6,75,42 COLBAC CEQ  'B',@KEY
<0208> E230 40,3B           BR   GE029
<0209> E232 90,01           INC  @>8301            * Background+1
<0210> E234 E2,01,04        SLL  4,@>8301          * Strip left bits
<0211> E237 E6,01,04        SRL  4,@>8301          * Restore bits
<0212> E23A E2,00,04 COLEND SLL  4,@>8300          * Restore left bits
<0213> E23D A0,00,01        ADD  @>8301,@>8300     * Get Background
<0214> E240 BC,A7,7F        ST   @>8300,V@COLOR    * Add to COLOR
       E243 00
<0215> E244 41,B7           BR   COLORS
<0216>               *
<0217>               *  Main Menu Option 1: EDIT
<0218>               *
<0219> E246 06,E6,E1 EDITOR CALL  EASCRN

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0006 
E/A GROM
<0220> E249 87,48           DCLR  @FLAG
<0221> E24B 86,47           CLR   @LDFLAG
<0222> E24D 08              FMT
<0223> E24E FF,0B           COL   >0B
<0224> E250 FE,01           ROW   1
<0225> E252 09,2A,20        HTEX  '* EDITOR *'
       E255 45,44,49
       E258 54,4F,52
       E25B 20,2A
<0226> E25D A2              ROW+  3
<0227> E25E FF,03           COL   3
<0228> E260 08,31,20        HTEX  '1    LOAD'
       E263 20,20,20
       E266 4C,4F,41
       E269 44
<0229> E26A A0              ROW+  1
<0230> E26B 96              COL+  23
<0231> E26C 08,32,20        HTEX  '2    EDIT'
       E26F 20,20,20
       E272 45,44,49
       E275 54
<0232> E276 A0              ROW+  1
<0233> E277 96              COL+  23
<0234> E278 08,33,20        HTEX  '3    SAVE'
       E27B 20,20,20
       E27E 53,41,56
       E281 45
<0235> E282 A0              ROW+  1
<0236> E283 96              COL+  23
<0237> E284 09,34,20        HTEX  '4    PRINT'
       E287 20,20,20
       E28A 50,52,49
       E28D 4E,54
<0238> E28F A0              ROW+  1
<0239> E290 95              COL+  22
<0240> E291 09,35,20        HTEX  '5    VIEW '
       E294 20,20,20
       E297 56,49,45
       E29A 57,20
<0241> E29C A0              ROW+  1
<0242> E29D 95              COL+  22
<0243> E29E 09,36,20        HTEX  '6    PURGE'
       E2A1 20,20,20
       E2A4 50,55,52
       E2A7 47,45
<0244> E2A9 A0              ROW+  1
<0245> E2AA 95              COL+  22
<0246> E2AB FB              FEND
<0247> E2AC 87,48           DCLR  @FLAG
<0248> E2AE BE,73,7E        ST    >7E,@SUBSTK
<0249> E2B1 BF,20,00        DST   >0082,@CURADD
       E2B4 82
<0250> E2B5 03       GE19B  SCAN
<0251> E2B6 42,B5           BR    GE19B
<0252> E2B8 D6,75,0F        CEQ   BACK,@KEY
<0253> E2BB 60,32           BS    CLREA
<0254> E2BD A6,75,31        SUB   >31,@KEY
<0255> E2C0 CA,75,06        CHE   >06,@KEY
<0256> E2C3 62,B5           BS    GE19B
<0257> E2C5 BC,00,75        ST    @KEY,@>8300
<0258> E2C8 AA,00,40        MUL   >40,@>8300
<0259> E2CB A1,20,00        DADD  @>8300,@CURADD
<0260> E2CE BE,B0,20        ST    130,V*CURADD
       E2D1 82

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0007 
E/A GROM
<0261> E2D2 BC,04,75        ST    @KEY,@>8304
<0262> E2D5 D6,75,05        CEQ   >05,@KEY         * PURGE?
<0263> E2D8 42,FF           BR    GE1E4            * No, next check
<0264>               *  Edit Menu Option 6: PURGE
<0265> E2DA 08              FMT
<0266> E2DB A1              ROW+  2
<0267> E2DC 13,41,72        HTEX  'Are you sure (Y/N)? '
       E2DF 65,20,79
       E2E2 6F,75,20
       E2E5 73,75,72
       E2E8 65,20,28
       E2EB 59,2F,4E
       E2EE 29,3F,20
<0268> E2F1 FB              FEND
<0269> E2F2 06,E9,B7        CALL  YESNO
<0270> E2F5 D6,75,59        CEQ   >59,@KEY
<0271> E2F8 42,46           BR    EDITOR
<0272> E2FA 06,E7,08        CALL  CLRXOP
<0273> E2FD 42,46    GE1E2  BR    EDITOR
<0274> E2FF D6,75,03 GE1E4  CEQ   >03,@KEY         * PRINT?
<0275> E302 63,54           BS    GE1FC            * YES!
<0276> E304 D6,75,04        CEQ   >04,@KEY         * VIEW
<0277> E307 63,54           BS    GE1FC
<0278> E309 D7,8F,9D        DCEQ  >55AA,@>2000     * EDIT1 loaded?
       E30C 00,55,AA
<0279> E30F 63,54           BS    GE1FC            * Yes
<0280> E311 35,00,63        MOVE  99,V@>2250,@>EA00
       E314 8F,67,00
       E317 AF,22,50
<0281> E31A BC,8F,7C        ST    @XTOKEN,@>FFFB
       E31D FB,42
<0282> E31F 86,42           CLR   @XTOKEN
<0283> E321 31,00,08        MOVE  8,G@CUREDP,V@>08F0
       E324 A8,F0,ED
       E327 C4
<0284> E328 06,E7,AE        CALL  LODPGM           * Load EDIT1
<0285> E32B E8,28           DATA  DEDIT1
<0286> E32D 06,EE,3C        CALL  DEVICE
<0287> E330 D6,75,0F        CEQ   BACK,@KEY
<0288> E333 62,46           BS    EDITOR
<0289> E335 BE,47,01        ST    1,@LDFLAG        * Set Editor flag
<0290> E338 06,E7,D9 GE1F6  CALL  PGMLOD
<0291> E33B D7,8F,9D        DCEQ  >55AA,@>2000
       E33E 00,55,AA
<0292> E341 42,46           BR    EDITOR
<0293> E343 06,E7,08        CALL  CLRXOP
<0294> E346 35,00,63        MOVE  99,@>EA00,V@>2250
       E349 AF,22,50
       E34C 8F,67,00
<0295> E34F BC,42,8F        ST    @>FFFB,@XTOKEN
       E352 7C,FB
<0296> E354 D6,04,01 GE1FC  CEQ   >01,@>8304       * Edit?
<0297> E357 63,CF           BS    EMOPT2           * Yes
<0298> E359 D6,04,02        CEQ   >02,@>8304       * Save?
<0299> E35C 43,90           BR    GE237            * No
<0300>               *  Edit Menu Option 3: SAVE
<0301> E35E 86,42           CLR   @XTOKEN
<0302> E360 08              FMT
<0303> E361 FF,02       COL   2
<0304> E363 FE,10       ROW   16
<0305> E365 12,44,56    HTEX  'DV80 Format (Y/N)? '
       E368 38,30,20
       E36B 46,6F,72
       E36E 6D,61,74

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0008 
E/A GROM
       E371 20,28,59
       E374 2F,4E,29
       E377 3F,20
<0306> E379 FB          FEND
<0307> E37A 06,E9,B7        CALL  YESNO
<0308> E37D D6,75,59        CEQ   >59,@KEY
<0309> E380 43,85           BR    GE22C
<0310> E382 B6,49,02        OR    >02,@FLAG2
<0311> E385 D6,75,0F GE22C  CEQ   BACK,@KEY
<0312> E388 62,46           BS    EDITOR
<0313> E38A BF,20,02        DST   >0262,@CURADD
       E38D 62
<0314> E38E 43,9B           BR    GE23B
<0315> E390 BF,20,02 GE237  DST   >0202,@CURADD    * Print or View or Load
       E393 02
<0316> E394 35,00,FF        MOVE  255,V@>0200,V@>201
       E397 A2,01,A2
       E39A 00
<0317> E39B 31,00,0A GE23B  MOVE  10,G@GE25B,V*CURADD
       E39E B0,20,E3
       E3A1 C5
<0318> E3A2 A3,20,00        DADD  >0040,@CURADD
       E3A5 40
<0319> E3A6 BF,1C,10        DST   >1000,@PABPTR
       E3A9 00
<0320> E3AA 06,E5,1D        CALL  GETALL
<0321> E3AD D6,75,0F        CEQ   BACK,@KEY        * BACK?
<0322> E3B0 60,32           BS    CLREA
<0323> E3B2 D6,04,02        CEQ   >02,@>8304       * Save?
<0324> E3B5 64,31           BS    GE2B5
<0325> E3B7 D6,04,03        CEQ   >03,@>8304       * Print?
<0326> E3BA 64,55           BS    GE2D9
<0327> E3BC D6,04,04        CEQ   >04,@>8304       * View?
<0328> E3BF 64,06           BS    VIT40
<0329> E3C1 8E,04           CZ    @>8304           * Load?
<0330> E3C3 63,DC           BS    GE272
<0331> E3C5 46,49,4C GE25B  TEXT  'FILE NAME?'
       E3C8 45,20,4E
       E3CB 41,4D,45
       E3CE 3F
<0332>               *  Edit Menu Option 2: EDIT
<0333> E3CF 0F,23    EMOPT2 XML   >23
<0334> E3D1 6B,3C           BS    GE8B0
<0335> E3D3 39,00,01        MOVE  1,G@GE271,#1
       E3D6 01,E3,DB
<0336> E3D9 42,46           BR    EDITOR
<0337> E3DB E0       GE271  BYTE  >E0
<0338> E3DC 06,E3,E5 GE272  CALL  GE27B
<0339> E3DF 0F,21           XML   >21
<0340> E3E1 6B,3F           BS    GE8B3
<0341> E3E3 42,46           BR    EDITOR
<0342> E3E5 BE,E0,01 GE27B  ST    >04,V@>0001(@PABPTR)
       E3E8 1C,04
<0343> E3EA B2,49,FD        AND   >FD,@FLAG2
<0344> E3ED BD,56,1C GE283  DST   @PABPTR,@VPAB
<0345> E3F0 A3,56,00        DADD  >0009,@VPAB
       E3F3 09
<0346> E3F4 06,00,10        CALL  DSRLNK
<0347> E3F7 08              BYTE  >08
<0348> E3F8 6B,E4           BS    CHKERR
<0349> E3FA DA,E0,01        CLOG  >E0,V@>0001(@PABPTR)
       E3FD 1C,E0
<0350> E3FF 44,18           BR    GE29C
<0351> E401 BE,B0,1C        ST    >02,V*PABPTR

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0009 
E/A GROM
       E404 02
<0352> E405 00              RTN
<0353> E406 BE,42,EA VIT40  ST    >EA,@XTOKEN
<0354> E409 31,00,05        MOVE  5,G@VIEWR,V@>2256
       E40C AF,22,56
       E40F E4,13
<0355> E411 44,55           BR    GE2D9
<0356> E413 03,56,34 VIEWR  STRI  'V40'
       E416 30
<0357> E417 0D              BYTE  >0D
<0358> E418 BC,00,E0 GE29C  ST    V@>0001(@PABPTR),@>8300
       E41B 01,1C
<0359> E41D B2,00,1F        AND   >1F,@>8300
<0360> E420 D6,00,04        CEQ   >04,@>8300
<0361> E423 44,2F           BR    GE2B3
<0362> E425 BE,E0,01        ST    >14,V@>0001(@PABPTR)
       E428 1C,14
<0363> E42A B6,49,02        OR    >02,@FLAG2
<0364> E42D 43,ED           BR    GE283
<0365> E42F 4B,E4    GE2B3  BR    CHKERR
<0366> E431 BE,E0,01 GE2B5  ST    >02,V@>0001(@PABPTR)
       E434 1C,02
<0367> E436 DA,49,02        CLOG  >02,@FLAG2
<0368> E439 64,40           BS    GE2C4
<0369> E43B BE,E0,01        ST    >12,V@>0001(@PABPTR)
       E43E 1C,12
<0370> E440 06,E5,6A GE2C4  CALL  DOIO
<0371> E443 BE,B0,1C        ST    >03,V*PABPTR
       E446 03
<0372> E447 BE,E0,05        ST    >50,V@>0005(@PABPTR)
       E44A 1C,50
<0373> E44C 0F,22           XML   >22
<0374> E44E 6B,3F           BS    GE8B3
<0375> E450 06,E5,66        CALL  CLOSE
<0376> E453 42,46           BR    EDITOR
<0377>               * Edit Menu Option 4 or 5: PRINT or VIEW output
<0378> E455 06,E3,E5 GE2D9  CALL  GE27B
<0379> E458 08              FMT
<0380> E459 FF,02           COL   2
<0381> E45B FE,14           ROW   20
<0382> E45D 0B,44,45        HTEX  'DEVICE NAME?'
       E460 56,49,43
       E463 45,20,4E
       E466 41,4D,45
       E469 3F
<0383> E46A FB              FEND
<0384> E46B BF,20,02        DST   >02C2,@CURADD    * Cursor Address
       E46E C2
<0385> E46F BF,1C,11        DST   >1100,@PABPTR    * PAB address
       E472 00
<0386> E473 D6,04,04        CEQ   >04,@>8304       * VIEW?
<0387> E476 64,7D           BS    VFILE            * No
<0388> E478 86,42           CLR   @XTOKEN
<0389> E47A 06,EF,65        CALL  CLRREA
<0390> E47D 06,E5,1D VFILE  CALL  GETALL
<0391> E480 86,42           CLR   @XTOKEN
<0392> E482 BE,E0,05        ST    >50,V@>0005(@PABPTR)
       E485 1C,50
<0393> E487 BE,E0,01 GE30A  ST    >12,V@>0001(@PABPTR)
       E48A 1C,12
<0394> E48C BF,E0,02        DST   >1080,V@>0002(@PABPTR)
       E48F 1C,10,80
<0395> E492 06,E5,6A        CALL  DOIO
<0396> E495 D6,E0,04        CEQ   >20,V@>0004(@PABPTR)

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0010 
E/A GROM
       E498 1C,20
<0397> E49A 44,9F           BR    GE322
<0398> E49C B6,48,02        OR    >02,@FLAG
<0399> E49F BE,B0,1C GE322  ST    >03,V*PABPTR
       E4A2 03
<0400> E4A3 DA,48,02        CLOG  >02,@FLAG
<0401> E4A6 65,0A           BS    GE38D
<0402> E4A8 BF,1C,10 GE32B  DST   >1000,@PABPTR
       E4AB 00
<0403> E4AC 06,E5,51        CALL  BLNKBU
<0404> E4AF 06,E5,6A        CALL  DOIO
<0405> E4B2 BF,1C,11        DST   >1100,@PABPTR
       E4B5 00
<0406> E4B6 BF,00,10        DST   >1080,@>8300
       E4B9 80
<0407> E4BA A3,00,00        DADD  >004F,@>8300
       E4BD 4F
<0408> E4BE BE,02,50        ST    >50,@>8302
<0409> E4C1 BC,03,B0 GE344  ST    V*>8300,@>8303
       E4C4 00
<0410> E4C5 D6,03,20        CEQ   >20,@>8303
<0411> E4C8 64,DE           BS    GE361
<0412> E4CA D6,03,0C        CEQ   >0C,@>8303
<0413> E4CD 44,DC           BR    GE35F
<0414> E4CF BE,B0,00        ST    >20,V*>8300
       E4D2 20
<0415> E4D3 06,E5,6A        CALL  DOIO
<0416> E4D6 06,E5,6A        CALL  DOIO
<0417> E4D9 06,E5,6A        CALL  DOIO
<0418> E4DC 44,E4    GE35F  BR    GE367
<0419> E4DE 93,00    GE361  DDEC  @>8300
<0420> E4E0 92,02           DEC   @>8302
<0421> E4E2 44,C1           BR    GE344
<0422> E4E4 06,E5,6A GE367  CALL  DOIO
<0423> E4E7 A6,02,20        SUB   >20,@>8302
<0424> E4EA CE,02,00        CGT   >00,@>8302
<0425> E4ED 44,FD           BR    GE380
<0426> E4EF A3,E0,02        DADD  >0020,V@>0002(@PABPTR)
       E4F2 1C,00,20
<0427> E4F5 BC,E0,05        ST    @>8302,V@>0005(@PABPTR)
       E4F8 1C,02
<0428> E4FA 05,E4,E4        B     GE367
<0429> E4FD BF,E0,02 GE380  DST   >1080,V@>0002(@PABPTR)
       E500 1C,10,80
<0430> E503 BE,E0,05        ST    >20,V@>0005(@PABPTR)
       E506 1C,20
<0431> E508 44,A8           BR    GE32B
<0432> E50A BF,1C,10 GE38D  DST   >1000,@PABPTR
       E50D 00
<0433> E50E 06,E5,51        CALL  BLNKBU
<0434> E511 06,E5,6A        CALL  DOIO
<0435> E514 BF,1C,11        DST   >1100,@PABPTR
       E517 00
<0436> E518 06,E5,6A        CALL  DOIO
<0437> E51B 45,0A           BR    GE38D
<0438> E51D 06,E5,51 GETALL CALL  BLNKBU
<0439>               *  Build PAB with name
<0440> E520 06,E5,7F BLDPAB CALL  VZERO
<0441> E523 BD,E0,02        DST   @PABPTR,V@>0002(@PABPTR)
       E526 1C,1C
<0442> E528 A3,E0,02        DADD  >0080,V@>0002(@PABPTR)
       E52B 1C,00,80
<0443> E52E BE,E0,08        ST    >00,V@>0008(@PABPTR)
       E531 1C,00

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0011 
E/A GROM
<0444> E533 BF,E0,04        DST   >5000,V@>0004(@PABPTR)
       E536 1C,50,00
<0445> E539 87,AF,22        DCLR  V@>2250
       E53C 50
<0446> E53D 06,E5,8B        CALL  GETINP
<0447> E540 8F,50           DCZ   @FAC6
<0448> E542 65,50           BS    GE3CF
<0449> E544 34,50,E0 PABNAM MOVE  @FAC6,V*FAC4,V@>000A(@PABPTR)
       E547 0A,1C,B0
       E54A 4E
<0450> E54B BC,E0,09        ST    @FAC7,V@>0009(@PABPTR)
       E54E 1C,51
<0451> E550 00       GE3CF  RTN
<0452> E551 A3,1C,00 BLNKBU DADD  >0080,@PABPTR
       E554 80
<0453> E555 BE,B0,1C        ST    >20,V*PABPTR
       E558 20
<0454> E559 35,00,4F        MOVE  >004F,V*PABPTR,V@>0001(@PABPTR)
       E55C E0,01,1C
       E55F B0,1C
<0455> E561 A7,1C,00        DSUB  >0080,@PABPTR
       E564 80
<0456> E565 00              RTN
<0457> E566 BE,B0,1C CLOSE  ST    >01,V*PABPTR
       E569 01
<0458> E56A BD,56,1C DOIO   DST   @PABPTR,@VPAB
<0459> E56D A3,56,00        DADD  >0009,@VPAB
       E570 09
<0460> E571 06,00,10        CALL  DSRLNK
<0461> E574 08              BYTE  >08
<0462> E575 6B,E4           BS    CHKERR
<0463> E577 DA,E0,01        CLOG  >E0,V@>0001(@PABPTR)
       E57A 1C,E0
<0464> E57C 4B,E4           BR    CHKERR
<0465> E57E 00              RTN
<0466> E57F 86,B0,1C VZERO  CLR   V*PABPTR
<0467> E582 35,00,45        MOVE  >0045,V*PABPTR,V@>0001(@PABPTR)
       E585 E0,01,1C
       E588 B0,1C
<0468> E58A 00              RTN
<0469> E58B 06,E5,BE GETINP CALL  GETKEY
<0470> E58E BD,20,24        DST   @STLN,@CURADD
<0471> E591 BE,00,3C        ST    >3C,@>8300
<0472> E594 87,50           DCLR  @FAC6
<0473> E596 D6,B0,20 GE415  CEQ   SPACE,V*CURADD
       E599 20
<0474> E59A 45,AC           BR    GE42B
<0475> E59C 91,20           DINC  @CURADD
<0476> E59E 92,00           DEC   @>8300
<0477> E5A0 45,96           BR    GE415
<0478> E5A2 BD,20,24        DST   @STLN,@CURADD
<0479> E5A5 DA,48,04        CLOG  >04,@FLAG
<0480> E5A8 45,BD           BR    GE43C
<0481> E5AA 45,8B           BR    GETINP
<0482> E5AC BD,4E,20 GE42B  DST   @CURADD,@FAC4
<0483> E5AF D6,B0,20 GE42E  CEQ   SPACE,V*CURADD
       E5B2 20
<0484> E5B3 65,BD           BS    GE43C
<0485> E5B5 91,50           DINC  @FAC6
<0486> E5B7 91,20           DINC  @CURADD
<0487> E5B9 92,00           DEC   @>8300
<0488> E5BB 45,AF           BR    GE42E
<0489> E5BD 00       GE43C  RTN
<0490>               *  Key input routine

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0012 
E/A GROM
<0491> E5BE BE,18,1F GETKEY ST    >1F,@CHRCUR
<0492> E5C1 BD,26,20        DST   @CURADD,@ENDLN
<0493> E5C4 BD,24,20        DST   @CURADD,@STLN
<0494> E5C7 86,79    GE446  CLR   @ITIMER
<0495> E5C9 C0,18,B0        EX    V*CURADD,@CHRCUR
       E5CC 20
[0004]               ***********************************************************
[0005]                      COPY 'DSK5.MYXB7-B'
<0001>               *  REPEAT KEYS
<0002> E5CD 03       GE44C  SCAN
<0003> E5CE 65,F6           BS    GE456
<0004> E5D0 CA,79,07        CHE   7,@ITIMER
<0005> E5D3 45,CD           BR    GE44C
<0006> E5D5 D6,42,EA        CEQ   >EA,@XTOKEN      * ANYTHING
<0007> E5D8 45,C7           BR    GE446
<0008> E5DA BD,76,AF PSCANX DST   V@>2250,@>8376
       E5DD 22,50
<0009> E5DF BC,75,EF        ST    V@>2257(@>8376),@KEY
       E5E2 22,57,76
<0010> E5E5 91,76           DINC  @>8376
<0011> E5E7 BD,AF,22        DST   @>8376,V@>2250
       E5EA 50,76
<0012> E5EC D4,AF,22        CEQ   @>8376,V@>2256
       E5EF 56,76
<0013> E5F1 45,F6           BR    GE456
<0014> E5F3 BE,75,0D        ST    >0D,@KEY         * Store ENTER
<0015> E5F6 D6,B0,20 GE456  CEQ   >1F,V*CURADD
       E5F9 1F
<0016> E5FA 46,00           BR    GE460
<0017> E5FC C0,18,B0        EX    V*CURADD,@CHRCUR
       E5FF 20
<0018> E600 BD,00,20 GE460  DST   @CURADD,@>8300
<0019> E603 A5,00,24        DSUB  @STLN,@>8300
<0020> E606 C6,75,19        CH    >19,@KEY         * SPACE key and higher?
<0021> E609 66,21           BS    GE46B
<0022> E60B D6,75,07        CEQ   7,@KEY           * FCTN 3?
<0023> E60E 46,3B           BR    GE485
<0024> E610 BE,B0,24        ST    SPACE,V*STLN
       E613 20
<0025> E614 35,00,3F        MOVE  >003F,V*STLN,V@1(@STLN)
       E617 E0,01,24
       E61A B0,24
<0026> E61C BD,20,24        DST   @STLN,@CURADD
<0027> E61F 45,BE           BR    GETKEY
<0028> E621 DA,48,01 GE46B  CLOG  >01,@FLAG
<0029> E624 46,93           BR    GE4DD
<0030> E626 BC,B0,20 GE470  ST    @KEY,V*CURADD
       E629 75
<0031> E62A C5,20,26        DCH   @ENDLN,@CURADD
<0032> E62D 46,32           BR    GE47C
<0033> E62F BD,26,20        DST   @CURADD,@ENDLN
<0034> E632 C6,01,3F GE47C  CH    >3F,@>8301
<0035> E635 65,C7           BS    GE446
<0036> E637 91,20           DINC  @CURADD
<0037> E639 45,C7           BR    GE446
<0038> E63B B2,48,FE GE485  AND   >FE,@FLAG
<0039> E63E D6,75,0F        CEQ   BACK,@KEY
<0040> E641 46,4F           BR    GE499
<0041> E643 DA,48,20        CLOG  >20,@FLAG
<0042> E646 40,32           BR    CLREA            * GE97F
<0043> E648 DA,48,04        CLOG  >04,@FLAG
<0044> E64B 40,32           BR    CLREA
<0045> E64D 42,46           BR    EDITOR
<0046> E64F D6,75,09 GE499  CEQ   >09,@KEY

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0013 
E/A GROM
<0047> E652 66,32           BS    GE47C
<0048> E654 D6,75,08        CEQ   >08,@KEY
<0049> E657 46,61           BR    GE4AB
<0050> E659 8E,01           CZ    @>8301
<0051> E65B 65,C7           BS    GE446
<0052> E65D 93,20           DDEC  @CURADD
<0053> E65F 45,C7           BR    GE446
<0054> E661 D6,75,0D GE4AB  CEQ   >0D,@KEY
<0055> E664 66,B9           BS    GE503
<0056> E666 D6,75,03        CEQ   >03,@KEY
<0057> E669 46,89           BR    GE4D3
<0058> E66B BE,B0,20        ST    SPACE,V*CURADD
       E66E 20
<0059> E66F BD,00,26        DST   @ENDLN,@>8300
<0060> E672 A5,00,20        DSUB  @CURADD,@>8300
<0061> E675 CE,01,00        CGT   >00,@>8301
<0062> E678 45,C7           BR    GE446
<0063> E67A 34,00,B0        MOVE  @>8300,V@>0001(@CURADD),V*CURADD
       E67D 20,E0,01
       E680 20
<0064> E681 BE,B0,26        ST    SPACE,V*ENDLN
       E684 20
<0065> E685 93,26           DDEC  @ENDLN
<0066> E687 45,C7           BR    GE446
<0067> E689 D6,75,04 GE4D3  CEQ   >04,@KEY
<0068> E68C 46,B7           BR    GE501
<0069> E68E B6,48,01        OR    >01,@FLAG
<0070> E691 45,C7           BR    GE446
<0071> E693 BD,00,26 GE4DD  DST   @ENDLN,@>8300
<0072> E696 A5,00,24        DSUB  @STLN,@>8300
<0073> E699 C6,01,3F        CH    >3F,@>8301
<0074> E69C 65,C7           BS    GE446
<0075> E69E BD,00,26        DST   @ENDLN,@>8300
<0076> E6A1 A5,00,20        DSUB  @CURADD,@>8300
<0077> E6A4 91,00           DINC  @>8300
<0078> E6A6 34,00,A3        MOVE  @>8300,V*CURADD,V@>03C0
       E6A9 C0,B0,20
<0079> E6AC 34,00,E0        MOVE  @>8300,V@>03C0,V@>0001(@CURADD)
       E6AF 01,20,A3
       E6B2 C0
<0080> E6B3 91,26           DINC  @ENDLN
<0081> E6B5 46,26           BR    GE470
<0082> E6B7 45,C7    GE501  BR    GE446
<0083> E6B9 00       GE503  RTN
<0084>               *  Check for Expansion Memory
<0085> E6BA BC,00,8F EXPMEM ST    @>2000,@>8300
       E6BD 9D,00
<0086> E6BF BE,8F,9D        ST    >FF,@>2000
       E6C2 00,FF
<0087> E6C4 D6,8F,9D        CEQ   >FF,@>2000
       E6C7 00,FF
<0088> E6C9 4B,A4           BR    GE91D
<0089> E6CB 86,8F,9D        CLR   @>2000
       E6CE 00
<0090> E6CF 8E,8F,9D        CZ    @>2000
       E6D2 00
<0091> E6D3 4B,A4           BR    GE91D
<0092> E6D5 BC,8F,9D        ST    @>8300,@>2000
       E6D8 00,00
<0093> E6DA 00              RTN
<0094> E6DB 04,F4    NESCRN BACK  >F4
<0095> E6DD BE,A7,7F        ST    >F4,V@COLOR
       E6E0 F4
<0096> E6E1 BE,A3,00 EASCRN ST    >D0,V@>0300

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0014 
E/A GROM
       E6E4 D0
<0097> E6E5 BC,A3,80        ST    V@COLOR,V@>0380
       E6E8 A7,7F
<0098> E6EA 35,00,1F        MOVE  31,V@>0380,V@>0381
       E6ED A3,81,A3
       E6F0 80
<0099> E6F1 07,20           ALL   SPACE
<0100> E6F3 3D,00,01        MOVE  1,V@COLOR,#7
       E6F6 07,A7,7F
<0101> E6F9 00              RTN
<0102> E6FA BE,A3,80 USSCRN ST    >13,V@>0380
       E6FD 13
<0103> E6FE 35,00,1F        MOVE  31,V@>0380,V@>0381
       E701 A3,81,A3
       E704 80
<0104> E705 07,20           ALL   SPACE
<0105> E707 00              RTN
<0106> E708 86,8F,7C CLRXOP CLR   @>FFD8
       E70B D8
<0107> E70C 35,00,05        MOVE  5,@>FFD8,@>FFD9
       E70F 8F,7C,D9
       E712 8F,7C,D8
<0108> E715 00              RTN
<0109>               *
<0110>               *  Main Menu Option 5: RUN PROGRAM FILE
<0111>               *
<0112> E716 07,20    PRGRM  ALL   SPACE
<0113> E718 08              FMT
<0114> E719 FF,06           COL   6
<0115> E71B FE,01           ROW   1
<0116> E71D 13,2A,20        HTEX  '* RUN PROGRAM FILE *'
       E720 52,55,4E
       E723 20,50,52
       E726 4F,47,52
       E729 41,4D,20
       E72C 46,49,4C
       E72F 45,20,2A
<0117> E732 FB              FEND
<0118> E733 D6,42,FF        CEQ   >FF,@XTOKEN
<0119> E736 47,44           BR    NOEABF
<0120> E738 35,00,40        MOVE  64,V@>2400,V@>2255
       E73B AF,22,55
       E73E AF,24,00
<0121> E741 BE,42,EA        ST    >EA,@XTOKEN
<0122> E744 06,ED,E2 NOEABF CALL  BINIT2              * INITILIZE LOW8K
<0123> E747 B6,49,08        OR    >08,@FLAG2
<0124> E74A BF,20,01        DST   >0102,@CURADD
       E74D 02
<0125> E74E 31,00,0A        MOVE  10,G@GE25B,V*CURADD * FILE NAME?
       E751 B0,20,E3
       E754 C5
<0126> E755 A3,20,00        DADD  >0040,@CURADD
       E758 40
<0127> E759 B6,48,04        OR    >04,@FLAG
<0128> E75C 06,E5,8B        CALL  GETINP
<0129> E75F D6,51,01        CEQ   1,@FAC7
<0130> E762 47,85           BR    NO1KEY
<0131> E764 BF,AF,24        DST   >000B,V@>2400
       E767 00,00,0B
<0132> E76A 31,00,05        MOVE  5,G@DDSK1,V@>2402
       E76D AF,24,02
       E770 E8,23
<0133> E772 BC,AF,24        ST    V*STLN,V@>2405
       E775 05,B0,24

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0015 
E/A GROM
<0134> E778 31,00,06        MOVE  6,G@DUTIL1,V@>2407
       E77B AF,24,07
       E77E EE,17
<0135> E780 BE,42,FF        ST    >FF,@XTOKEN
<0136> E783 47,16           BR    PRGRM
<0137> E785 8F,50    NO1KEY DCZ   @FAC6               * ENTER?
<0138> E787 47,93           BR    GE597               * No
<0139> E789 BE,44,31        ST    '1',@>8344          * Search flag
<0140> E78C 06,E7,AE MYSRCH CALL  LODPGM              * Load DATA
<0141> E78F EE,17           DATA  DUTIL1              * DSK1.UTIL1
<0142> E791 47,A2           BR    GE5A6
<0143> E793 06,E7,BB GE597  CALL  LODUSR
<0144> E796 06,E5,44        CALL  PABNAM
<0145> E799 D7,B0,4E        DCEQ  >4353,V*FAC4     * CS ??
       E79C 43,53
<0146> E79E 47,A2           BR    GE5A6            * ?????
<0147> E7A0 07,20           ALL   SPACE
<0148> E7A2 06,E7,D9 GE5A6  CALL  PGMLOD
<0149> E7A5 06,E6,FA        CALL  USSCRN
<0150> E7A8 0F,F0           XML   >F0
<0151> E7AA 6B,6F           BS    GE8E3
<0152> E7AC 4B,34           BR    GE8A8
<0153> E7AE 88,10    LODPGM FETCH @>8310
<0154> E7B0 88,11           FETCH @>8311
<0155> E7B2 33,00,05        MOVE  5,G@G0000(@>8310),V@>100F
       E7B5 AF,10,0F
       E7B8 00,00,10
<0156> E7BB 87,00    LODUSR DCLR  @>8300
<0157> E7BD BF,1C,10        DST   >1000,@PABPTR
       E7C0 00
<0158> E7C1 31,00,0F        MOVE  15,G@PAB,V*PABPTR
       E7C4 B0,1C,E8
       E7C7 19
<0159> E7C8 8E,44           CZ    @>8344               * Check Search flag
<0160> E7CA 67,D1           BS    PMSG                 * No, go on
<0161> E7CC BC,E0,0D        ST    @>8344,V@13(@PABPTR) * Yes, store next drive #
       E7CF 1C,44
<0162> E7D1 31,00,0F PMSG   MOVE  15,G@PLEASE,V@>02A2
       E7D4 A2,A2,E9
       E7D7 A8
<0163> E7D8 00              RTN
<0164>               *  Load Program
<0165> E7D9 06,E5,6A PGMLOD CALL  DOIO
<0166> E7DC 35,00,06        MOVE  6,V@>1380,@>8310
       E7DF 10,AF,13
       E7E2 80
<0167> E7E3 8F,00           DCZ   @>8300
<0168> E7E5 47,EA           BR    GE5E5
<0169> E7E7 BD,00,14        DST   @>8314,@>8300
<0170> E7EA A7,14,83 GE5E5  DSUB  >8300,@>8314
       E7ED 00
<0171> E7EE 34,12,C0        MOVE  @>8312,V@>1386,@>8300(@>8314)
       E7F1 00,14,AF
       E7F4 13,86
<0172> E7F6 8F,10           DCZ   @>8310
<0173> E7F8 68,0A           BS    GE605
<0174> E7FA 87,02           DCLR  @>8302
<0175> E7FC BC,03,AF        ST    V@>1009,@>8303
       E7FF 10,09
<0176> E801 A3,02,10        DADD  >1009,@>8302
       E804 09
<0177> E805 90,B0,02        INC   V*>8302
<0178> E808 47,D9           BR    PGMLOD
<0179> E80A BE,A2,A2 GE605  ST    SPACE,V@>02A2

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0016 
E/A GROM
       E80D 20
<0180> E80E 35,00,13        MOVE  19,V@>02A2,V@>02A3
       E811 A2,A3,A2
       E814 A2
<0181> E815 06,E5,7F        CALL  VZERO
<0182> E818 00              RTN
<0183> E819 05,00,13 PAB    BYTE  >05,>00,>13,>80,>00,>00,>21,>00
       E81C 80,00,00
       E81F 21,00
<0184> E821 00,0A    DLEN   BYTE  >00,>0A
<0185> E823 44,53,4B DDSK1  TEXT  'DSK1.'
       E826 31,2E
<0186> E828 45,44,49 DEDIT1 TEXT  'EDIT1'
       E82B 54,31
<0187>               ***********************************************************
<0188>               *
<0189>               * Main Menu Option 2: ASSEMBLER
<0190>               *
<0191> E82D 07,20    ASSEM  ALL   SPACE
<0192> E82F 08              FMT
<0193> E830 FF,0A       COL   10
<0194> E832 FE,01       ROW   1
<0195> E834 0C,2A,20    HTEX  '* ASSEMBLER *'
       E837 41,53,53
       E83A 45,4D,42
       E83D 4C,45,52
       E840 20,2A
<0196> E842 FB          FEND
<0197> E843 87,48           DCLR  @FLAG
<0198> E845 86,47           CLR   @LDFLAG
<0199> E847 BE,73,7E        ST    >7E,@SUBSTK
<0200> E84A B6,48,20        OR    >20,@FLAG
<0201> E84D D7,8F,9D        DCEQ  >AA55,@>2000
       E850 00,AA,55
<0202> E853 68,80           BS    GE687
<0203> E855 35,00,63        MOVE  99,V@>2250,@>EA00
       E858 8F,67,00
       E85B AF,22,50
<0204> E85E BC,8F,7C        ST    @XTOKEN,@>FFFB
       E861 FB,42
<0205> E863 86,42           CLR   @XTOKEN
<0206> E865 06,E7,AE        CALL  LODPGM
<0207> E868 EE,12           DATA  DASSM1
<0208> E86A 06,EE,3C        CALL  DEVICE
<0209> E86D D6,75,0F        CEQ   BACK,@KEY
<0210> E870 60,32           BS    CLREA
<0211> E872 BE,47,02        ST    2,@LDFLAG
<0212> E875 06,E7,D9 GE654  CALL  PGMLOD
<0213> E878 D7,8F,9D        DCEQ  >AA55,@>2000
       E87B 00,AA,55
<0214> E87E 48,2D           BR    ASSEM
<0215>               *  CALL FILES (4)
<0216> E880 BF,AF,13 GE687  DST   >0116,V@>1380
       E883 80,01,16
<0217> E886 BF,56,13        DST   >1380,@VPAB
       E889 80
<0218> E88A BE,4C,04        ST    >04,@FAC2
<0219> E88D 06,00,10        CALL  DSRLNK
<0220> E890 0A              BYTE  >0A
<0221> E891 35,00,63        MOVE  99,@>EA00,V@>2250
       E894 AF,22,50
       E897 8F,67,00
<0222> E89A BC,42,8F        ST    @>FFFB,@XTOKEN
       E89D 7C,FB

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0017 
E/A GROM
<0223> E89F 07,20           ALL   32
<0224> E8A1 08              FMT
<0225> E8A2 FF,0A           COL   10
<0226> E8A4 FE,01           ROW   1
<0227> E8A6 0C,2A,20        HTEX  '* ASSEMBLER *'
       E8A9 41,53,53
       E8AC 45,4D,42
       E8AF 4C,45,52
       E8B2 20,2A
<0228> E8B4 FF,02           COL   2
<0229> E8B6 FE,04           ROW   4
<0230> E8B8 10,53,6F        HTEX  'Source File Name?'
       E8BB 75,72,63
       E8BE 65,20,46
       E8C1 69,6C,65
       E8C4 20,4E,61
       E8C7 6D,65,3F
<0231> E8CA FB              FEND
<0232> E8CB BF,1C,10        DST   >1000,@PABPTR
       E8CE 00
<0233> E8CF BF,20,00        DST   >00C2,@CURADD
       E8D2 C2
<0234> E8D3 06,E5,20        CALL  BLDPAB
<0235> E8D6 D6,75,0F        CEQ   BACK,@KEY        * BACK?
<0236> E8D9 60,32           BS    CLREA
<0237> E8DB BF,E0,02        DST   >1080,V@>0002(@PABPTR)
       E8DE 1C,10,80
<0238> E8E1 06,E3,E5        CALL  GE27B
<0239> E8E4 86,42           CLR   @XTOKEN
<0240> E8E6 08              FMT
<0241> E8E7 FF,02           COL   2
<0242> E8E9 FE,08           ROW   8
<0243> E8EB 10,4F,62        HTEX  'Object File Name?'
       E8EE 6A,65,63
       E8F1 74,20,46
       E8F4 69,6C,65
       E8F7 20,4E,61
       E8FA 6D,65,3F
<0244> E8FD FB              FEND
<0245> E8FE BF,1C,11        DST   >1100,@PABPTR
       E901 00
<0246> E902 BF,20,01        DST   >0142,@CURADD
       E905 42
<0247> E906 06,E5,20        CALL  BLDPAB
<0248> E909 BE,E0,01        ST    >00,V@>0001(@PABPTR)
       E90C 1C,00
<0249> E90E BF,E0,02        DST   >1180,V@>0002(@PABPTR)
       E911 1C,11,80
<0250> E914 06,E5,6A        CALL  DOIO
<0251> E917 B6,48,40        OR    >40,@FLAG
<0252> E91A 08              FMT
<0253> E91B FF,02           COL   2
<0254> E91D FE,0C           ROW   12
<0255> E91F 0E,4C,69        HTEX  'List File Name?'
       E922 73,74,20
       E925 46,69,6C
       E928 65,20,4E
       E92B 61,6D,65
       E92E 3F
<0256> E92F FB              FEND
<0257> E930 BF,1C,12        DST   >1200,@PABPTR
       E933 00
<0258> E934 B6,48,04        OR    >04,@FLAG
<0259> E937 BF,20,01        DST   >01C2,@CURADD

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0018 
E/A GROM
       E93A C2
<0260> E93B 06,E5,20        CALL  BLDPAB
<0261> E93E 8F,50           DCZ   @FAC6
<0262> E940 69,53           BS    GE736
<0263> E942 BE,E0,01        ST    >12,V@>0001(@PABPTR)
       E945 1C,12
<0264> E947 BF,E0,02        DST   >1280,V@>0002(@PABPTR)
       E94A 1C,12,80
<0265> E94D 06,E5,6A        CALL  DOIO
<0266> E950 B6,48,80        OR    >80,@FLAG
<0267> E953 08       GE736  FMT
<0268> E954 FF,02           COL   2
<0269> E956 FE,10           ROW   16
<0270> E958 07,4F,70        HTEX  'Options?'
       E95B 74,69,6F
       E95E 6E,73,3F
<0271> E961 FB              FEND
<0272> E962 BF,20,02        DST   >0242,@CURADD
       E965 42
<0273> E966 06,E5,8B        CALL  GETINP
<0274> E969 B2,48,FB        AND   >FB,@FLAG
<0275> E96C 8F,50           DCZ   @FAC6
<0276> E96E 49,73           BR    GE756
<0277> E970 BD,4E,20        DST   @CURADD,@FAC4
<0278> E973 35,00,0F GE756  MOVE  15,V*FAC4,@>20D2
       E976 8F,9D,D2
       E979 B0,4E
<0279> E97B 06,E7,08        CALL  CLRXOP
<0280> E97E 07,20           ALL   SPACE
<0281> E980 0F,21           XML   >21
<0282> E982 6B,3F           BS    GE8B3
<0283> E984 06,E7,08 GE767  CALL  CLRXOP
<0284> E987 BF,1C,10        DST   >1000,@PABPTR
       E98A 00
<0285> E98B 06,E5,66        CALL  CLOSE
<0286> E98E BF,1C,11        DST   >1100,@PABPTR
       E991 00
<0287> E992 06,E5,66        CALL  CLOSE
<0288> E995 DA,48,80        CLOG  >80,@FLAG
<0289> E998 69,A1           BS    GE784
<0290> E99A BF,1C,12        DST   >1200,@PABPTR
       E99D 00
<0291> E99E 06,E5,66        CALL  CLOSE
<0292> E9A1 86,48    GE784  CLR   @FLAG
<0293> E9A3 06,EC,C4        CALL  WENTER
<0294> E9A6 40,28           BR    OLDEA
<0295> E9A8 50,6C,65 PLEASE TEXT  'Please wait ...'
       E9AB 61,73,65
       E9AE 20,77,61
       E9B1 69,74,20
       E9B4 2E,2E,2E
<0296>               *  Get Yes/No reply
<0297> E9B7 BE,18,1F YESNO  ST    >1F,@CHRCUR
<0298> E9BA 86,79    GE7A2  CLR   @ITIMER
<0299> E9BC C0,18,7D        EX    @VCHAR,@CHRCUR
<0300> E9BF BE,74,03 GE7A7  ST    >03,@KBNO
<0301> E9C2 03              SCAN
<0302> E9C3 69,CC           BS    GE7B1
<0303> E9C5 CA,79,06        CHE   >06,@ITIMER
<0304> E9C8 49,BF           BR    GE7A7
<0305> E9CA 49,BA           BR    GE7A2
<0306> E9CC D6,75,0F GE7B1  CEQ   BACK,@KEY
<0307> E9CF 69,DB           BS    GE7C0
<0308> E9D1 D6,75,59        CEQ   >59,@KEY

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0019 
E/A GROM
<0309> E9D4 69,DB           BS    GE7C0
<0310> E9D6 D6,75,4E        CEQ   >4E,@KEY
<0311> E9D9 49,BA           BR    GE7A2
<0312> E9DB BC,7D,75 GE7C0  ST    @KEY,@VCHAR
<0313> E9DE BE,74,05        ST    >05,@KBNO
<0314> E9E1 86,42           CLR   @XTOKEN
<0315> E9E3 00              RTN
<0316>               *
<0317>               *  Main Menu Option 3: LOAD AND RUN
<0318>               *
<0319> E9E4 87,48    LANDR  DCLR  @FLAG
<0320> E9E6 B6,49,01        OR    >01,@FLAG2
<0321> E9E9 07,20           ALL   SPACE
<0322> E9EB 08              FMT
<0323> E9EC FF,08           COL   8
<0324> E9EE FE,00           ROW   0
<0325> E9F0 0F,2A,20        HTEX  '* LOAD and RUN *'
       E9F3 4C,4F,41
       E9F6 44,20,61
       E9F9 6E,64,20
       E9FC 52,55,4E
       E9FF 20,2A
<0326> EA01 89              COL+  10
<0327> EA02 A1              ROW+  2
<0328> EA03 09,46,49        HTEX  'FILE NAME?'
       EA06 4C,45,20
       EA09 4E,41,4D
       EA0C 45,3F
<0329> EA0E FB              FEND
<0330> EA0F 06,E6,BA        CALL  EXPMEM
<0331> EA12 B6,49,40        OR    >40,@FLAG2
<0332> EA15 BE,A0,A2 GE7F2  ST    SPACE,V@162
       EA18 20
<0333> EA19 35,00,3B        MOVE  >003B,V@162,V@163
       EA1C A0,A3,A0
       EA1F A2
<0334> EA20 BF,20,00        DST   162,@CURADD
       EA23 A2
<0335> EA24 B6,48,04        OR    >04,@FLAG
<0336> EA27 BF,1C,10        DST   >1000,@PABPTR
       EA2A 00
<0337> EA2B 06,E5,1D        CALL  GETALL
<0338> EA2E 86,42           CLR   @XTOKEN
<0339> EA30 8F,50           DCZ   @FAC6
<0340> EA32 4A,3B           BR    GE816
<0341> EA34 06,ED,E2        CALL  BINIT2
<0342> EA37 4A,59           BR    RUN
<0343> EA39 4A,46           BR    GE821
<0344> EA3B DA,49,40 GE816  CLOG  >40,@FLAG2
<0345> EA3E 6A,46           BS    GE821
<0346> EA40 06,ED,EA        CALL  BINIT3
<0347> EA43 B2,49,BF        AND   >BF,@FLAG2
<0348> EA46 BE,E0,01 GE821  ST    >04,V@>0001(@PABPTR)
       EA49 1C,04
<0349> EA4B BD,56,1C GE826  DST   @PABPTR,@VPAB
<0350> EA4E A3,56,00        DADD  >0009,@VPAB
       EA51 09
<0351> EA52 0F,22           XML   >22
<0352> EA54 6B,3F           BS    GE8B3
<0353> EA56 05,EA,15        B     GE7F2
<0354>               *
<0355>               *  Main Menu Option 4: RUN
<0356>               *
<0357> EA59 07,20    RUN    ALL   SPACE

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0020 
E/A GROM
<0358> EA5B BE,73,7E GE848  ST    >7E,@SUBSTK
<0359> EA5E 08              FMT
<0360> EA5F FE,00           ROW   0
<0361> EA61 FF,02           COL   2
<0362> EA63 06,2A,20        HTEX  '* RUN *'
       EA66 52,55,4E
       EA69 20,2A
<0363> EA6B A1              ROW+  2
<0364> EA6C FF,02           COL   2
<0365> EA6E 0C,50,52        HTEX  'PROGRAM NAME?'
       EA71 4F,47,52
       EA74 41,4D,20
       EA77 4E,41,4D
       EA7A 45,3F
<0366> EA7C FB              FEND
<0367> EA7D 06,E6,BA        CALL  EXPMEM
<0368> EA80 86,42           CLR   @XTOKEN
<0369> EA82 BF,06,00        DST   194,@>8306       * Screen location LOCATION
       EA85 C2
<0370> EA86 BF,08,3F        DST   >3FF8,@>8308     * Locataion of LINK TABLE
       EA89 F8
<0371> EA8A BD,02,08 FNDLNK DST   @>8308,@>8302    * Copy it.
<0372> EA8D BE,04,06        ST    6,@>8304         * Length of each name.
<0373> EA90 CA,CF,7D FNDLP  CHE   128,@0(@>8302)   * ~?
       EA93 00,02,80
<0374> EA96 6A,ED           BS    FNDDON           * Yes, done.
<0375> EA98 CA,CF,7D        CHE   32,@0(@>8302)    * Space or higher?
       EA9B 00,02,20
<0376> EA9E 4A,ED           BR    FNDDON           * No, done.
<0377> EAA0 D6,CF,7D        CEQ   32,@0(@>8302)    * Space?
       EAA3 00,02,20
<0378> EAA6 4A,AD           BR    FNDSHO           * No.
<0379> EAA8 D6,04,06        CEQ   6,@>8304         * 6?
<0380> EAAB 6A,ED           BS    FNDDON           * Yes.
<0381> EAAD BC,E0,00 FNDSHO ST    @0(@>8302),V@0(@>8306)
       EAB0 06,CF,7D
       EAB3 00,02
<0382> EAB5 91,06           DINC  @>8306           * COL+1
<0383> EAB7 CB,06,03        DCHE  768,@>8306       * End of screen?
       EABA 00
<0384> EABB 4A,DC           BR    MORSCN
<0385> EABD 31,00,14        MOVE  20,G@OUTSCN,V@>8
       EAC0 A0,08,EA
       EAC3 CA
<0386> EAC4 06,00,36        CALL  BADTON
<0387> EAC7 05,EA,ED        B     FNDDON
<0388> EACA 2A,20,37 OUTSCN TEXT  '* 72 NAMES SHOWN *'
       EACD 32,20,4E
       EAD0 41,4D,45
       EAD3 53,20,53
       EAD6 48,4F,57
       EAD9 4E,20,2A
<0389> EADC 91,02    MORSCN DINC  @>8302           * Next character.
<0390> EADE 92,04           DEC   @>8304           * Length-1
<0391> EAE0 4A,90           BR    FNDLP            * No, keep looping.
<0392> EAE2 95,06           DINCT @>8306           * Reset next column
<0393> EAE4 A7,08,00        DSUB  8,@>8308         * Link Table Address+8
       EAE7 08
<0394> EAE8 D6,08,00        CEQ   >2600,@>8308     * Last Table name?
<0395> EAEB 4A,8A           BR    FNDLNK           * No
<0396> EAED BF,20,00 FNDDON DST   130,@CURADD      * Yes, screen input address
       EAF0 82
<0397> EAF1 B6,48,04        OR    >04,@FLAG
<0398> EAF4 06,E5,8B        CALL  GETINP

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0021 
E/A GROM
<0399> EAF7 8F,50           DCZ   @FAC6
<0400> EAF9 6B,11           BS    GE883
<0401> EAFB BD,20,4E        DST   @FAC4,@CURADD
<0402> EAFE C7,50,00        DCH   >0006,@FAC6
       EB01 06
<0403> EB02 6B,CB           BS    GE944
<0404> EB04 BE,4A,20        ST    SPACE,@FAC
<0405> EB07 35,00,05        MOVE  5,@FAC,@FAC1
       EB0A 4B,4A
<0406> EB0C 34,50,4A        MOVE  @FAC6,V*CURADD,@FAC
       EB0F B0,20
<0407> EB11 D7,8F,9D GE883  DCEQ  >A55A,@>2000
       EB14 00,A5,5A
<0408> EB17 4B,9D           BR    GE916
<0409> EB19 06,E6,FA        CALL  USSCRN
<0410> EB1C 87,22    GE88E  DCLR  @CODE
<0411> EB1E 0F,21           XML   >21
<0412> EB20 6B,6F           BS    GE8E3
<0413> EB22 DA,49,20        CLOG  >20,@FLAG2
<0414> EB25 6B,31           BS    GE8A3
<0415> EB27 94,73           INCT  @SUBSTK
<0416> EB29 BF,90,73        DST   GE88E,*SUBSTK
       EB2C EB,1C
<0417> EB2E 94,73           INCT  @SUBSTK
<0418> EB30 00              RTN
<0419> EB31 05,EB,34 GE8A3  B     GE8A8
<0420> EB34 06,E6,E1 GE8A8  CALL  EASCRN
<0421> EB37 06,EC,C4        CALL  WENTER
<0422> EB3A 40,3B           BR    GE029
<0423> EB3C 06,E6,E1 GE8B0  CALL  EASCRN
<0424> EB3F 06,EB,88 GE8B3  CALL  GE8FC
<0425> EB42 CA,22,08        CHE   >08,@CODE
<0426> EB45 4B,E4           BR    CHKERR
<0427> EB47 A6,22,08        SUB   >08,@CODE
<0428> EB4A C6,22,05        CH    >05,@CODE
<0429> EB4D 6B,60           BS    GE8D4
<0430> EB4F 06,EC,30        CALL  CLSALL
<0431> EB52 8A,22           CASE  @CODE
<0432> EB54 4B,96           BR    GE90F
<0433> EB56 4B,8F           BR    GE908
<0434> EB58 4B,AF           BR    GE928
<0435> EB5A 4B,B6           BR    GE92F
<0436> EB5C 4B,BD           BR    GE936
<0437> EB5E 4B,C4           BR    GE93D
<0438> EB60 DA,48,20 GE8D4  CLOG  >20,@FLAG
<0439> EB63 49,84           BR    GE767
<0440> EB65 DA,49,01        CLOG  >01,@FLAG2
<0441> EB68 49,E4           BR    LANDR
<0442> EB6A 06,EC,4D        CALL  CLSPAB
<0443> EB6D 42,46           BR    EDITOR
<0444> EB6F 06,EB,88 GE8E3  CALL  GE8FC
<0445> EB72 06,E6,E1        CALL  EASCRN
<0446> EB75 D6,22,0F        CEQ   >0F,@CODE
<0447> EB78 4B,81           BR    GE8F5
<0448> EB7A 06,EC,6D        CALL  ERRMSG
<0449> EB7D ED,B2           DATA  ERRPNF
<0450> EB7F 4B,D0           BR    GE949
<0451> EB81 06,EC,6D GE8F5  CALL  ERRMSG
<0452> EB84 ED,48           DATA  ERRC
<0453> EB86 40,3B           BR    GE029
<0454> EB88 39,00,01 GE8FC  MOVE  1,G@GE271,#1
       EB8B 01,E3,DB
<0455> EB8E 00       GE907  RTN
<0456> EB8F 06,EC,61 GE908  CALL  WRNMSG

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0022 
E/A GROM
<0457> EB92 ED,53           DATA  CCRMSG
<0458> EB94 4B,60           BR    GE8D4
<0459> EB96 06,EC,6D GE90F  CALL  ERRMSG
<0460> EB99 ED,0B           DATA  ERRMF
<0461> EB9B 4B,60           BR    GE8D4
<0462> EB9D 06,EC,6D GE916  CALL  ERRMSG
<0463> EBA0 ED,B2           DATA  ERRPNF
<0464> EBA2 40,28           BR    OLDEA
<0465> EBA4 DA,48,08 GE91D  CLOG  >08,@FLAG
<0466> EBA7 4B,A9           BR    GE9E2
<0467> EBA9 06,EC,6D GE9E2  CALL  ERRMSG
<0468> EBAC ED,26           DATA  ERRNME
<0469> EBAE 0B              EXIT
<0470> EBAF 06,EC,6D GE928  CALL  ERRMSG
<0471> EBB2 ED,6D           DATA  ERRIT
<0472> EBB4 49,E4           BR    LANDR
<0473> EBB6 06,EC,6D GE92F  CALL  ERRMSG
<0474> EBB9 ED,79           DATA  ERRCE
<0475> EBBB 49,E4           BR    LANDR
<0476> EBBD 06,EC,6D GE936  CALL  ERRMSG
<0477> EBC0 ED,88           DATA  ERRDD
<0478> EBC2 49,E4           BR    LANDR
<0479> EBC4 06,EC,6D GE93D  CALL  ERRMSG
<0480> EBC7 ED,9D           DATA  ERRUR
<0481> EBC9 49,E4           BR    LANDR
<0482> EBCB 06,EC,6D GE944  CALL  ERRMSG
<0483> EBCE ED,3A           DATA  ERRNTL
<0484> EBD0 8F,50    GE949  DCZ   @FAC6
<0485> EBD2 6B,DF           BS    GE958
<0486> EBD4 BE,B0,4E        ST    SPACE,V*FAC4
       EBD7 20
<0487> EBD8 34,50,E0        MOVE  @FAC6,V*FAC4,V@>0001(@FAC4)
       EBDB 01,4E,B0
       EBDE 4E
<0488> EBDF 06,EC,D4 GE958  CALL  CLRMSG
<0489> EBE2 4A,5B           BR    GE848
[0006]               ***********************************************************
[0007]                      COPY 'DSK5.MYXB7-C'
<0001> EBE4 8E,44    CHKERR CZ    @>8344           * Check Search flag
<0002> EBE6 6B,EF           BS    CHKER2           * Yes, normal error
<0003> EBE8 90,44           INC   @>8344           * Drive # + 1
<0004> EBEA D6,44,3A        CEQ   58,@>8344        * Last drive?
<0005> EBED 47,8C           BR    MYSRCH           * No, continue Search
<0006> EBEF BC,4E,E0 CHKER2 ST    V@>0001(@PABPTR),@FAC4
       EBF2 01,1C
<0007> EBF4 B2,4E,E0        AND   >E0,@FAC4
<0008> EBF7 E6,4E,05        SRL   >05,@FAC4
<0009> EBFA B6,4E,30        OR    >30,@FAC4
<0010> EBFD B2,E0,01        AND   >1F,V@>0001(@PABPTR)
       EC00 1C,1F
<0011> EC02 D6,4E,35        CEQ   >35,@FAC4        Error Read past EOF
<0012> EC05 4C,0D           BR    GE97A
<0013> EC07 06,EC,30        CALL  CLSALL
<0014> EC0A 05,E2,46        B     EDITOR
<0015> EC0D 06,EC,6D GE97A  CALL  ERRMSG
<0016> EC10 ED,17           DATA  ERRIOC
<0017> EC12 D6,47,01        CEQ   1,@LDFLAG
<0018> EC15 62,46           BS    EDITOR
<0019> EC17 D6,47,02        CEQ   2,@LDFLAG
<0020> EC1A 68,2D           BS    ASSEM
<0021> EC1C 06,EC,30 GE97F  CALL  CLSALL
<0022> EC1F DA,48,20        CLOG  >20,@FLAG
<0023> EC22 40,28           BR    OLDEA
<0024> EC24 DA,49,01        CLOG  >01,@FLAG2

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0023 
E/A GROM
<0025> EC27 49,E4           BR    LANDR
<0026> EC29 DA,49,08        CLOG  >08,@FLAG2
<0027> EC2C 40,28           BR    OLDEA
<0028> EC2E 42,46           BR    EDITOR
<0029> EC30 BF,1C,10 CLSALL DST   >1000,@PABPTR
       EC33 00
<0030> EC34 06,EC,4D        CALL  CLSPAB
<0031> EC37 BF,1C,11        DST   >1100,@PABPTR
       EC3A 00
<0032> EC3B 06,EC,4D        CALL  CLSPAB
<0033> EC3E BF,1C,12        DST   >1200,@PABPTR
       EC41 00
<0034> EC42 06,EC,4D        CALL  CLSPAB
<0035> EC45 BF,1C,13        DST   >1300,@PABPTR
       EC48 00
<0036> EC49 06,EC,4D        CALL  CLSPAB
<0037> EC4C 00              RTN
<0038> EC4D BD,56,1C CLSPAB DST   @PABPTR,@VPAB
<0039> EC50 A3,56,00        DADD  >0009,@VPAB
       EC53 09
<0040> EC54 BE,B0,1C        ST    >01,V*PABPTR
       EC57 01
<0041> EC58 06,00,10        CALL  DSRLNK
<0042> EC5B 08              BYTE  >08
<0043> EC5C 86,E0,09        CLR   V@>0009(@PABPTR)
       EC5F 1C
<0044> EC60 00              RTN
<0045> EC61 06,EC,D4 WRNMSG CALL  CLRMSG
<0046> EC64 31,00,0B        MOVE  11,G@WARN,V@>02A2
       EC67 A2,A2,ED
       EC6A 00
<0047> EC6B 4C,77           BR    GE9DA
<0048> EC6D 06,EC,D4 ERRMSG CALL  CLRMSG
<0049> EC70 31,00,09        MOVE  9,G@ERROR,V@>02A2
       EC73 A2,A2,EC
       EC76 E0
<0050> EC77 88,4A    GE9DA  FETCH @FAC
<0051> EC79 88,4B           FETCH @FAC1
<0052> EC7B 86,4C           CLR   @FAC2
<0053> EC7D 33,00,01        MOVE  1,G@G0000(@FAC),@FAC3
       EC80 4D,00,00
       EC83 4A
<0054> EC84 32,4C,A2        MOVE  @FAC2,G@G0001(@FAC),V@>02C2
       EC87 C2,00,01
       EC8A 4A
<0055> EC8B D7,4A,ED        DCEQ  ERRIOC,@FAC
       EC8E 17
<0056> EC8F 4C,95           BR    GE9F8
<0057> EC91 BC,A2,D2        ST    @FAC4,V@>02D2
       EC94 4E
<0058> EC95 D7,4A,ED GE9F8  DCEQ  ERRC,@FAC
       EC98 48
<0059> EC99 4C,C4           BR    WENTER
<0060> EC9B E7,22,00        DSRL  >0004,@CODE
       EC9E 04
<0061> EC9F E6,23,04        SRL   >04,@>8323
<0062> ECA2 C6,22,09        CH    >09,@CODE
<0063> ECA5 4C,AF           BR    GEA12
<0064> ECA7 C6,22,0F        CH    >0F,@CODE
<0065> ECAA 6C,C4           BS    WENTER
<0066> ECAC A2,22,07        ADD   >07,@CODE
<0067> ECAF C6,23,09 GEA12  CH    >09,@>8323
<0068> ECB2 4C,BC           BR    GEA1F
<0069> ECB4 C6,23,0F        CH    >0F,@>8323

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0024 
E/A GROM
<0070> ECB7 6C,C4           BS    WENTER
<0071> ECB9 A2,23,07        ADD   >07,@>8323
<0072> ECBC A3,22,30 GEA1F  DADD  >3030,@CODE
       ECBF 30
<0073> ECC0 BD,A2,D0        DST   @CODE,V@>02D0
       ECC3 22
<0074>               *  Wait for ENTER
<0075> ECC4 31,00,17 WENTER MOVE  23,G@PRESS,V@>02E2
       ECC7 A2,E2,EC
       ECCA E9
<0076> ECCB 03       GEA2E  SCAN
<0077> ECCC 4C,CB           BR    GEA2E
<0078> ECCE D6,75,0D        CEQ   >0D,@KEY
<0079> ECD1 4C,CB           BR    GEA2E
<0080> ECD3 00              RTN
<0081> ECD4 BE,A2,A0 CLRMSG ST    SPACE,V@>02A0
       ECD7 20
<0082> ECD8 35,00,5F        MOVE  >005F,V@>02A0,V@>02A1
       ECDB A2,A1,A2
       ECDE A0
<0083> ECDF 00              RTN
<0084> ECE0 2A,20,45 ERROR  TEXT  '* ERROR *'
       ECE3 52,52,4F
       ECE6 52,20,2A
<0085> ECE9 50,72,65 PRESS  TEXT  'Press ENTER to continue'
       ECEC 73,73,20
       ECEF 45,4E,54
       ECF2 45,52,20
       ECF5 74,6F,20
       ECF8 63,6F,6E
       ECFB 74,69,6E
       ECFE 75,65
<0086> ED00 2A,20,57 WARN   TEXT  '* WARNING *'
       ED03 41,52,4E
       ED06 49,4E,47
       ED09 20,2A
<0087> ED0B 0B,4D,45 ERRMF  STRI  'MEMORY FULL'
       ED0E 4D,4F,52
       ED11 59,20,46
       ED14 55,4C,4C
<0088> ED17 0E,49,2F ERRIOC STRI  'I/O ERROR CODE'
       ED1A 4F,20,45
       ED1D 52,52,4F
       ED20 52,20,43
       ED23 4F,44,45
<0089> ED26 13,4E,4F ERRNME STRI  'NO MEMORY EXPANSION'
       ED29 20,4D,45
       ED2C 4D,4F,52
       ED2F 59,20,45
       ED32 58,50,41
       ED35 4E,53,49
       ED38 4F,4E
<0090> ED3A 0D,4E,41 ERRNTL STRI  'NAME TOO LONG'
       ED3D 4D,45,20
       ED40 54,4F,4F
       ED43 20,4C,4F
       ED46 4E,47
<0091> ED48 0A,45,52 ERRC   STRI  'ERROR CODE'
       ED4B 52,4F,52
       ED4E 20,43,4F
       ED51 44,45
<0092> ED53 19,43,4F CCRMSG STRI  'CONTROL CHARACTER REMOVED'
       ED56 4E,54,52
       ED59 4F,4C,20

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0025 
E/A GROM
       ED5C 43,48,41
       ED5F 52,41,43
       ED62 54,45,52
       ED65 20,52,45
       ED68 4D,4F,56
       ED6B 45,44
<0093> ED6D 0B,49,4C ERRIT  STRI  'ILLEGAL TAG'
       ED70 4C,45,47
       ED73 41,4C,20
       ED76 54,41,47
<0094> ED79 0E,43,48 ERRCE  STRI  'CHECKSUM ERROR'
       ED7C 45,43,4B
       ED7F 53,55,4D
       ED82 20,45,52
       ED85 52,4F,52
<0095> ED88 14,44,55 ERRDD  STRI  'DUPLICATE DEFINITION'
       ED8B 50,4C,49
       ED8E 43,41,54
       ED91 45,20,44
       ED94 45,46,49
       ED97 4E,49,54
       ED9A 49,4F,4E
<0096> ED9D 14,55,4E ERRUR  STRI  'UNRESOLVED REFERENCE'
       EDA0 52,45,53
       EDA3 4F,4C,56
       EDA6 45,44,20
       EDA9 52,45,46
       EDAC 45,52,45
       EDAF 4E,43,45
<0097> EDB2 11,50,52 ERRPNF STRI  'PROGRAM NOT FOUND'
       EDB5 4F,47,52
       EDB8 41,4D,20
       EDBB 4E,4F,54
       EDBE 20,46,4F
       EDC1 55,4E,44
<0098> EDC4 FF,FF,FF CUREDP BYTE  >FF,>FF,>FF,>FF,>FF,>FF,>FF,>FF
       EDC7 FF,FF,FF
       EDCA FF,FF
<0099> EDCC 81,00,00 CURPAT BYTE  >81,>00,>00,>00,>00,>00,>00,>81
       EDCF 00,00,00
       EDD2 00,81
<0100> EDD4 84,00,00        BYTE  >84,>00,>00,>00,>00,>00,>00,>84
       EDD7 00,00,00
       EDDA 00,84
<0101> EDDC E0,00,0E VREGS  BYTE  >E0,>00,>0E,>01,>06,>00
       EDDF 01,06,00
<0102>               *
<0103>               *  CALL INIT
<0104>               *
<0105> EDE2 D7,8F,9D BINIT2 DCEQ  >A55A,@>2000
       EDE5 00,A5,5A
<0106> EDE8 6E,11           BS    GEBBD
<0107> EDEA 06,E6,BA BINIT3 CALL  EXPMEM
<0108> EDED BE,4A,03        ST    >03,@FAC
<0109> EDF0 BF,4C,EF        DST   GF000,@FAC2
       EDF3 94
<0110> EDF4 33,00,04 GEBA0  MOVE  4,G@G0000(@FAC2),@FAC4
       EDF7 4E,00,00
       EDFA 4C
<0111> EDFB A3,4C,00        DADD  >0004,@FAC2
       EDFE 04
<0112> EDFF 32,4E,CF        MOVE  @FAC4,G@G0000(@FAC2),@0(@FAC6)
       EE02 7D,00,50
       EE05 00,00,4C

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0026 
E/A GROM
<0113> EE08 A1,4C,4E        DADD  @FAC4,@FAC2
<0114> EE0B 92,4A           DEC   @FAC
<0115> EE0D 4D,F4           BR    GEBA0
<0116> EE0F 47,08           BR    CLRXOP
<0117> EE11 00       GEBBD  RTN
<0118>                
<0119> EE12 41,53,53 DASSM1 TEXT  'ASSM1'
       EE15 4D,31
<0120> EE17 55,54,49 DUTIL1 TEXT  'UTIL1'
       EE1A 4C,31
<0121> EE1C 0D              BYTE  >0D
<0122> EE1D 4C,4F,41 DLOAD  TEXT  'LOAD'
       EE20 44
<0123> EE21 0D              BYTE  >0D
<0124>               * NEW PATCH STUFF *****************************************
<0125>                
<0126> EE22 86,AF,10 BUGS   CLR   V@>1000          * CLEAR PAB AREAS
       EE25 00
<0127> EE26 35,03,80        MOVE  >0380,V@>1000,V@>1001
       EE29 AF,10,01
       EE2C AF,10,00
<0128> EE2F B2,80,C2        AND   >EF,@>83C2
       EE32 EF
<0129> EE33 00              RTN
<0130>               *******************************
<0131> EE34 86,4A    CLRFAC CLR   @FAC
<0132> EE36 35,00,07        MOVE  7,@FAC,@FAC1
       EE39 4B,4A
<0133> EE3B 00              RTN
<0134>               *******************************
<0135> EE3C 06,E6,BA DEVICE CALL  EXPMEM                Clear expansion memory
<0136> EE3F 35,00,80        MOVE  128,V@>027F,V@>0280
       EE42 A2,80,A2
       EE45 7F
<0137> EE46 BC,06,75        ST    @KEY,@>8306           Save key
<0138> EE49 08              FMT
<0139> EE4A FE,10           ROW   16
<0140> EE4C FF,02           COL   2
<0141> EE4E 0B,53,65        HTEX  'Select DSK#.'
       EE51 6C,65,63
       EE54 74,20,44
       EE57 53,4B,23
       EE5A 2E
<0142> EE5B FB              FEND
<0143> EE5C 35,00,05        MOVE  5,V@>100F,V@>020E     EDIT1 or ASSM1
       EE5F A2,0E,AF
       EE62 10,0F
<0144> EE64 03       DEV1   SCAN                        KEY?
<0145> EE65 4E,64           BR    DEV1                  No.
<0146> EE67 D6,75,20        CEQ   SPACE,@KEY            SPACE BAR?
<0147> EE6A 6E,81           BS    DEV4                  Yes
<0148> EE6C D6,75,0F        CEQ   BACK,@KEY             BACK?
<0149> EE6F 6E,80           BS    DEV3                  Yes
<0150> EE71 BC,A2,0C        ST    @KEY,V@>020C          Any other key SAVE
       EE74 75
<0151> EE75 BC,AF,10        ST    @KEY,V@>100D          Put into PAB
       EE78 0D,75
<0152> EE7A BC,75,06 DEVNO  ST    @>8306,@KEY           Restore old key
<0153> EE7D 06,E7,D1 DEV2   CALL  PMSG                  PLEASE WAIT...
<0154> EE80 00       DEV3   RTN
<0155> EE81 08       DEV4   FMT
<0156> EE82 FE,10           ROW   16
<0157> EE84 FF,02           COL   2
<0158> EE86 10,45,78        HTEX  'Example: WDS1.EA.'

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0027 
E/A GROM
       EE89 61,6D,70
       EE8C 6C,65,3A
       EE8F 20,57,44
       EE92 53,31,2E
       EE95 45,41,2E
<0159> EE98 FE,12           ROW   18
<0160> EE9A FF,02           COL   2
<0161> EE9C 0E,46,55        HTEX  'FULL PATH NAME?'
       EE9F 4C,4C,20
       EEA2 50,41,54
       EEA5 48,20,4E
       EEA8 41,4D,45
       EEAB 3F
<0162> EEAC FB              FEND
<0163> EEAD 35,00,05        MOVE  5,V@>100F,V@>0213     EDIT1 or ASSM1
       EEB0 A2,13,AF
       EEB3 10,0F
<0164> EEB5 BF,20,02        DST   >0282,@CURADD
       EEB8 82
<0165> EEB9 86,44           CLR   @>8344                Clear search flag
<0166> EEBB B6,48,04        OR    >04,@FLAG             Set return flag
<0167> EEBE 06,E5,8B        CALL  GETINP
<0168> EEC1 BD,00,20        DST   @CURADD,@>8300
<0169> EEC4 A6,01,82        SUB   >82,@>8301
<0170> EEC7 BC,AF,10        ST    @>8301,V@>1009
       EECA 09,01
<0171> EECC 34,00,AF        MOVE  @>8300,V@>0282,V@>100A
       EECF 10,0A,A2
       EED2 82
<0172> EED3 BE,48,20        ST    >20,@FLAG
<0173> EED6 05,EE,7A        B     DEVNO
<0174>               ********************************************
<0175> EED9 07,20    XBINP  ALL   SPACE
<0176> EEDB BE,4A,01        ST    1,@FAC
<0177> EEDE 08       XBAGN  FMT
<0178> EEDF FF,08            COL   8
<0179> EEE1 FE,01            ROW   1
<0180> EEE3 08,2A,20         HTEX  '* R X B *'
       EEE6 52,20,58
       EEE9 20,42,20
       EEEC 2A
<0181> EEED A3               ROW+  4
<0182> EEEE FF,02            COL   2
<0183> EEF0 09,46,49         HTEX  'FILE NAME?'
       EEF3 4C,45,20
       EEF6 4E,41,4D
       EEF9 45,3F
<0184> EEFB FB              FEND
<0185> EEFC 92,4A           DEC   @FAC
<0186> EEFE 4E,DE           BR    XBAGN
<0187> EF00 D6,42,FF        CEQ   >FF,@XTOKEN
<0188> EF03 4F,11           BR    XBINP1
<0189> EF05 35,00,40        MOVE  64,V@>2400,V@>2255
       EF08 AF,22,55
       EF0B AF,24,00
<0190> EF0E BE,42,EA        ST    >EA,@XTOKEN
<0191> EF11 BF,20,01 XBINP1 DST   >0102,@CURADD
       EF14 02
<0192> EF15 BF,1C,10        DST   >1000,@PABPTR
       EF18 00
<0193> EF19 B6,48,20        OR    >20,@FLAG
<0194> EF1C 06,E5,1D        CALL  GETALL
<0195> EF1F 8F,50           DCZ   @FAC6
<0196> EF21 6F,5B           BS    XBINP3

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0028 
E/A GROM
<0197> EF23 D6,51,01        CEQ   1,@FAC7
<0198> EF26 4F,49           BR    XBINP2
<0199> EF28 BF,AF,24        DST   >000A,V@>2400
       EF2B 00,00,0A
<0200> EF2E 31,00,05        MOVE  5,G@DDSK1,V@>2402
       EF31 AF,24,02
       EF34 E8,23
<0201> EF36 BC,AF,24        ST    V*STLN,V@>2405
       EF39 05,B0,24
<0202> EF3C 31,00,05        MOVE  5,G@DLOAD,V@>2407
       EF3F AF,24,07
       EF42 EE,1D
<0203> EF44 BE,42,FF        ST    >FF,@XTOKEN
<0204> EF47 4E,D9           BR    XBINP
<0205> EF49 06,EF,65 XBINP2 CALL  CLRREA
<0206> EF4C BF,AF,22        DST   >994A,V@>2254
       EF4F 54,99,4A
<0207> EF52 35,00,50        MOVE  80,V@9(@PABPTR),V@>2256
       EF55 AF,22,56
       EF58 E0,09,1C
<0208> EF5B 86,00    XBINP3 CLR   @>8300
<0209> EF5D 35,00,6E        MOVE  >006E,@>8300,@>8301
       EF60 01,00
<0210> EF62 05,63,72        B     RXB
<0211>               ********************************************
<0212> EF65 86,AF,22 CLRREA CLR   V@>2250
       EF68 50
<0213> EF69 35,00,50        MOVE 80,V@>2250,V@>2251
       EF6C AF,22,51
       EF6F AF,22,50
<0214> EF72 00              RTN
<0215> EF73 D6,E0,09 ONEKEY CEQ  1,V@9(@PABPTR)    One character for drive#?
       EF76 1C,01
<0216> EF78 4F,93           BR   TWOKEY            No, normal continue
<0217> EF7A BC,80,C0        ST   V@10(@PABPTR),@>83C0    Yes, save # character
       EF7D E0,0A,1C
<0218> EF80 31,00,05        MOVE 5,G@DDSK1,V@10(@PABPTR) DSK1. loaded into pab
       EF83 E0,0A,1C
       EF86 E8,23
<0219> EF88 BE,E0,09        ST   >05,V@9(@PABPTR)        DSK1. has 5 characters
       EF8B 1C,05
<0220> EF8D BC,E0,0D        ST   @>83C0,V@13(@PABPTR)    Load charcter drive#/le
       EF90 1C,80,C0
<0221> EF93 00       TWOKEY RTN
<0222>               ***********************************************************
<0223>               *
<0224>               *  Data for Initialization of
<0225>               *  Memory Expansion
<0226>               *
<0227> EF94 00,08,20 GF000 DATA  >0008,>2000,>A55A,>2128,>2398,>225A,>0654
       EF97 00,A5,5A
       EF9A 21,28,23
       EF9D 98,22,5A
       EFA0 06,54
<0228> EFA2 20,22,00       DATA  >2022,>0000,>A000,>FFD7,>2676,>3F38
       EFA5 00,A0,00
       EFA8 FF,D7,26
       EFAB 76,3F,38
<0229> EFAE 00,00,00       DATA  0,0,0,0,0,0,0,0,0
       EFB1 00,00,00
       EFB4 00,00,00
       EFB7 00,00,00
       EFBA 00,00,00
       EFBD 00,00,00

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0029 
E/A GROM
<0230> EFC0 00,00,00       DATA  0,0,0,0,0,0,0,0
       EFC3 00,00,00
       EFC6 00,00,00
       EFC9 00,00,00
       EFCC 00,00,00
       EFCF 00
<0231> EFD0 00,00,00       DATA  0,0,0,0,0,0,0
       EFD3 00,00,00
       EFD6 00,00,00
       EFD9 00,00,00
       EFDC 00,00
<0232> EFDE 00,00,00       DATA  0,0,0,0,0,0,0,0
       EFE1 00,00,00
       EFE4 00,00,00
       EFE7 00,00,00
       EFEA 00,00,00
       EFED 00
<0233> EFEE 00,00,00       DATA  0,0,0,0,0,0,0
       EFF1 00,00,00
       EFF4 00,00,00
       EFF7 00,00,00
       EFFA 00,00
<0234> EFFC 00,00,00       DATA  0,0,0,0,0,0,0,0
       EFFF 00,00,00
       F002 00,00,00
       F005 00,00,00
       F008 00,00,00
       F00B 00
<0235> F00C 00,00,00       DATA  0,0,0,0,0,0,0
       F00F 00,00,00
       F012 00,00,00
       F015 00,00,00
       F018 00,00
<0236> F01A 00,00,00       DATA  0,0,0,0,0,0,0,0
       F01D 00,00,00
       F020 00,00,00
       F023 00,00,00
       F026 00,00,00
       F029 00
<0237> F02A 00,00,00       DATA  0,0,0,0,0,0,0
       F02D 00,00,00
       F030 00,00,00
       F033 00,00,00
       F036 00,00
<0238> F038 00,00,00       DATA  0,0,0,0,0,0,0,0
       F03B 00,00,00
       F03E 00,00,00
       F041 00,00,00
       F044 00,00,00
       F047 00
<0239> F048 00,00,00       DATA  0,0,0,0,0,0,0
       F04B 00,00,00
       F04E 00,00,00
       F051 00,00,00
       F054 00,00
<0240> F056 00,00,00       DATA  0,0,0,0,0,0,0,0
       F059 00,00,00
       F05C 00,00,00
       F05F 00,00,00
       F062 00,00,00
       F065 00
<0241> F066 00,00,00       DATA  0,0,0,0,0,0,0
       F069 00,00,00
       F06C 00,00,00

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0030 
E/A GROM
       F06F 00,00,00
       F072 00,00
<0242> F074 00,00,00       DATA  0,0,0,0,>0064,>2000,>2EAA,>2094
       F077 00,00,00
       F07A 00,00,00
       F07D 64,20,00
       F080 2E,AA,20
       F083 94
<0243> F084 21,C4,20       DATA  >21C4,>2094,>2196,>2094,>21DE,>2094,>21F4
       F087 94,21,96
       F08A 20,94,21
       F08D DE,20,94
       F090 21,F4
<0244> F092 20,94,22       DATA  >2094,>2200,>2094,>220E,>2094,>221A,>2094,>2228
       F095 00,20,94
       F098 22,0E,20
       F09B 94,22,1A
       F09E 20,94,22
       F0A1 28
<0245> F0A2 20,9A,22       DATA  >209A,>22B2,>20DA,>23BA,>C80B,>2030,>D060,
       F0A5 B2,20,DA
       F0A8 23,BA,C8
       F0AB 0B,20,30
       F0AE D0,60
<0246> F0B0 83,49,20       DATA  >8349,>2060,>20FC,>132A,>C020,>8350,>1311,>06A0
       F0B3 60,20,FC
       F0B6 13,2A,C0
       F0B9 20,83,50
       F0BC 13,11,06
       F0BF A0
<0247> F0C0 26,46,10       DATA  >2646,>101E,>0281,>3F38,>1319,>C001,>0202
       F0C3 1E,02,81
       F0C6 3F,38,13
       F0C9 19,C0,01
       F0CC 02,02
<0248> F0CE 83,4A,8C       DATA  >834A,>8CB0,>1611,>8CB0,>160F,>8CB0,>160D,>C810
       F0D1 B0,16,11
       F0D4 8C,B0,16
       F0D7 0F,8C,B0
       F0DA 16,0D,C8
       F0DD 10
<0249> F0DE 20,22,02       DATA  >2022,>02E0,>20BA,>C020,>2022,>1309,>0690
       F0E1 E0,20,BA
       F0E4 C0,20,20
       F0E7 22,13,09
       F0EA 06,90
<0250> F0EC 02,E0,83       DATA  >02E0,>83E0,>C2E0,>2030,>045B,>0221,>0008,>10E4
       F0EF E0,C2,E0
       F0F2 20,30,04
       F0F5 5B,02,21
       F0F8 00,08,10
       F0FB E4
<0251> F0FC 02,00,0F       DATA  >0200,>0F00,>D800,>8322,>02E0,>83E0,>0460
       F0FF 00,D8,00
       F102 83,22,02
       F105 E0,83,E0
       F108 04,60
<0252> F10A 00,CE,58       DATA  >00CE,>5820,>20FC,>8349,>02E0,>2094,>0380,>C83E
       F10D 20,20,FC
       F110 83,49,02
       F113 E0,20,94
       F116 03,80,C8
       F119 3E
<0253> F11A 83,E2,02       DATA  >83E2,>02E0,>83E0,>C80B,>20AA,>C081,>0281

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0031 
E/A GROM
       F11D E0,83,E0
       F120 C8,0B,20
       F123 AA,C0,81
       F126 02,81
<0254> F128 80,00,1B       DATA  >8000,>1B07,>09C1,>0A11,>0A42,>09B2,>A0A1,>0CFA
       F12B 07,09,C1
       F12E 0A,11,0A
       F131 42,09,B2
       F134 A0,A1,0C
       F137 FA
<0255> F138 C0,92,06       DATA  >C092,>0692,>02E0,>2094,>C80B,>83F6,>0380
       F13B 92,02,E0
       F13E 20,94,C8
       F141 0B,83,F6
       F144 03,80
<0256> F146 D0,60,83       DATA  >D060,>8373,>0981,>C87E,>8304,>F820,>20FC,>8349
       F149 73,09,81
       F14C C8,7E,83
       F14F 04,F8,20
       F152 20,FC,83
       F155 49
<0257> F156 02,E0,83       DATA  >02E0,>83E0,>C2E0,>2030,>045B,>02E0,>83E0
       F159 E0,C2,E0
       F15C 20,30,04
       F15F 5B,02,E0
       F162 83,E0
<0258> F164 C8,0B,20       DATA  >C80B,>20AA,>06A0,>000E,>02E0,>2094,>C80B,>83F6
       F167 AA,06,A0
       F16A 00,0E,02
       F16D E0,20,94
       F170 C8,0B,83
       F173 F6
<0259> F174 03,80,06       DATA  >0380,>06A0,>223A,>D82D,>0002,>8C00,>0380
       F177 A0,22,3A
       F17A D8,2D,00
       F17D 02,8C,00
       F180 03,80
<0260> F182 06,A0,22       DATA  >06A0,>223A,>D831,>8C00,>0602,>16FC,>0380,>06A0
       F185 3A,D8,31
       F188 8C,00,06
       F18B 02,16,FC
       F18E 03,80,06
       F191 A0
<0261> F192 22,40,DB       DATA  >2240,>DB60,>8800,>0002,>0380,>06A0,>2240
       F195 60,88,00
       F198 00,02,03
       F19B 80,06,A0
       F19E 22,40
<0262> F1A0 DC,60,88       DATA  >DC60,>8800,>0602,>16FC,>0380,>C05D,>D82D,>0001
       F1A3 00,06,02
       F1A6 16,FC,03
       F1A9 80,C0,5D
       F1AC D8,2D,00
       F1AF 01
<0263> F1B0 8C,02,02       DATA  >8C02,>0261,>8000,>D801,>8C02,>0380,>0201
       F1B3 61,80,00
       F1B6 D8,01,8C
       F1B9 02,03,80
       F1BC 02,01
<0264> F1BE 40,00,10       DATA  >4000,>1001,>04C1,>C09D,>D820,>2099,>8C02,>E081
       F1C1 01,04,C1
       F1C4 C0,9D,D8
       F1C7 20,20,99
       F1CA 8C,02,E0

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0032 
E/A GROM
       F1CD 81
<0265> F1CE D8,02,8C       DATA  >D802,>8C02,>C06D,>0002,>C0AD,>0004,>045B
       F1D1 02,C0,6D
       F1D4 00,02,C0
       F1D7 AD,00,04
       F1DA 04,5B
<0266> F1DC 02,04,83       DATA  >0204,>834A,>C014,>C184,>04F6,>04F6,>C140,>1323
       F1DF 4A,C0,14
       F1E2 C1,84,04
       F1E5 F6,04,F6
       F1E8 C1,40,13
       F1EB 23
<0267> F1EC 07,40,02       DATA  >0740,>0203,>0040,>04F6,>04D6,>0280,>0064
       F1EF 03,00,40
       F1F2 04,F6,04
       F1F5 D6,02,80
       F1F8 00,64
<0268> F1FA 1A,13,02       DATA  >1A13,>0280,>2710,>1A08,>0583,>C040,>04C0,>3C20
       F1FD 80,27,10
       F200 1A,08,05
       F203 83,C0,40
       F206 04,C0,3C
       F209 20
<0269> F20A 20,FA,D9       DATA  >20FA,>D920,>83E3,>0003,>0583,>C040,>04C0
       F20D 20,83,E3
       F210 00,03,05
       F213 83,C0,40
       F216 04,C0
<0270> F218 3C,20,20       DATA  >3C20,>20FA,>D920,>83E3,>0002,>D920,>83E1,>0001
       F21B FA,D9,20
       F21E 83,E3,00
       F221 02,D9,20
       F224 83,E1,00
       F227 01
<0271> F228 D5,20,83       DATA  >D520,>83E7,>0545,>1101,>0514,>045B,>C17E
       F22B E7,05,45
       F22E 11,01,05
       F231 14,04,5B
       F234 C1,7E
<0272> F236 53,E0,20       DATA  >53E0,>20FC,>C020,>8356,>C240,>0229,>FFF8,>0420
       F239 FC,C0,20
       F23C 83,56,C2
       F23F 40,02,29
       F242 FF,F8,04
       F245 20
<0273> F246 21,14,D0       DATA  >2114,>D0C1,>0983,>0704,>0202,>208C,>0580
       F249 C1,09,83
       F24C 07,04,02
       F24F 02,20,8C
       F252 05,80
<0274> F254 05,84,80       DATA  >0584,>80C4,>1306,>0420,>2114,>DC81,>9801,>20FE
       F257 C4,13,06
       F25A 04,20,21
       F25D 14,DC,81
       F260 98,01,20
       F263 FE
<0275> F264 16,F6,C1       DATA  >16F6,>C104,>1352,>0284,>0007,>154F,>04E0
       F267 04,13,52
       F26A 02,84,00
       F26D 07,15,4F
       F270 04,E0
<0276> F272 83,D0,C8       DATA  >83D0,>C804,>8354,>C804,>2036,>0584,>A804,>8356
       F275 04,83,54
       F278 C8,04,20

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0033 
E/A GROM
       F27B 36,05,84
       F27E A8,04,83
       F281 56
<0277> F282 C8,20,83       DATA  >C820,>8356,>2038,>02E0,>83E0,>04C1,>020C
       F285 56,20,38
       F288 02,E0,83
       F28B E0,04,C1
       F28E 02,0C
<0278> F290 0F,00,C3       DATA  >0F00,>C30C,>1301,>1E00,>022C,>0100,>04E0,>83D0
       F293 0C,13,01
       F296 1E,00,02
       F299 2C,01,00
       F29C 04,E0,83
       F29F D0
<0279> F2A0 02,8C,20       DATA  >028C,>2000,>1332,>C80C,>83D0,>1D00,>0202
       F2A3 00,13,32
       F2A6 C8,0C,83
       F2A9 D0,1D,00
       F2AC 02,02
<0280> F2AE 40,00,98       DATA  >4000,>9812,>20FF,>16EE,>A0A0,>20A4,>1003,>C0A0
       F2B1 12,20,FF
       F2B4 16,EE,A0
       F2B7 A0,20,A4
       F2BA 10,03,C0
       F2BD A0
<0281> F2BE 83,D2,1D       DATA  >83D2,>1D00,>C092,>13E6,>C802,>83D2,>05C2
       F2C1 00,C0,92
       F2C4 13,E6,C8
       F2C7 02,83,D2
       F2CA 05,C2
<0282> F2CC C2,72,D1       DATA  >C272,>D160,>8355,>1309,>9C85,>16F2,>0985,>0206
       F2CF 60,83,55
       F2D2 13,09,9C
       F2D5 85,16,F2
       F2D8 09,85,02
       F2DB 06
<0283> F2DC 20,8C,9C       DATA  >208C,>9CB6,>16ED,>0605,>16FC,>0581,>C801
       F2DF B6,16,ED
       F2E2 06,05,16
       F2E5 FC,05,81
       F2E8 C8,01
<0284> F2EA 20,3A,C8       DATA  >203A,>C809,>2034,>C80C,>2032,>0699,>10E2,>1E00
       F2ED 09,20,34
       F2F0 C8,0C,20
       F2F3 32,06,99
       F2F6 10,E2,1E
       F2F9 00
<0285> F2FA 02,E0,20       DATA  >02E0,>209A,>C009,>0420,>2114,>09D1,>1604
       F2FD 9A,C0,09
       F300 04,20,21
       F303 14,09,D1
       F306 16,04
<0286> F308 03,80,02       DATA  >0380,>02E0,>209A,>04C1,>06C1,>D741,>F3E0,>20FC
       F30B E0,20,9A
       F30E 04,C1,06
       F311 C1,D7,41
       F314 F3,E0,20
       F317 FC
<0287> F318 03,80,C8       DATA  >0380,>C80B,>2030,>02E0,>20BA,>0420,>2124
       F31B 0B,20,30
       F31E 02,E0,20
       F321 BA,04,20
       F324 21,24
<0288> F326 02,E0,83       DATA  >02E0,>83E0,>1303,>C2E0,>2030,>045B,>D820,>20BA

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0034 
E/A GROM
       F329 E0,13,03
       F32C C2,E0,20
       F32F 30,04,5B
       F332 D8,20,20
       F335 BA
<0289> F336 83,22,04       DATA  >8322,>0460,>00CE,>04E0,>2022,>53E0,>20FC
       F339 60,00,CE
       F33C 04,E0,20
       F33F 22,53,E0
       F342 20,FC
<0290> F344 C0,20,83       DATA  >C020,>8356,>0420,>2120,>0008,>1332,>0220,>FFF7
       F347 56,04,20
       F34A 21,20,00
       F34D 08,13,32
       F350 02,20,FF
       F353 F7
<0291> F354 02,01,02       DATA  >0201,>0200,>0420,>210C,>0580,>C800,>202E
       F357 00,04,20
       F35A 21,0C,05
       F35D 80,C8,00
       F360 20,2E
<0292> F362 C1,E0,20       DATA  >C1E0,>2024,>C147,>04CC,>06A0,>25E0,>0283,>0001
       F365 24,C1,47
       F368 04,CC,06
       F36B A0,25,E0
       F36E 02,83,00
       F371 01
<0293> F372 16,24,05       DATA  >1624,>058C,>04C3,>1023,>0283,>0046,>161E
       F375 8C,04,C3
       F378 10,23,02
       F37B 83,00,46
       F37E 16,1E
<0294> F380 04,C2,06       DATA  >04C2,>06A0,>262E,>0283,>003A,>16F7,>C020,>202E
       F383 A0,26,2E
       F386 02,83,00
       F389 3A,16,F7
       F38C C0,20,20
       F38F 2E
<0295> F390 06,00,02       DATA  >0600,>0201,>0100,>0420,>210C,>06A0,>25E0
       F393 01,01,00
       F396 04,20,21
       F399 0C,06,A0
       F39C 25,E0
<0296> F39E C0,20,20       DATA  >C020,>2022,>1307,>06A0,>2646,>1005,>CB4E,>0016
       F3A1 22,13,07
       F3A4 06,A0,26
       F3A7 46,10,05
       F3AA CB,4E,00
       F3AD 16
<0297> F3AE C3,A0,20       DATA  >C3A0,>2022,>0380,>D740,>F3E0,>20FC,>0380
       F3B1 22,03,80
       F3B4 D7,40,F3
       F3B7 E0,20,FC
       F3BA 03,80
<0298> F3BC 06,A0,25       DATA  >06A0,>25C2,>04C4,>D123,>2662,>0974,>C808,>202C
       F3BF C2,04,C4
       F3C2 D1,23,26
       F3C5 62,09,74
       F3C8 C8,08,20
       F3CB 2C
<0299> F3CC 06,A0,25       DATA  >06A0,>2594,>0464,>23F8,>0580,>0240,>FFFE
       F3CF 94,04,64
       F3D2 23,F8,05
       F3D5 80,02,40

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0035 
E/A GROM
       F3D8 FF,FE
<0300> F3DA C1,20,20       DATA  >C120,>2024,>A100,>1808,>8804,>2026,>1B05,>C160
       F3DD 24,A1,00
       F3E0 18,08,88
       F3E3 04,20,26
       F3E6 1B,05,C1
       F3E9 60
<0301> F3EA 20,24,C8       DATA  >2024,>C804,>2024,>100A,>C120,>2028,>A100
       F3ED 04,20,24
       F3F0 10,0A,C1
       F3F3 20,20,28
       F3F6 A1,00
<0302> F3F8 88,04,20       DATA  >8804,>202A,>140C,>C160,>2028,>C804,>2028,>C1C5
       F3FB 2A,14,0C
       F3FE C1,60,20
       F401 28,C8,04
       F404 20,28,C1
       F407 C5
<0303> F408 02,09,00       DATA  >0209,>0008,>06A0,>262E,>0609,>16FC,>10B6
       F40B 08,06,A0
       F40E 26,2E,06
       F411 09,16,FC
       F414 10,B6
<0304> F416 02,00,08       DATA  >0200,>0800,>10CC,>A005,>C800,>2022,>10AF,>A800
       F419 00,10,CC
       F41C A0,05,C8
       F41F 00,20,22
       F422 10,AF,A8
       F425 00
<0305> F426 20,2C,13       DATA  >202C,>13AC,>0200,>0B00,>10C2,>A005,>C1C0
       F429 AC,02,00
       F42C 0B,00,10
       F42F C2,A0,05
       F432 C1,C0
<0306> F434 10,A6,A0       DATA  >10A6,>A005,>DDC0,>DDE0,>20DB,>10A1,>A005,>06A0
       F437 05,DD,C0
       F43A DD,E0,20
       F43D DB,10,A1
       F440 A0,05,06
       F443 A0
<0307> F444 25,66,C0       DATA  >2566,>C000,>1316,>0226,>FFF8,>8106,>1B02
       F447 00,13,16
       F44A 02,26,FF
       F44D F8,81,06
       F450 1B,02
<0308> F452 05,14,10       DATA  >0514,>1096,>8594,>16F8,>89A4,>0002,>0002,>16F4
       F455 96,85,94
       F458 16,F8,89
       F45B A4,00,02
       F45E 00,02,16
       F461 F4
<0309> F462 89,A4,00       DATA  >89A4,>0004,>0004,>16F0,>C0E6,>0006,>C250
       F465 04,00,04
       F468 16,F0,C0
       F46B E6,00,06
       F46E C2,50
<0310> F470 C4,03,C0       DATA  >C403,>C009,>16FC,>0224,>0008,>C804,>202A,>10EA
       F473 09,16,FC
       F476 02,24,00
       F479 08,C8,04
       F47C 20,2A,10
       F47F EA
<0311> F480 A0,05,06       DATA  >A005,>06A0,>2566,>0226,>FFF8,>8106,>13E3
       F483 A0,25,66

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0036 
E/A GROM
       F486 02,26,FF
       F489 F8,81,06
       F48C 13,E3
<0312> F48E C2,96,15       DATA  >C296,>1501,>050A,>8294,>16F7,>89A4,>0002,>0002
       F491 01,05,0A
       F494 82,94,16
       F497 F7,89,A4
       F49A 00,02,00
       F49D 02
<0313> F49E 16,F3,89       DATA  >16F3,>89A4,>0004,>0004,>16EF,>C296,>1516
       F4A1 A4,00,04
       F4A4 00,04,16
       F4A7 EF,C2,96
       F4AA 15,16
<0314> F4AC C0,E6,00       DATA  >C0E6,>0006,>C253,>C4C0,>C0C9,>16FC,>C246,>6244
       F4AF 06,C2,53
       F4B2 C4,C0,C0
       F4B5 C9,16,FC
       F4B8 C2,46,62
       F4BB 44
<0315> F4BC C2,86,02       DATA  >C286,>022A,>0008,>C0C6,>0643,>064A,>C693
       F4BF 2A,00,08
       F4C2 C0,C6,06
       F4C5 43,06,4A
       F4C8 C6,93
<0316> F4CA 06,49,16       DATA  >0649,>16FB,>0224,>0008,>C804,>202A,>10D9,>CB44
       F4CD FB,02,24
       F4D0 00,08,C8
       F4D3 04,20,2A
       F4D6 10,D9,CB
       F4D9 44
<0317> F4DA 00,02,02       DATA  >0002,>0200,>0C00,>0460,>2432,>0460,>2494
       F4DD 00,0C,00
       F4E0 04,60,24
       F4E3 32,04,60
       F4E6 24,94
<0318> F4E8 C2,8B,02       DATA  >C28B,>0209,>0006,>C1A0,>202A,>0226,>FFF8,>C106
       F4EB 09,00,06
       F4EE C1,A0,20
       F4F1 2A,02,26
       F4F4 FF,F8,C1
       F4F7 06
<0319> F4F8 88,06,20       DATA  >8806,>2028,>1AF3,>C806,>202A,>06A0,>262E
       F4FB 28,1A,F3
       F4FE C8,06,20
       F501 2A,06,A0
       F504 26,2E
<0320> F506 DD,A0,20       DATA  >DDA0,>20E1,>0609,>16FA,>C580,>0206,>4000,>045A
       F509 E1,06,09
       F50C 16,FA,C5
       F50F 80,02,06
       F512 40,00,04
       F515 5A
<0321> F516 C2,8B,04       DATA  >C28B,>04C0,>C30C,>1308,>06A0,>262E,>D020
       F519 C0,C3,0C
       F51C 13,08,06
       F51F A0,26,2E
       F522 D0,20
<0322> F524 20,E1,06       DATA  >20E1,>06A0,>262E,>A003,>045A,>0209,>0004,>06A0
       F527 A0,26,2E
       F52A A0,03,04
       F52D 5A,02,09
       F530 00,04,06
       F533 A0

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0037 
E/A GROM
<0323> F534 26,2E,06       DATA  >262E,>06A0,>25C2,>0A40,>A003,>0609,>16F8
       F537 A0,25,C2
       F53A 0A,40,A0
       F53D 03,06,09
       F540 16,F8
<0324> F542 04,5A,02       DATA  >045A,>0223,>FFD0,>0283,>000A,>1A05,>0223,>FFF9
       F545 23,FF,D0
       F548 02,83,00
       F54B 0A,1A,05
       F54E 02,23,FF
       F551 F9
<0325> F552 02,83,00       DATA  >0283,>0019,>1B01,>045B,>0200,>0A00,>0460
       F555 19,1B,01
       F558 04,5B,02
       F55B 00,0A,00
       F55E 04,60
<0326> F560 24,32,02       DATA  >2432,>02E0,>83E0,>0200,>2032,>C330,>C270,>C830
       F563 E0,83,E0
       F566 02,00,20
       F569 32,C3,30
       F56C C2,70,C8
       F56F 30
<0327> F570 83,54,C8       DATA  >8354,>C830,>8356,>C050,>1D00,>9820,>4000
       F573 30,83,56
       F576 C0,50,1D
       F579 00,98,20
       F57C 40,00
<0328> F57E 20,FF,16       DATA  >20FF,>161D,>0699,>101B,>1E00,>02E0,>20DA,>C020
       F581 1D,06,99
       F584 10,1B,1E
       F587 00,02,E0
       F58A 20,DA,C0
       F58D 20
<0329> F58E 20,2E,02       DATA  >202E,>0201,>20DB,>0202,>0004,>0420,>2118
       F591 01,20,DB
       F594 02,02,00
       F597 04,04,20
       F59A 21,18
<0330> F59C 70,00,09       DATA  >7000,>0950,>1610,>0982,>C001,>0201,>203C,>0420
       F59F 50,16,10
       F5A2 09,82,C0
       F5A5 01,02,01
       F5A8 20,3C,04
       F5AB 20
<0331> F5AC 21,18,04       DATA  >2118,>04C8,>0602,>11D7,>D0F1,>0983,>A203
       F5AF C8,06,02
       F5B2 11,D7,D0
       F5B5 F1,09,83
       F5B8 A2,03
<0332> F5BA 04,5B,02       DATA  >045B,>02E0,>20DA,>04C0,>06C0,>0460,>2432,>0201
       F5BD E0,20,DA
       F5C0 04,C0,06
       F5C3 C0,04,60
       F5C6 24,32,02
       F5C9 01
<0333> F5CA 3F,40,02       DATA  >3F40,>0221,>FFF8,>C011,>1105,>8060,>202A
       F5CD 21,FF,F8
       F5D0 C0,11,11
       F5D3 05,80,60
       F5D6 20,2A
<0334> F5D8 16,F9,05       DATA  >16F9,>05CB,>045B,>0200,>0D00,>045B,>2D52,>5163
       F5DB CB,04,5B
       F5DE 02,00,0D
       F5E1 00,04,5B

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0038 
E/A GROM
       F5E4 2D,52,51
       F5E7 63
<0335> F5E8 64,83,84       DATA  >6483,>8455,>045C,>5B5F,>5EF0,>F003,>F0F0
       F5EB 55,04,5C
       F5EE 5B,5F,5E
       F5F1 F0,F0,03
       F5F4 F0,F0
<0336> F5F6 47,00,00       DATA  >4700,>00C8,>3F38,>5554,>4C54,>4142,>2022,>5041
       F5F9 C8,3F,38
       F5FC 55,54,4C
       F5FF 54,41,42
       F602 20,22,50
       F605 41
<0337> F606 44,20,20       DATA  >4420,>2020,>8300,>4750,>4C57,>5320,>83E0
       F609 20,83,00
       F60C 47,50,4C
       F60F 57,53,20
       F612 83,E0
<0338> F614 53,4F,55       DATA  >534F,>554E,>4420,>8400,>5644,>5052,>4420,>8800
       F617 4E,44,20
       F61A 84,00,56
       F61D 44,50,52
       F620 44,20,88
       F623 00
<0339> F624 56,44,50       DATA  >5644,>5053,>5441,>8802,>5644,>5057,>4420
       F627 53,54,41
       F62A 88,02,56
       F62D 44,50,57
       F630 44,20
<0340> F632 8C,00,56       DATA  >8C00,>5644,>5057,>4120,>8C02,>5350,>4348,>5244
       F635 44,50,57
       F638 41,20,8C
       F63B 02,53,50
       F63E 43,48,52
       F641 44
<0341> F642 90,00,53       DATA  >9000,>5350,>4348,>5754,>9400,>4752,>4D52
       F645 50,43,48
       F648 57,54,94
       F64B 00,47,52
       F64E 4D,52
<0342> F650 44,20,98       DATA  >4420,>9800,>4752,>4D52,>4120,>9802,>4752,>4D57
       F653 00,47,52
       F656 4D,52,41
       F659 20,98,02
       F65C 47,52,4D
       F65F 57
<0343> F660 44,20,9C       DATA  >4420,>9C00,>4752,>4D57,>4120,>9C02,>5343
       F663 00,47,52
       F666 4D,57,41
       F669 20,9C,02
       F66C 53,43
<0344> F66E 41,4E,20       DATA  >414E,>2020,>000E,>584D,>4C4C,>4E4B,>2104,>4B53
       F671 20,00,0E
       F674 58,4D,4C
       F677 4C,4E,4B
       F67A 21,04,4B
       F67D 53
<0345> F67E 43,41,4E       DATA  >4341,>4E20,>2108,>5653,>4257,>2020,>210C
       F681 20,21,08
       F684 56,53,42
       F687 57,20,20
       F68A 21,0C
<0346> F68C 56,4D,42       DATA  >564D,>4257,>2020,>2110,>5653,>4252,>2020,>2114
       F68F 57,20,20

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0039 
E/A GROM
       F692 21,10,56
       F695 53,42,52
       F698 20,20,21
       F69B 14
<0347> F69C 56,4D,42       DATA  >564D,>4252,>2020,>2118,>5657,>5452,>2020
       F69F 52,20,20
       F6A2 21,18,56
       F6A5 57,54,52
       F6A8 20,20
<0348> F6AA 21,1C,44       DATA  >211C,>4453,>524C,>4E4B,>2120,>4C4F,>4144,>4552
       F6AD 53,52,4C
       F6B0 4E,4B,21
       F6B3 20,4C,4F
       F6B6 41,44,45
       F6B9 52
<0349> F6BA 21,24,47       DATA  >2124,>4750,>4C4C,>4E4B,>2100
       F6BD 50,4C,4C
       F6C0 4E,4B,21
       F6C3 00
<0350>               ***********************************************************
<0351>               *
<0352>               * CATALOG HARD/DISK
<0353>               *
<0354> F6C4 06,F6,C9 DIRECT CALL DMENU
<0355> F6C7 57,56           BR   DIREC2
<0356> F6C9 07,20    DMENU  ALL  SPACE             Clear screen
<0357> F6CB 08              FMT
<0358> F6CC FF,09           COL 9
<0359> F6CE FE,01           ROW 1
<0360> F6D0 0E,2A,20        HTEX '* DIRECTORY *  '
       F6D3 44,49,52
       F6D6 45,43,54
       F6D9 4F,52,59
       F6DC 20,2A,20
       F6DF 20
<0361> F6E0 A3              ROW+ 4
<0362> F6E1 89              COL+ 10
<0363> F6E2 0B,44,65        HTEX 'Device Name?'
       F6E5 76,69,63
       F6E8 65,20,4E
       F6EB 61,6D,65
       F6EE 3F
<0364> F6EF A7              ROW+ 8
<0365> F6F0 FF,03           COL  3
<0366> F6F2 17,41,43        HTEX 'ACTIVE KEYS: CLEAR, AID,'
       F6F5 54,49,56
       F6F8 45,20,4B
       F6FB 45,59,53
       F6FE 3A,20,43
       F701 4C,45,41
       F704 52,2C,20
       F707 41,49,44
       F70A 2C
<0367> F70B A1              ROW+ 2
<0368> F70C FF,03           COL  3
<0369> F70E 14,28,41        HTEX '(ARROWS), E, e, X, x,'
       F711 52,52,4F
       F714 57,53,29
       F717 2C,20,45
       F71A 2C,20,65
       F71D 2C,20,58
       F720 2C,20,78
       F723 2C
<0370> F724 A1              ROW+ 2

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0040 
E/A GROM
<0371> F725 FF,03           COL  3
<0372> F727 14,42,45        HTEX 'BEGIN, PROCEED, REDO,'
       F72A 47,49,4E
       F72D 2C,20,50
       F730 52,4F,43
       F733 45,45,44
       F736 2C,20,52
       F739 45,44,4F
       F73C 2C
<0373> F73D A1              ROW+ 2
<0374> F73E FF,03           COL  3
<0375> F740 12,42,41        HTEX 'BACK, and SPACE BAR'
       F743 43,4B,2C
       F746 20,61,6E
       F749 64,20,53
       F74C 50,41,43
       F74F 45,20,42
       F752 41,52
<0376> F754 FB              FEND
<0377> F755 00              RTN
<0378> F756 86,74    DIREC2 CLR  @KBNO             Clear keyboard number
<0379> F758 BF,20,01        DST  >0102,@CURADD     Prompt location
       F75B 02
<0380> F75C BF,1C,10        DST  >1000,@PABPTR     Use first PAB area
       F75F 00
<0381> F760 B6,48,20        OR   >20,@FLAG         Set return bit for error
<0382> F763 06,E5,1D        CALL GETALL            Input the filename
<0383> F766 86,42    DIREC3 CLR  @XTOKEN
<0384> F768 06,EF,65        CALL CLRREA
<0385> F76B 31,00,09        MOVE 9,G@CATDAT,V*PABPTR Prepare PAB
       F76E B0,1C,FA
       F771 A1
<0386> F772 06,EF,73        CALL ONEKEY
<0387> F775 06,E5,6A        CALL DOIO              Open the file
<0388> F778 BF,B0,1C        DST  >020D,V*PABPTR    Read opcode to PAB
       F77B 02,0D
<0389> F77D 06,E5,6A        CALL DOIO              Read first record
<0390> F780 07,20           ALL  SPACE             Clear screen again
<0391> F782 06,FA,B2        CALL SCREEN            Set up header
<0392> F785 BE,AF,25        ST   >20,V@>2500
       F788 00,20
<0393> F78A 35,11,00        MOVE >1100,V@>2500,V@>2501
       F78D AF,25,01
       F790 AF,25,00
<0394> F793 BF,40,25        DST  >2580,@>8340
       F796 80
<0395> F797 BE,02,59        ST   >59,@>8302        Y
<0396> F79A 03       TSTKEY SCAN                   Scan the keyboard
<0397> F79B 57,B5           BR   TSTKE5            Any key?
<0398> F79D D6,75,20        CEQ  SPACE,@KEY        SPACE KEY?
<0399> F7A0 77,B2           BS   TSTKE4            Yes, wait.
<0400> F7A2 D6,75,0F        CEQ  BACK,@KEY         BACK key?
<0401> F7A5 57,AE           BR   TSTKE3            No
<0402> F7A7 86,42    TSTKE2 CLR  @XTOKEN           Yes, so restart
<0403> F7A9 06,E5,66        CALL CLOSE             Close disk
<0404> F7AC 56,C4           BR   DIRECT            Start Catalog again
<0405> F7AE 86,42    TSTKE3 CLR  @XTOKEN           Clear flag
<0406> F7B0 57,BF           BR   ARROWS
<0407> F7B2 03       TSTKE4 SCAN                   Wait for any key.
<0408> F7B3 57,B2           BR   TSTKE4            Loop
<0409> F7B5 06,E5,6A TSTKE5 CALL DOIO              Read file info
<0410> F7B8 06,FB,9F        CALL FILNAM            Put it on screen
<0411> F7BB 57,9A           BR   TSTKEY            Loop till done
<0412> F7BD 92,1E           DEC  @COUNT            COUNT-1

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0041 
E/A GROM
<0413> F7BF 06,EE,34 ARROWS CALL CLRFAC
<0414> F7C2 BC,4B,1E        ST   @COUNT,@FAC1
<0415> F7C5 CB,4A,00        DCHE 100,@FAC
       F7C8 64
<0416> F7C9 57,D3           BR   ARROW1
<0417> F7CB A7,4A,00        DSUB 100,@FAC
       F7CE 64
<0418> F7CF BE,A0,1C        ST   49,V@28           Show it 1__
       F7D2 31
<0419> F7D3 CB,4A,00 ARROW1 DCHE 9,@FAC
       F7D6 09
<0420> F7D7 57,EC           BR   ARROW2
<0421> F7D9 AE,4A,0A        DIV  10,@FAC
<0422> F7DC A2,4A,30        ADD  >30,@FAC
<0423> F7DF BC,A0,1D        ST   @FAC,V@29         Show it _#_
       F7E2 4A
<0424> F7E3 A2,4B,30        ADD  >30,@FAC1
<0425> F7E6 BC,A0,1E        ST   @FAC1,V@30        Show it __#
       F7E9 4B
<0426> F7EA 57,F3           BR   ARROW3
<0427> F7EC A2,4B,30 ARROW2 ADD  >30,@FAC1
<0428> F7EF BC,A0,1E        ST   @FAC1,V@30
       F7F2 4B
<0429> F7F3 BF,10,00 ARROW3 DST  >0081,@>8310      Arrows location
       F7F6 81
<0430> F7F7 BF,04,25        DST  >2580,@>8304      Recall buffer
       F7FA 80
<0431> F7FB 35,02,60 OKKEY  MOVE >0260,V*>8304,V@>0080 Fill screen
       F7FE A0,80,B0
       F801 04
<0432> F802 BE,B0,10 NOKEY  ST   130,V*>8310       Left arrow
       F805 82
<0433> F806 BE,E0,0B        ST   131,V@11(@>8310)  Right arrow
       F809 10,83
<0434> F80B 03              SCAN
<0435> F80C D6,75,01        CEQ  AID,@KEY          AID
<0436> F80F 58,2A           BR   NAID
<0437> F811 35,03,00        MOVE 768,V@0,V@>2000   Save screen
       F814 AF,20,00
       F817 A0,00
<0438> F819 06,F6,C9        CALL DMENU
<0439> F81C 03       YAID   SCAN                   Any key?
<0440> F81D 58,1C           BR   YAID              No.
<0441> F81F 35,03,00        MOVE 768,V@>2000,V@0   Restore screen
       F822 A0,00,AF
       F825 20,00
<0442> F827 03       WAID   SCAN                   Any key?
<0443> F828 58,27           BR   WAID
<0444> F82A D6,75,02 NAID   CEQ  CLEAR,@KEY        CLEAR
<0445> F82D 77,A7           BS   TSTKE2
<0446> F82F D6,75,0C        CEQ  PROCD,@KEY        PROCEED
<0447> F832 79,08           BS   ENTER0
<0448> F834 D6,75,06        CEQ  REDO,@KEY         REDO
<0449> F837 77,A7           BS   TSTKE2
<0450> F839 D6,75,0F BACK0  CEQ  BACK,@KEY         BACK
<0451> F83C 58,75           BR   BEGIN0
<0452> F83E D7,AF,10        DCEQ 'DS',V@>100A      DS?   DISK ONLY?
       F841 0A,44,53
<0453> F844 77,A7           BS   TSTKE2
<0454> F846 06,F9,0E        CALL CLRBUF            Clear buffers and FAC
<0455> F849 BD,4A,AF        DST  V@>1008,@FAC      Get length
       F84C 10,08
<0456> F84E D7,4A,00        DCEQ 5,@FAC            DSK#. or SCS#. or WDS#.
       F851 05

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0042 
E/A GROM
<0457> F852 78,A3           BS   BEGIN3
<0458> F854 CB,4A,00        DCHE 4,@FAC
       F857 04
<0459> F858 58,A3           BR   BEGIN3
<0460> F85A 06,F9,0E        CALL CLRBUF            Clear buffers and FAC
<0461> F85D BD,4A,AF        DST  V@>1008,@FAC      Get length
       F860 10,08
<0462> F862 93,4A    BACK1  DDEC @FAC              Length -1
<0463> F864 D6,EF,10        CEQ  >2E,V@>1009(@FAC) .?
       F867 09,4A,2E
<0464> F86A 58,62           BR   BACK1             No, keep searching
<0465> F86C CB,4A,00        DCHE 5,@FAC            DSK. or SCS. or WDS. or DSK#.
       F86F 05
<0466> F870 78,A3           BS   BEGIN3
<0467> F872 BE,75,0E BACK3  ST   BEGIN,@KEY
<0468> F875 D6,75,0E BEGIN0 CEQ  BEGIN,@KEY        BEGIN
<0469> F878 58,C2           BR   FCTNUP
<0470> F87A 06,EE,34        CALL CLRFAC            Clear buffers and FAC
<0471> F87D BD,4A,AF        DST  V@>1008,@FAC      Get length
       F880 10,08
<0472> F882 D7,4A,00        DCEQ 5,@FAC            DSK#. or SCS#. or WDS#.
       F885 05
<0473> F886 78,9A           BS   BEGIN2
<0474> F888 87,4A           DCLR @FAC              Clear FAC
<0475> F88A 91,4A    BEGIN1 DINC @FAC              COUNT +1
<0476> F88C D6,EF,10        CEQ  >2E,V@>1009(@FAC) .?
       F88F 09,4A,2E
<0477> F892 58,8A           BR   BEGIN1            No, keep searching
<0478> F894 D7,4A,00        DCEQ 4,@FAC            DSK. Length?
       F897 04
<0479> F898 78,8A           BS   BEGIN1            Yes, look for Volume.
<0480> F89A 91,4A    BEGIN2 DINC @FAC              LENGTH+1
<0481> F89C BF,EF,10        DST  >0D0D,V@>1009(@FAC)
       F89F 09,4A,0D
       F8A2 0D
<0482> F8A3 BD,AF,10 BEGIN3 DST  @FAC,V@>1008
       F8A6 08,4A
<0483> F8A8 A3,4A,00        DADD 2,@FAC
       F8AB 02
<0484> F8AC 34,4A,AF        MOVE @FAC,V@>1008,V@>2255
       F8AF 22,55,AF
       F8B2 10,08
<0485> F8B4 34,4A,AF        MOVE @FAC,V@>1008,V@>2400
       F8B7 24,00,AF
       F8BA 10,08
<0486> F8BC BE,42,37        ST   >37,@XTOKEN
<0487> F8BF 05,E0,28        B    OLDEA
[0008]               ***********************************************************
[0009]                      COPY 'DSK5.MYXB7-D'
<0001>                
<0002>                
<0003> F8C2 D6,75,0B FCTNUP CEQ  11,@KEY           FCTN UP
<0004> F8C5 79,FE           BS   UPKEY
<0005> F8C7 D6,75,45        CEQ  'E',@KEY          UP (E)
<0006> F8CA 79,FE           BS   UPKEY
<0007> F8CC D6,75,65        CEQ  'e',@KEY          UP (e)
<0008> F8CF 79,FE           BS   UPKEY
<0009> F8D1 D6,75,0A        CEQ  10,@KEY           FCTN DOWN
<0010> F8D4 7A,16           BS   DKEY
<0011> F8D6 D6,75,58        CEQ  'X',@KEY          DOWN (X)
<0012> F8D9 7A,16           BS   DKEY
<0013> F8DB D6,75,78        CEQ  'x',@KEY          DOWN (x)
<0014> F8DE 7A,16           BS   DKEY
<0015> F8E0 D6,75,08        CEQ  8,@KEY            FCTN LEFT

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0043 
E/A GROM
<0016> F8E3 7A,3A           BS   LKEY
<0017> F8E5 D6,75,53        CEQ  83,@KEY           LEFT (S)
<0018> F8E8 7A,3A           BS   LKEY
<0019> F8EA D6,75,73        CEQ  115,@KEY          LEFT (s)
<0020> F8ED 7A,3A           BS   LKEY
<0021> F8EF D6,75,09        CEQ  9,@KEY            FCTN RIGHT
<0022> F8F2 7A,5F           BS   RKEY
<0023> F8F4 D6,75,44        CEQ  68,@KEY           RIGHT (D)
<0024> F8F7 7A,5F           BS   RKEY
<0025> F8F9 D6,75,64        CEQ  100,@KEY          RIGHT (d)
<0026> F8FC 7A,5F           BS   RKEY
<0027> F8FE D6,75,20        CEQ  ' ',@KEY          SPACE BAR
<0028> F901 79,08           BS   ENTER0
<0029> F903 D6,75,0D        CEQ  ENTER,@KEY        ENTER
<0030> F906 58,02           BR   NOKEY
<0031> F908 06,F9,0E ENTER0 CALL CLRBUF
<0032> F90B 05,F9,29        B    ENTR
<0033> F90E BE,AF,22 CLRBUF ST   ENTER,V@>2257     Clear buffer
       F911 57,0D
<0034> F913 35,00,3F        MOVE 63,V@>2257,V@>2258
       F916 AF,22,58
       F919 AF,22,57
<0035> F91C 35,00,3F        MOVE 63,V@>2257,V@>2402
       F91F AF,24,02
       F922 AF,22,57
<0036> F925 06,EE,34        CALL CLRFAC
<0037> F928 00              RTN
<0038> F929 BD,06,AF ENTR   DST  V@>1008,@>8306    Get length of device
       F92C 10,08
<0039> F92E BE,EF,10        ST   >2E,V@>1009(@>8306)
       F931 09,06,2E
<0040> F934 34,06,AF        MOVE @>8306,V@>100A,V@>2402
       F937 24,02,AF
       F93A 10,0A
<0041> F93C BD,4C,10        DST  @>8310,@FAC2
<0042> F93F 90,11           INC  @>8311
<0043> F941 90,4D    ENTER1 INC  @FAC3             Index+1
<0044> F943 90,4B           INC  @FAC1             Count+1
<0045> F945 D6,B0,4C        CEQ  SPACE,V*FAC2      Space?
       F948 20
<0046> F949 79,50           BS   ENTER2            Yes
<0047> F94B D6,4B,0B        CEQ  11,@FAC1          To long?
<0048> F94E 59,41           BR   ENTER1
<0049> F950 BE,B0,4C ENTER2 ST   ENTER,V*FAC2      cr
       F953 0D
<0050> F954 D7,E0,10        DCEQ 'Di',V@16(@>8310) Directory?
       F957 10,44,69
<0051> F95A 59,6A           BR   NODIR             No
<0052> F95C D6,E0,12        CEQ  'r',V@18(@>8310)
       F95F 10,72
<0053> F961 59,6A           BR   NODIR
<0054> F963 BF,B0,4C        DST  >2E0D,V*FAC2      .cr
       F966 2E,0D
<0055> F968 90,4A           INC  @FAC              Count+1
<0056> F96A 34,4A,EF NODIR  MOVE @FAC,V*>8310,V@>100A(@>8306)
       F96D 10,0A,06
       F970 B0,10
<0057> F972 A1,4A,06        DADD @>8306,@FAC
<0058> F975 34,4A,AF        MOVE @FAC,V@>100A,V@>2257
       F978 22,57,AF
       F97B 10,0A
<0059> F97D BD,AF,22        DST  @FAC,V@>2255
       F980 55,4A
<0060> F982 90,07           INC  @>8307

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0044 
E/A GROM
<0061> F984 BD,AF,24        DST  @>8306,V@>2400
       F987 00,06
<0062> F989 06,E5,66        CALL CLOSE
<0063>                
<0064> F98C BE,42,EA        ST   >EA,@XTOKEN       Set flag
<0065>                
<0066> F98F D6,75,20        CEQ  32,@KEY           SPACE BAR
<0067> F992 79,D8           BS   XBPGM
<0068> F994 D7,E0,10        DCEQ 'Di',V@16(@>8310) Directory?
       F997 10,44,69
<0069> F99A 59,A3           BR   PORVI
<0070> F99C D6,E0,12        CEQ  'r',V@18(@>8310)
       F99F 10,72
<0071> F9A1 76,C4           BS   DIRECT
<0072> F9A3 D6,E0,10 PORVI  CEQ  'P',V@16(@>8310)  Program?
       F9A6 10,50
<0073> F9A8 67,16           BS   PRGRM
<0074> F9AA D6,E0,14        CEQ  'V',V@20(@>8310)  Variable?
       F9AD 10,56
<0075> F9AF 59,C7           BR   DORF80
<0076> F9B1 D6,E0,10        CEQ  'I',V@16(@>8310)  Internal?
       F9B4 10,49
<0077> F9B6 59,C7           BR   DORF80
<0078> F9B8 D7,E0,18        DCEQ '25',V@24(@>8310) Length 25_?
       F9BB 10,32,35
<0079> F9BE 59,C7           BR   DORF80
<0080> F9C0 D6,E0,1A        CEQ  '4',V@26(@>8310)  Length 254?
       F9C3 10,34
<0081> F9C5 6E,D9           BS   XBINP
<0082> F9C7 D7,E0,19 DORF80 DCEQ '80',V@25(@>8310) Length 80?
       F9CA 10,38,30
<0083> F9CD 40,71           BR   MMENU
<0084> F9CF D6,E0,14        CEQ  'F',V@20(@>8310)  Fixed?
       F9D2 10,46
<0085> F9D4 69,E4           BS   LANDR
<0086> F9D6 40,71           BR   MMENU
<0087> F9D8 D6,E0,10 XBPGM  CEQ  'P',V@16(@>8310)  Program?
       F9DB 10,50
<0088> F9DD 6E,D9           BS   XBINP
<0089> F9DF D6,E0,14        CEQ  'V',V@20(@>8310)  Variable?
       F9E2 10,56
<0090> F9E4 40,71           BR   MMENU
<0091> F9E6 D6,E0,10        CEQ  'I',V@16(@>8310)  Internal?
       F9E9 10,49
<0092> F9EB 40,71           BR   MMENU
<0093> F9ED D7,E0,18        DCEQ '25',V@24(@>8310) Length 25_?
       F9F0 10,32,35
<0094> F9F3 40,71           BR   MMENU
<0095> F9F5 D6,E0,1A        CEQ  '4',V@26(@>8310)  Length 254?
       F9F8 10,34
<0096> F9FA 6E,D9           BS   XBINP
<0097> F9FC 40,71           BR   MMENU
<0098>                
<0099> F9FE D7,10,00 UPKEY  DCEQ >0081,@>8310      Top of screen?
       FA01 81
<0100> FA02 7A,0A           BS   GLESS             So scroll screen down
<0101> FA04 A7,10,00        DSUB 32,@>8310         Up one.
       FA07 20
<0102> FA08 5A,14           BR   GLESS2            Return
<0103> FA0A D7,04,25 GLESS  DCEQ >2580,@>8304      Start of buffer?
       FA0D 80
<0104> FA0E 77,FB           BS   OKKEY             Yes
<0105> FA10 A7,04,00        DSUB >20,@>8304        One more line down
       FA13 20

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0045 
E/A GROM
<0106> FA14 57,FB    GLESS2 BR   OKKEY
<0107> FA16 D6,E0,01 DKEY   CEQ  >20,V@1(@>8310)   Blank line?
       FA19 10,20
<0108> FA1B 79,FE           BS   UPKEY
<0109> FA1D D7,10,02        DCEQ >02C1,@>8310      Bottom of screen?
       FA20 C1
<0110> FA21 7A,29           BS   GMORE             So scroll screen up
<0111> FA23 A3,10,00        DADD 32,@>8310         Down one.
       FA26 20
<0112> FA27 57,FB           BR   OKKEY             No
<0113> FA29 D5,04,40 GMORE  DCEQ @>8340,@>8304     End of buffer?
<0114> FA2C 77,FB           BS   OKKEY             Yes
<0115> FA2E D6,A0,A2        CEQ  >20,V@>00A2       Last line in buffer?
       FA31 20
<0116> FA32 77,FB           BS   OKKEY             Yes
<0117> FA34 A3,04,00        DADD >20,@>8304        One more line up
       FA37 20
<0118> FA38 57,FB           BR   OKKEY
<0119> FA3A BE,76,12 LKEY   ST   18,@>8376         Line Counter
<0120> FA3D D7,10,00 LUPKEY DCEQ >0081,@>8310      Top of screen?
       FA40 81
<0121> FA41 7A,49           BS   LGLESS            So scroll screen down
<0122> FA43 A7,10,00        DSUB 32,@>8310         Up one.
       FA46 20
<0123> FA47 5A,53           BR   LGLES2            Return
<0124> FA49 D7,04,25 LGLESS DCEQ >2580,@>8304      Start of buffer?
       FA4C 80
<0125> FA4D 7A,55           BS   LOKKEY            Yes
<0126> FA4F A7,04,00        DSUB >20,@>8304        One more line down
       FA52 20
<0127> FA53 5A,55    LGLES2 BR   LOKKEY
<0128> FA55 06,FA,90 LOKKEY CALL FLSCR
<0129> FA58 92,76           DEC  @>8376            Line counter -1
<0130> FA5A 5A,3D           BR   LUPKEY            Continue Loop
<0131> FA5C 05,F8,02        B    NOKEY             Done.
<0132> FA5F BE,76,12 RKEY   ST   18,@>8376         Line Counter
<0133> FA62 D6,E0,01 RDKEY  CEQ  >20,V@1(@>8310)   Blank line?
       FA65 10,20
<0134> FA67 79,FE           BS   UPKEY
<0135> FA69 D7,10,02        DCEQ >02C1,@>8310      Bottom of screen?
       FA6C C1
<0136> FA6D 7A,75           BS   RGMORE            So scroll screen up
<0137> FA6F A3,10,00        DADD 32,@>8310         Down one.
       FA72 20
<0138> FA73 5A,86           BR   ROKKEY            No
<0139> FA75 D5,04,40 RGMORE DCEQ @>8340,@>8304     End of buffer?
<0140> FA78 7A,86           BS   ROKKEY            Yes
<0141> FA7A D6,A0,A2        CEQ  >20,V@>00A2       Last line in buffer?
       FA7D 20
<0142> FA7E 7A,86           BS   ROKKEY            Yes
<0143> FA80 A3,04,00        DADD >20,@>8304        One more line up
       FA83 20
<0144> FA84 5A,86           BR   ROKKEY
<0145> FA86 06,FA,90 ROKKEY CALL FLSCR
<0146> FA89 92,76           DEC  @>8376            Line counter -1
<0147> FA8B 5A,62           BR   RDKEY             Continue Loop
<0148> FA8D 05,F8,02        B    NOKEY             Done.
<0149> FA90 35,02,60 FLSCR  MOVE >0260,V*>8304,V@>0080 Fill screen
       FA93 A0,80,B0
       FA96 04
<0150> FA97 BE,B0,10        ST   130,V*>8310       Left arrow
       FA9A 82
<0151> FA9B BE,E0,0B        ST   131,V@11(@>8310)  Right arrow
       FA9E 10,83

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0046 
E/A GROM
<0152> FAA0 00              RTN
<0153>               *
<0154>               * PAB data
<0155>               *
<0156> FAA1 00,0D,08 CATDAT BYTE 0,>D,8,>36,0,0,0,0,0
       FAA4 36,00,00
       FAA7 00,00,00
<0157>               *
<0158> FAAA 40,02,00 HALVE  BYTE >40,>02,0,0,0,0,0,0
       FAAD 00,00,00
       FAB0 00,00
<0159>               *
<0160>               * Screen - prints initial screen and disk info
<0161>               *
<0162> FAB2 08       SCREEN FMT
<0163> FAB3 FE,00            ROW  0
<0164> FAB5 FF,02            COL  2
<0165> FAB7 1C,44,69         HTEX 'Directory=           Files000'
       FABA 72,65,63
       FABD 74,6F,72
       FAC0 79,3D,20
       FAC3 20,20,20
       FAC6 20,20,20
       FAC9 20,20,20
       FACC 20,46,69
       FACF 6C,65,73
       FAD2 30,30,30
<0166> FAD5 A0               ROW+ 1
<0167> FAD6 FF,02            COL  2
<0168> FAD8 14,46,72         HTEX 'Free=           Used='
       FADB 65,65,3D
       FADE 20,20,20
       FAE1 20,20,20
       FAE4 20,20,20
       FAE7 20,20,55
       FAEA 73,65,64
       FAED 3D
<0169> FAEE A0               ROW+ 1
<0170> FAEF FF,02            COL  2
<0171> FAF1 1C,20,46         HTEX ' Filename  Size    Type     P'
       FAF4 69,6C,65
       FAF7 6E,61,6D
       FAFA 65,20,20
       FAFD 53,69,7A
       FB00 65,20,20
       FB03 20,20,54
       FB06 79,70,65
       FB09 20,20,20
       FB0C 20,20,50
<0172> FB0F A0               ROW+ 1
<0173> FB10 FF,02            COL  2
<0174> FB12 1C,2D,2D         HTEX '---------- ---- ----------- -'
       FB15 2D,2D,2D
       FB18 2D,2D,2D
       FB1B 2D,2D,20
       FB1E 2D,2D,2D
       FB21 2D,20,2D
       FB24 2D,2D,2D
       FB27 2D,2D,2D
       FB2A 2D,2D,2D
       FB2D 2D,20,2D
<0175> FB30 FB              FEND
<0176> FB31 86,1E           CLR  @COUNT            Clear file counter
<0177> FB33 06,FC,9D        CALL DISSTR            Get string into FAC

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0047 
E/A GROM
<0178> FB36 8E,4B           CZ   @FAC1             Skip if zero length
<0179> FB38 7B,42           BS   CAT3
<0180> FB3A 08              FMT
<0181> FB3B FE,00            ROW 0
<0182> FB3D FF,0C            COL 12
<0183> FB3F E9,4C            HSTR 10,@FAC2
<0184> FB41 FB              FEND
<0185> FB42 A1,10,4A CAT3   DADD @FAC,@>8310       Go to next field
<0186> FB45 A3,10,00        DADD 19,@>8310         Continue to last field
       FB48 13
<0187> FB49 BF,14,00        DST  >28,@>8314        Set up screen addr
       FB4C 28
<0188> FB4D D7,AF,10        DCEQ >4453,V@>100A     DSK?
       FB50 0A,44,53
<0189> FB53 5B,5B           BR   CAT4              No, must be HARD
<0190> FB55 06,FC,7A        CALL DISNUM            Display available DSK space
<0191> FB58 05,FB,6E        B    CAT4A
<0192> FB5B 35,00,08 CAT4   MOVE 8,V*>8310,@ARG    Get Available space *2
       FB5E 5C,B0,10
<0193> FB61 31,00,08        MOVE 8,G@HALVE,@FAC    Get divisor
       FB64 4A,FA,AA
<0194> FB67 0F,09           XML  FDIV
<0195> FB69 0F,02           XML  ROUND
<0196> FB6B 06,FC,80        CALL DISNU1            Display available HARD space
<0197>               * Display used space
<0198> FB6E 35,00,08 CAT4A  MOVE 8,V*>8310,@FAC    Get Available space
       FB71 4A,B0,10
<0199> FB74 A7,10,00        DSUB 9,@>8310          Point to formatted space
       FB77 09
<0200> FB78 35,00,08        MOVE 8,V*>8310,@ARG    Move it to ARG
       FB7B 5C,B0,10
<0201> FB7E 0F,07           XML  FSUB              Develop used value *2
<0202> FB80 BF,14,00        DST  >38,@>8314        Set up screen addr
       FB83 38
<0203> FB84 D7,AF,10        DCEQ >4453,V@>100A     DSK?
       FB87 0A,44,53
<0204> FB8A 7B,9B           BS   CAT4B             Yes, must be DISK
<0205> FB8C 35,00,08        MOVE 8,@FAC,@ARG       Get Unused space *2
       FB8F 5C,4A
<0206> FB91 31,00,08        MOVE 8,G@HALVE,@FAC    Get divisor
       FB94 4A,FA,AA
<0207> FB97 0F,09           XML  FDIV
<0208> FB99 0F,02           XML  ROUND
<0209> FB9B 06,FC,80 CAT4B  CALL DISNU1            Display used space
<0210> FB9E 00              RTN                    Return
<0211>               *
<0212>               * Display one file on screen
<0213>               *
<0214> FB9F 06,FC,9D FILNAM CALL DISSTR            Get string into FAC
<0215> FBA2 90,1E           INC  @COUNT            FILE COUNT +1
<0216> FBA4 8E,4B           CZ   @FAC1             Skip display if zero
<0217> FBA6 7B,B0           BS   CAT5              length
<0218> FBA8 08              FMT                    Put disk name on screen
<0219> FBA9 FE,17            ROW   23              .
<0220> FBAB FF,02            COL   02              .
<0221> FBAD E9,4C            HSTR 10,@FAC2         .
<0222> FBAF FB              FEND                   .
<0223> FBB0 A1,10,4A CAT5   DADD @FAC,@>8310       Go to next field
<0224> FBB3 A3,10,00        DADD 10,@>8310         Continue another field
       FBB6 0A
<0225> FBB7 8F,B0,10        DCZ  V*>8310           Time to get out if
<0226> FBBA 7C,75           BS   FILNA1            zero file size
<0227> FBBC BF,14,02        DST  >2EA,@>8314       Set up screen address
       FBBF EA

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0048 
E/A GROM
<0228> FBC0 06,FC,7A        CALL DISNUM            Display file length
<0229> FBC3 A7,10,00        DSUB 9,@>8310          Back a field
       FBC6 09
<0230> FBC7 35,00,08        MOVE 8,V*>8310,@FAC    Move it into FAC
       FBCA 4A,B0,10
<0231> FBCD 0F,12           XML  CFI               Convert it to an int.
<0232> FBCF 8E,4A           CZ   @FAC              Non-negative?
<0233> FBD1 7B,D9           BS   CAT5A             YES! File not protected
<0234> FBD3 BC,A2,FE        ST   @>8302,V@>2FE     Put a 'Y' on screen
       FBD6 02
<0235> FBD7 83,4A           DNEG @FAC              Make number positive
<0236> FBD9 92,4B    CAT5A  DEC  @FAC1             Adjust for CASE
<0237> FBDB 8A,4B           CASE @FAC1             Show file type
<0238> FBDD 5B,E9           BR   DF                .
<0239> FBDF 5B,F9           BR   DV                .
<0240> FBE1 5C,09           BR   IF                .
<0241> FBE3 5C,19           BR   IV                .
<0242> FBE5 5C,29           BR   PR                .
<0243> FBE7 5C,39           BR   DI
<0244> FBE9 08       DF     FMT
<0245> FBEA FE,17            ROW   23
<0246> FBEC FF,12            COL   18
<0247> FBEE 06,44,69         HTEX 'Dis/Fix'
       FBF1 73,2F,46
       FBF4 69,78
<0248> FBF6 FB              FEND
<0249> FBF7 5C,4B           BR   CAT6
<0250> FBF9 08       DV     FMT
<0251> FBFA FE,17            ROW   23
<0252> FBFC FF,12            COL   18
<0253> FBFE 06,44,69         HTEX 'Dis/Var'
       FC01 73,2F,56
       FC04 61,72
<0254> FC06 FB              FEND
<0255> FC07 5C,4B           BR   CAT6
<0256> FC09 08       IF     FMT
<0257> FC0A FE,17            ROW   23
<0258> FC0C FF,12            COL   18
<0259> FC0E 06,49,6E         HTEX 'Int/Fix'
       FC11 74,2F,46
       FC14 69,78
<0260> FC16 FB              FEND
<0261> FC17 5C,4B           BR   CAT6
<0262> FC19 08       IV     FMT
<0263> FC1A FE,17            ROW   23
<0264> FC1C FF,12            COL   18
<0265> FC1E 06,49,6E         HTEX 'Int/Var'
       FC21 74,2F,56
       FC24 61,72
<0266> FC26 FB              FEND
<0267> FC27 5C,4B           BR   CAT6
<0268> FC29 08       PR     FMT
<0269> FC2A FE,17            ROW   23
<0270> FC2C FF,12            COL   18
<0271> FC2E 06,50,72         HTEX 'Program'
       FC31 6F,67,72
       FC34 61,6D
<0272> FC36 FB              FEND
<0273> FC37 5C,56           BR   CAT7              Return
<0274> FC39 08       DI     FMT
<0275> FC3A FE,17            ROW    23
<0276> FC3C FF,12            COL    18
<0277> FC3E 08,44,69         HTEX 'Directory'
       FC41 72,65,63

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0049 
E/A GROM
       FC44 74,6F,72
       FC47 79
<0278> FC48 FB              FEND
<0279> FC49 5C,56           BR   CAT7
<0280> FC4B A3,10,00 CAT6   DADD 18,@>8310         Advavce two fields
       FC4E 12
<0281> FC4F BF,14,02        DST  >2F6,@>8314       Set up screen address
       FC52 F6
<0282> FC53 06,FC,7A        CALL DISNUM            Display record length
<0283> FC56 35,00,1F CAT7   MOVE >1F,V@>02E0,V@0(@>8340)
       FC59 E0,00,40
       FC5C A2,E0
<0284> FC5E A3,40,00        DADD >20,@>8340
       FC61 20
<0285>               *
<0286>               * Scroll the screen
<0287>               *
<0288> FC62 35,02,60 SCROLL MOVE >260,V@>A0,V@>80  Scroll screen
       FC65 A0,80,A0
       FC68 A0
<0289> FC69 BE,A2,E0        ST   SPACE,V@>2E0      Clear last line
       FC6C 20
<0290> FC6D 35,00,1F        MOVE >1F,V@>2E0,V@>2E1
       FC70 A2,E1,A2
       FC73 E0
<0291> FC74 00              RTN                    Return
<0292> FC75 87,12    FILNA1 DCLR @>8312            Clear a byte
<0293> FC77 8E,12           CZ   @>8312            Set COND bit
<0294> FC79 01              RTNC                   Return w/COND
<0295>               * Display number subroutine
<0296>               *  ENTER: Floating number in FAC for DISNU1
<0297>               *         Screen address in >8314
<0298>               *
<0299> FC7A 35,00,08 DISNUM MOVE 8,V*>8310,@FAC    Move FLP number to FAC
       FC7D 4A,B0,10
<0300> FC80 86,55    DISNU1 CLR  @FAC11            Indicate a free format
<0301> FC82 06,00,14        CALL CNS               Convert FAC to a string
<0302> FC85 BF,16,00        DST  7,@>8316          Right justify number
       FC88 07
<0303> FC89 A4,17,56        S    @FAC12,@>8317
<0304> FC8C A1,14,16        DADD @>8316,@>8314
<0305> FC8F BC,B0,14 DISNU2 ST   *FAC11,V*>8314    Put a char on the screen
       FC92 90,55
<0306> FC94 91,14           DINC @>8314            Increment screen addr.
<0307> FC96 90,55           INC  @FAC11            Increment FAC addr.
<0308> FC98 92,56           DEC  @FAC12            Decrement string length count
<0309> FC9A 5C,8F           BR   DISNU2            Loop until done
<0310> FC9C 00              RTN                    Return to caller
<0311>               *
<0312>               * Prepare a VDP string for FORMAT statement
<0313>               *  LEAVE: FAC has string length (word)
<0314>               *         FAC2  has string
<0315>               *         >8310 pointing to next string in record
<0316>               *
<0317> FC9D BF,10,08 DISSTR DST  >0836,@>8310      Get buffer address
       FCA0 36
<0318> FCA1 86,4A           CLR  @FAC              Clear MSB of FAC word
<0319> FCA3 BC,4B,B0        ST   V*>8310,@FAC1     Store disk name length
       FCA6 10
<0320> FCA7 91,10           DINC @>8310            Point to string
<0321> FCA9 BE,4C,20        ST   >20,@FAC2         Clear out string space
<0322> FCAC 35,00,09        MOVE 9,@FAC2,@FAC3     .
       FCAF 4D,4C
<0323> FCB1 34,4A,4C        MOVE @FAC,V*>8310,@FAC2 Move disk name into FAC

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0050 
E/A GROM
       FCB4 B0,10
<0324> FCB6 00              RTN
<0325>               ***********************************************************
<0326> FCB7 FD,33    VEIW40 DATA EADSR             * Viewer 40 Column
<0327> FCB9 FC,BF           DATA MV40
<0328> FCBB 03,56,34        STRI 'V40'
       FCBE 30
<0329>               *******************************
<0330> FCBF BD,58,56 MV40   DST  @>8356,@>8358
<0331> FCC2 A5,58,54        DSUB @>8354,@>8358
<0332> FCC5 35,00,0A        MOVE 10,V@-10(@>8358),@FAC
       FCC8 4A,EF,FF
       FCCB F6,58
<0333> FCCD B2,EF,FF        AND  >1F,V@-9(@>8358)
       FCD0 F7,58,1F
<0334> FCD3 C6,4A,04        CH   >04,@FAC
<0335> FCD6 7D,16           BS   DSREXT
<0336> FCD8 8A,4A           CASE @FAC
<0337> FCDA 5C,F6           BR   VOPEN         * OPEN
<0338> FCDC 5D,19           BR   VCLOSE        * CLOSE
<0339> FCDE 5D,16           BR   DSREXT        * READ
<0340> FCE0 35,03,70        MOVE 880,V@80,V@0  * WRITE
       FCE3 A0,00,A0
       FCE6 50
<0341> FCE7 35,00,50        MOVE 80,V*FAC2,V@880
       FCEA A3,70,B0
       FCED 4C
<0342> FCEE 03              SCAN
<0343> FCEF 5D,16           BR   DSREXT
<0344> FCF1 03       FREEZE SCAN
<0345> FCF2 5C,F1           BR   FREEZE
<0346> FCF4 5D,16           BR   DSREXT
<0347> FCF6 35,00,80 VOPEN  MOVE 128,V@>0380,V@-128(@>8370)
       FCF9 EF,FF,80
       FCFC 70,A3,80
<0348> FCFF BE,4A,F0        ST   >F0,@FAC
<0349> FD02 3D,00,01        MOVE 1,@FAC,#1
       FD05 01,4A
<0350> FD07 BE,80,D4        ST   >F0,@>83D4
       FD0A F0
<0351> FD0B BE,A0,00        ST   >20,V@0
       FD0E 20
<0352> FD0F 35,03,BF        MOVE 959,V@0,V@1
       FD12 A0,01,A0
       FD15 00
<0353> FD16 06,00,12 DSREXT CALL RETURN
<0354> FD19 03       VCLOSE SCAN
<0355> FD1A 5D,19           BR   VCLOSE
<0356> FD1C 35,00,80        MOVE 128,V@-128(@>8370),V@>0380
       FD1F A3,80,EF
       FD22 FF,80,70
<0357> FD25 BE,00,E0        ST   >E0,@>8300
<0358> FD28 3D,00,01        MOVE 1,@>8300,#1
       FD2B 01,00
<0359> FD2D BE,80,D4        ST   >E0,@>83D4
       FD30 E0
<0360> FD31 5D,16           BR   DSREXT
<0361>               ************************************
<0362> FD33 FD,3A    EADSR  DATA SEADSR
<0363> FD35 E0,28           DATA OLDEA
<0364> FD37 02,45,41        STRI 'EA'
<0365> FD3A FD,41    SEADSR DATA XBDSR
<0366> FD3C E0,28           DATA OLDEA
<0367> FD3E 02,65,61        STRI 'ea'

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0051 
E/A GROM
<0368>               ************************************
<0369> FD41 FD,48    XBDSR  DATA SXBDSR
<0370> FD43 63,72           DATA RXB
<0371> FD45 02,58,42        STRI 'XB'
<0372> FD48 FD,4F    SXBDSR DATA BASIC
<0373> FD4A 63,72           DATA RXB
<0374> FD4C 02,78,62        STRI 'xb'
<0375>               ************************************
<0376> FD4F FD,59    BASIC  DATA SBASIC
<0377> FD51 21,6F           DATA >216F
<0378> FD53 05,42,41        STRI 'BASIC'
       FD56 53,49,43
<0379> FD59 00,00    SBASIC DATA >0000
<0380> FD5B 21,6F           DATA >216F
<0381> FD5D 05,62,61        STRI 'basic'
       FD60 73,69,63
<0382>               ************************************
<0383>                      END

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0052 
E/A GROM
Symbol Table #1 (New,alpha)  
0001 AID        835C ARG        F7D3 ARROW1     F7EC ARROW2     F7F3 ARROW3     
F7BF ARROWS     E82D ASSEM      000F BACK       F839 BACK0      F862 BACK1      
F872 BACK3      FD4F BASIC      000E BEGIN      F875 BEGIN0     F88A BEGIN1     
F89A BEGIN2     F8A3 BEGIN3     001C BERR       0038 BGETSS     EDE2 BINIT2     
EDEA BINIT3     E520 BLDPAB     E551 BLNKBU     EE22 BUGS       FB42 CAT3       
FB5B CAT4       FB6E CAT4A      FB9B CAT4B      FBB0 CAT5       FBD9 CAT5A      
FC4B CAT6       FC56 CAT7       FAA1 CATDAT     ED53 CCRMSG     EBEF CHKER2     
EBE4 CHKERR     8318 CHRCUR     0023 CIF        0002 CLEAR      E566 CLOSE      
F90E CLRBUF     E032 CLREA      EE34 CLRFAC     ECD4 CLRMSG     EF65 CLRREA     
E708 CLRXOP     EC30 CLSALL     EC4D CLSPAB     8322 CODE       E22D COLBAC     
E23A COLEND     077F COLOR      E1B7 COLORS     E210 COLSCN     831E COUNT      
8320 CURADD     EDC4 CUREDP     EDCC CURPAT     E17F DARROW     EE12 DASSM1     
E823 DDSK1      E828 DEDIT1     EE64 DEV1       EE7D DEV2       EE80 DEV3       
EE81 DEV4       EE3C DEVICE     EE7A DEVNO      FBE9 DF         FC39 DI         
F756 DIREC2     F766 DIREC3     F6C4 DIRECT     FC80 DISNU1     FC8F DISNU2     
FC7A DISNUM     FC9D DISSTR     FA16 DKEY       E821 DLEN       EE1D DLOAD      
F6C9 DMENU      E56A DOIO       F9C7 DORF80     FD16 DSREXT     0010 DSRLNK     
0012 DSRRET     EE17 DUTIL1     FBF9 DV         FD33 EADSR      E6E1 EASCRN     
E246 EDITOR     E3CF EMOPT2     8326 ENDLN      000D ENTER      F908 ENTER0     
F941 ENTER1     F950 ENTER2     F929 ENTR       8354 ERCODE     ED48 ERRC       
ED79 ERRCE      ED88 ERRDD      ED17 ERRIOC     ED6D ERRIT      ED0B ERRMF      
EC6D ERRMSG     ED26 ERRNME     ED3A ERRNTL     ECE0 ERROR      EDB2 ERRPNF     
ED9D ERRUR      E6BA EXPMEM     834A FAC        834B FAC1       8355 FAC11      
8356 FAC12      834C FAC2       834D FAC3       834E FAC4       834F FAC5       
8350 FAC6       8351 FAC7       8352 FAC8       8353 FAC9       F8C2 FCTNUP     
FC75 FILNA1     FB9F FILNAM     8348 FLAG       8349 FLAG2      FA90 FLSCR      
EAED FNDDON     EA8A FNDLNK     EA90 FNDLP      EAAD FNDSHO     FCF1 FREEZE     
0000 G0000      0001 G0001      E03B GE029      E047 GE056      E07C GE116      
E199 GE11F      E2B5 GE19B      E2FD GE1E2      E2FF GE1E4      E338 GE1F6      
E354 GE1FC      E385 GE22C      E390 GE237      E39B GE23B      E3C5 GE25B      
E3DB GE271      E3DC GE272      E3E5 GE27B      E3ED GE283      E418 GE29C      
E42F GE2B3      E431 GE2B5      E440 GE2C4      E455 GE2D9      E487 GE30A      
E49F GE322      E4A8 GE32B      E4C1 GE344      E4DC GE35F      E4DE GE361      
E4E4 GE367      E4FD GE380      E50A GE38D      E550 GE3CF      E596 GE415      
E5AC GE42B      E5AF GE42E      E5BD GE43C      E5C7 GE446      E5CD GE44C      
E5F6 GE456      E600 GE460      E621 GE46B      E626 GE470      E632 GE47C      
E63B GE485      E64F GE499      E661 GE4AB      E689 GE4D3      E693 GE4DD      
E6B7 GE501      E6B9 GE503      E793 GE597      E7A2 GE5A6      E7EA GE5E5      
E80A GE605      E875 GE654      E880 GE687      E953 GE736      E973 GE756      
E984 GE767      E9A1 GE784      E9BA GE7A2      E9BF GE7A7      E9CC GE7B1      
E9DB GE7C0      EA15 GE7F2      EA3B GE816      EA46 GE821      EA4B GE826      
EA5B GE848      EB11 GE883      EB1C GE88E      EB31 GE8A3      EB34 GE8A8      
EB3C GE8B0      EB3F GE8B3      EB60 GE8D4      EB6F GE8E3      EB81 GE8F5      
EB88 GE8FC      EB8E GE907      EB8F GE908      EB96 GE90F      EB9D GE916      
EBA4 GE91D      EBAF GE928      EBB6 GE92F      EBBD GE936      EBC4 GE93D      
EBCB GE944      EBD0 GE949      EBDF GE958      EC0D GE97A      EC1C GE97F      
EC77 GE9DA      EBA9 GE9E2      EC95 GE9F8      ECAF GEA12      ECBC GEA1F      
ECCB GEA2E      EDF4 GEBA0      EE11 GEBBD      E51D GETALL     E58B GETINP     
E5BE GETKEY     EF94 GF000      FA0A GLESS      FA14 GLESS2     FA29 GMORE      
FAAA HALVE      FC09 IF         8379 ITIMER     FC19 IV         8374 KBNO       
8375 KEY        E9E4 LANDR      8347 LDFLAG     FA53 LGLES2     FA49 LGLESS     
FA3A LKEY       E7AE LODPGM     E7BB LODUSR     FA55 LOKKEY     FA3D LUPKEY     
E010 MENU       E071 MMENU      EADC MORSCN     E086 MSCRN      FCBF MV40       
E18F MYEAXB     E78C MYSRCH     F82A NAID       E6DB NESCRN     E037 NEWEA      
E16F NEWSCN     E785 NO1KEY     F96A NODIR      E744 NOEABF     F802 NOKEY      
F7FB OKKEY      E028 OLDEA      EF73 ONEKEY     EACA OUTSCN     E819 PAB        
E544 PABNAM     831C PABPTR     E7D9 PGMLOD     E9A8 PLEASE     E7D1 PMSG       
F9A3 PORVI      FC29 PR         ECE9 PRESS      E716 PRGRM      000C PROCD      
E5DA PSCANX     FA62 RDKEY      0006 REDO       FA75 RGMORE     FA5F RKEY       
FA86 ROKKEY     0002 ROUND      E17C RTRXB      EA59 RUN        6372 RXB        
FD59 SBASIC     FAB2 SCREEN     FC62 SCROLL     FD3A SEADSR     E025 SOLDEA     
0020 SPACE      8324 STLN       8373 SUBSTK     FD48 SXBDSR     F7A7 TSTKE2     
F7AE TSTKE3     F7B2 TSTKE4     F7B5 TSTKE5     F79A TSTKEY     EF93 TWOKEY     

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0053 
E/A GROM
F9FE UPKEY      E6FA USSCRN     837D VCHAR      FD19 VCLOSE     FCB7 VEIW40     
E47D VFILE      E413 VIEWR      E406 VIT40      FCF6 VOPEN      8356 VPAB       
EDDC VREGS      836E VSTACK     E57F VZERO      F827 WAID       ED00 WARN       
ECC4 WENTER     EC61 WRNMSG     EEDE XBAGN      FD41 XBDSR      EED9 XBINP      
EF11 XBINP1     EF49 XBINP2     EF5B XBINP3     F9D8 XBPGM      8342 XTOKEN     
F81C YAID       E9B7 YESNO      

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0054 
E/A GROM
Symbol Table #2 (New,value)  
0000 G0000      0001 AID        0001 G0001      0002 CLEAR      0002 ROUND      
0006 REDO       000C PROCD      000D ENTER      000E BEGIN      000F BACK       
0010 DSRLNK     0012 DSRRET     001C BERR       0020 SPACE      0023 CIF        
0038 BGETSS     077F COLOR      6372 RXB        8318 CHRCUR     831C PABPTR     
831E COUNT      8320 CURADD     8322 CODE       8324 STLN       8326 ENDLN      
8342 XTOKEN     8347 LDFLAG     8348 FLAG       8349 FLAG2      834A FAC        
834B FAC1       834C FAC2       834D FAC3       834E FAC4       834F FAC5       
8350 FAC6       8351 FAC7       8352 FAC8       8353 FAC9       8354 ERCODE     
8355 FAC11      8356 FAC12      8356 VPAB       835C ARG        836E VSTACK     
8373 SUBSTK     8374 KBNO       8375 KEY        8379 ITIMER     837D VCHAR      
E010 MENU       E025 SOLDEA     E028 OLDEA      E032 CLREA      E037 NEWEA      
E03B GE029      E047 GE056      E071 MMENU      E07C GE116      E086 MSCRN      
E16F NEWSCN     E17C RTRXB      E17F DARROW     E18F MYEAXB     E199 GE11F      
E1B7 COLORS     E210 COLSCN     E22D COLBAC     E23A COLEND     E246 EDITOR     
E2B5 GE19B      E2FD GE1E2      E2FF GE1E4      E338 GE1F6      E354 GE1FC      
E385 GE22C      E390 GE237      E39B GE23B      E3C5 GE25B      E3CF EMOPT2     
E3DB GE271      E3DC GE272      E3E5 GE27B      E3ED GE283      E406 VIT40      
E413 VIEWR      E418 GE29C      E42F GE2B3      E431 GE2B5      E440 GE2C4      
E455 GE2D9      E47D VFILE      E487 GE30A      E49F GE322      E4A8 GE32B      
E4C1 GE344      E4DC GE35F      E4DE GE361      E4E4 GE367      E4FD GE380      
E50A GE38D      E51D GETALL     E520 BLDPAB     E544 PABNAM     E550 GE3CF      
E551 BLNKBU     E566 CLOSE      E56A DOIO       E57F VZERO      E58B GETINP     
E596 GE415      E5AC GE42B      E5AF GE42E      E5BD GE43C      E5BE GETKEY     
E5C7 GE446      E5CD GE44C      E5DA PSCANX     E5F6 GE456      E600 GE460      
E621 GE46B      E626 GE470      E632 GE47C      E63B GE485      E64F GE499      
E661 GE4AB      E689 GE4D3      E693 GE4DD      E6B7 GE501      E6B9 GE503      
E6BA EXPMEM     E6DB NESCRN     E6E1 EASCRN     E6FA USSCRN     E708 CLRXOP     
E716 PRGRM      E744 NOEABF     E785 NO1KEY     E78C MYSRCH     E793 GE597      
E7A2 GE5A6      E7AE LODPGM     E7BB LODUSR     E7D1 PMSG       E7D9 PGMLOD     
E7EA GE5E5      E80A GE605      E819 PAB        E821 DLEN       E823 DDSK1      
E828 DEDIT1     E82D ASSEM      E875 GE654      E880 GE687      E953 GE736      
E973 GE756      E984 GE767      E9A1 GE784      E9A8 PLEASE     E9B7 YESNO      
E9BA GE7A2      E9BF GE7A7      E9CC GE7B1      E9DB GE7C0      E9E4 LANDR      
EA15 GE7F2      EA3B GE816      EA46 GE821      EA4B GE826      EA59 RUN        
EA5B GE848      EA8A FNDLNK     EA90 FNDLP      EAAD FNDSHO     EACA OUTSCN     
EADC MORSCN     EAED FNDDON     EB11 GE883      EB1C GE88E      EB31 GE8A3      
EB34 GE8A8      EB3C GE8B0      EB3F GE8B3      EB60 GE8D4      EB6F GE8E3      
EB81 GE8F5      EB88 GE8FC      EB8E GE907      EB8F GE908      EB96 GE90F      
EB9D GE916      EBA4 GE91D      EBA9 GE9E2      EBAF GE928      EBB6 GE92F      
EBBD GE936      EBC4 GE93D      EBCB GE944      EBD0 GE949      EBDF GE958      
EBE4 CHKERR     EBEF CHKER2     EC0D GE97A      EC1C GE97F      EC30 CLSALL     
EC4D CLSPAB     EC61 WRNMSG     EC6D ERRMSG     EC77 GE9DA      EC95 GE9F8      
ECAF GEA12      ECBC GEA1F      ECC4 WENTER     ECCB GEA2E      ECD4 CLRMSG     
ECE0 ERROR      ECE9 PRESS      ED00 WARN       ED0B ERRMF      ED17 ERRIOC     
ED26 ERRNME     ED3A ERRNTL     ED48 ERRC       ED53 CCRMSG     ED6D ERRIT      
ED79 ERRCE      ED88 ERRDD      ED9D ERRUR      EDB2 ERRPNF     EDC4 CUREDP     
EDCC CURPAT     EDDC VREGS      EDE2 BINIT2     EDEA BINIT3     EDF4 GEBA0      
EE11 GEBBD      EE12 DASSM1     EE17 DUTIL1     EE1D DLOAD      EE22 BUGS       
EE34 CLRFAC     EE3C DEVICE     EE64 DEV1       EE7A DEVNO      EE7D DEV2       
EE80 DEV3       EE81 DEV4       EED9 XBINP      EEDE XBAGN      EF11 XBINP1     
EF49 XBINP2     EF5B XBINP3     EF65 CLRREA     EF73 ONEKEY     EF93 TWOKEY     
EF94 GF000      F6C4 DIRECT     F6C9 DMENU      F756 DIREC2     F766 DIREC3     
F79A TSTKEY     F7A7 TSTKE2     F7AE TSTKE3     F7B2 TSTKE4     F7B5 TSTKE5     
F7BF ARROWS     F7D3 ARROW1     F7EC ARROW2     F7F3 ARROW3     F7FB OKKEY      
F802 NOKEY      F81C YAID       F827 WAID       F82A NAID       F839 BACK0      
F862 BACK1      F872 BACK3      F875 BEGIN0     F88A BEGIN1     F89A BEGIN2     
F8A3 BEGIN3     F8C2 FCTNUP     F908 ENTER0     F90E CLRBUF     F929 ENTR       
F941 ENTER1     F950 ENTER2     F96A NODIR      F9A3 PORVI      F9C7 DORF80     
F9D8 XBPGM      F9FE UPKEY      FA0A GLESS      FA14 GLESS2     FA16 DKEY       
FA29 GMORE      FA3A LKEY       FA3D LUPKEY     FA49 LGLESS     FA53 LGLES2     
FA55 LOKKEY     FA5F RKEY       FA62 RDKEY      FA75 RGMORE     FA86 ROKKEY     
FA90 FLSCR      FAA1 CATDAT     FAAA HALVE      FAB2 SCREEN     FB42 CAT3       
FB5B CAT4       FB6E CAT4A      FB9B CAT4B      FB9F FILNAM     FBB0 CAT5       

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0055 
E/A GROM
FBD9 CAT5A      FBE9 DF         FBF9 DV         FC09 IF         FC19 IV         
FC29 PR         FC39 DI         FC4B CAT6       FC56 CAT7       FC62 SCROLL     
FC75 FILNA1     FC7A DISNUM     FC80 DISNU1     FC8F DISNU2     FC9D DISSTR     
FCB7 VEIW40     FCBF MV40       FCF1 FREEZE     FCF6 VOPEN      FD16 DSREXT     
FD19 VCLOSE     FD33 EADSR      FD3A SEADSR     FD41 XBDSR      FD48 SXBDSR     
FD4F BASIC      FD59 SBASIC     

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0056 
E/A GROM
Symbol Table #4 (Def,alpha)  
0034 ACCTON     835C ARG        0032 ATN        0036 BADTON     003B BITREV     
0012 CFI        0014 CNS        002C COS        0010 CSN        8372 DATSTK     
0001 DIVZER     0003 ERRIOV     0006 ERRLOG     0005 ERRNIP     0002 ERRSNN     
0004 ERRSQR     0028 EXP        834A FAC        0006 FADD       000A FCOMP      
0009 FDIV       0008 FMUL       836C FPERAD     0007 FSUB       0038 GETSPACE   
0022 INT        0010 LINK       0018 LOCASE     002A LOG        8370 MEMSIZ     
003D NAMLNK     8300 PAD        0024 PWR        0012 RETURN     000B SADD       
000F SCOMP      000E SDIV       8375 SGN        002E SIN        000D SMUL       
8400 SOUND      0026 SQR        000C SSUB       837C STATUS     0016 STCASE     
8373 SUBSTK     0030 TAN        0007 TRIGER     004A UPCASE     836E VSPTR      
0001 WRNOV      837F XPT        837E YPT        

99/4 GPL-ASSEMBLER (Pass 3) correct                                   PAGE 0057 
E/A GROM
Symbol Table #8 (Def,value)  
0001 DIVZER     0001 WRNOV      0002 ERRSNN     0003 ERRIOV     0004 ERRSQR     
0005 ERRNIP     0006 ERRLOG     0006 FADD       0007 FSUB       0007 TRIGER     
0008 FMUL       0009 FDIV       000A FCOMP      000B SADD       000C SSUB       
000D SMUL       000E SDIV       000F SCOMP      0010 CSN        0010 LINK       
0012 CFI        0012 RETURN     0014 CNS        0016 STCASE     0018 LOCASE     
0022 INT        0024 PWR        0026 SQR        0028 EXP        002A LOG        
002C COS        002E SIN        0030 TAN        0032 ATN        0034 ACCTON     
0036 BADTON     0038 GETSPACE   003B BITREV     003D NAMLNK     004A UPCASE     
8300 PAD        834A FAC        835C ARG        836C FPERAD     836E VSPTR      
8370 MEMSIZ     8372 DATSTK     8373 SUBSTK     8375 SGN        837C STATUS     
837E YPT        837F XPT        8400 SOUND      

That is RXB 2001 Editor Assembler, I did not make any changes to how it works to Disks, I just used what was there and added menus!

I do not use ASSEMBLY for any of this so your confusion is that GPL and Assembly are the same thing, they are not.

Want proof try to run a GPL Device from an Assembly DSRLNK with out a GPL DSRLNK verison.

Link to comment
Share on other sites

Have the basics of installation been verified? I have seen TIPI seem to function but have an odd error when there are conflicts with other boards: https://github.com/jedimatt42/tipi/wiki/crubase

 

What does TIPICFG (CALL TIPI from BASIC, no arguments) say the CRUBASE is? Upper left side of screen.

Edited by jedimatt42
Link to comment
Share on other sites

2 hours ago, jedimatt42 said:

Have the basics of installation been verified? I have seen TIPI seem to function but have an odd error when there are conflicts with other boards: https://github.com/jedimatt42/tipi/wiki/crubase

 

What does TIPICFG (CALL TIPI from BASIC, no arguments) say the CRUBASE is? Upper left side of screen.

Hi, my system only has TIPI with PI3B+ at >1000, Corcomp Disk Controller at >1100, SAMS 1 Meg RAM at >1E00 and a Flex Cable Card.

No speech but a F18 installed and FinalGROM.

When I run off Floppy DSR SCAN EA program it shows these address, and CALL TIPI  says >1000

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

The TIFILES header on @RXB's data file appears correct: a 4096 (16 blocks) PROGRAM file. 0 eof offset. 

 

---

 

TIPI does NOT expect EA5 size headers. It only uses the TIFILES header which it manages itself.

 

---

 

If a PAB is formed well enough to get to the TIPI device service routine, then the 4A messages the request to the PI. The PI logs the request before even looking if the file exists. 

 

Since it is asserted that this logging isn't happening, then the DSRLNK routine or the TIPI device service routine disagree with the contents of the peripheral access block.

 

I think when reading the GPL code offered that PAD is the location that the PAB is being constructed. 

 

I think I see the buffer size limit of >1000 being set. And the opcode being set.

 

I'm having difficulty spotting where the VDP buffer address is set in the PAB.

 

I confused reading the GPL code that copies the PAB from PAD to VDP. 

 

---

 

I don't know what 'crashes' is describing. 

 

I linked earlier to the device service routine source that contains documentation on what resources the device service routine assume it has free access to mutate. It is my understanding that this is all space the GPL interpreter also uses, but that it is DSRLNK's responsibility to safeguard/restore any data there that a device service routine might mutate.

 

---

 

From what has been described, the 'crashes' activity 'seems' to be in my device service routine, the bits in the ROM. This can be debugged in classic99 to a degree and fully in js99er if we can have the binaries for the cartridge. I can step through the device service routine up to the point it sends a message to the PI, although our best assumption from the data so far is that it will crash before that.

 

 

 

 

 

 

  • Like 2
Link to comment
Share on other sites

1 hour ago, jedimatt42 said:

The TIFILES header on @RXB's data file appears correct: a 4096 (16 blocks) PROGRAM file. 0 eof offset. 

 

---

 

TIPI does NOT expect EA5 size headers. It only uses the TIFILES header which it manages itself.

 

---

 

If a PAB is formed well enough to get to the TIPI device service routine, then the 4A messages the request to the PI. The PI logs the request before even looking if the file exists. 

 

Since it is asserted that this logging isn't happening, then the DSRLNK routine or the TIPI device service routine disagree with the contents of the peripheral access block.

 

I think when reading the GPL code offered that PAD is the location that the PAB is being constructed. 

 

I think I see the buffer size limit of >1000 being set. And the opcode being set.

 

I'm having difficulty spotting where the VDP buffer address is set in the PAB.

 

I confused reading the GPL code that copies the PAB from PAD to VDP. 

 

---

 

I don't know what 'crashes' is describing. 

 

I linked earlier to the device service routine source that contains documentation on what resources the device service routine assume it has free access to mutate. It is my understanding that this is all space the GPL interpreter also uses, but that it is DSRLNK's responsibility to safeguard/restore any data there that a device service routine might mutate.

 

---

 

From what has been described, the 'crashes' activity 'seems' to be in my device service routine, the bits in the ROM. This can be debugged in classic99 to a degree and fully in js99er if we can have the binaries for the cartridge. I can step through the device service routine up to the point it sends a message to the PI, although our best assumption from the data so far is that it will crash before that.

 

 

 

 

 

 

RXB uses GARBAGE COLLECTION to free up any VDP memory and reset the VDP first free pointer before any DSR access is used.

Thus the PAB is set at >0C00. After the Garbage collection due to needing 4K of VDP space freed up to use.

Then it gets the path from XB, clears PAB 1080 bytes.

Clears ARG thus ARG would have >0C00 then adds >40 to  ARG word.

Puts ARG into PAB for Buffer address.

Puts >1000 into PAB for size if file to transfer.

Puts Length byte into PAB.

Moves pathstring from XB location into end of PAB.

       XML  COMPCT        * Garbage collection VDP
       DCHE >1C81,@STREND * Enough VDP space?
       BR   ERRSO         * ERROR STACK OVERFLOW
       DST  >0C00,@PAD    * Buffer for BSAVE/BLOAD
       CALL STRGET        * Pathstring
       CLR  V*PAD         * 0 BYTE
       MOVE >1080,V@0(@PAD),V@1(@PAD) * Ripple
       DST  @PAD,@ARG     * Get PAB address 
       ADD  >40,@ARG1     * Add in PAB buffer
       DST  @ARG,V@2(@PAD)  * Buffer address
       DST  >1000,V@6(@PAD) * Number of bytes
       ST   @FAC7,V@9(@PAD) * Length byte
       MOVE @FAC6,V*FAC4,V@10(@PAD) * Pathstring
       RTN

After the DSR it copies VDP data to RAM. CALL PSAVE does exactly the opposite.

So RXB routine to get 4K blocks at a time actually uses 4.8K of VDP to load/save files.

So here is RXB 2020C you can put into FINALGROM and test in Attachment.

RXB 2020.zip

  • Like 3
Link to comment
Share on other sites

5 hours ago, arcadeshopper said:

Finally got to try this

The errors because I had no disk in drive one

But it doesn't error on the source98e43d96bd1f2285131824584339d945.jpg

Sent from my LM-V600 using Tapatalk
 

Cool I could also Catalog that drive but Copy or Move or Delete would not work?

Did it work for you?

Link to comment
Share on other sites

18 hours ago, arcadeshopper said:

Check out this noise. Your commands work in immediate mode7fc1b08a124ef9fa5b69f176f591bc9b.jpg53e2436ee2952156652ab758a3aca6c6.jpg

Sent from my LM-V600 using Tapatalk
 

OK GREG

Pulled Corcomp card and ran same thing and got * FILE Error in 150

Put Corcomp back in and ran this:

CALL MOVES("VR",2079,0,8192) :: CALL PSAVE("DSK1.TST")

This made a copy of the current screen and VDP to Lower 8K >2000 and then made a Program Image file of >2000 to >2FFFF on disk 1

Then ran this:

CALL PLOAD("DSK1.TST") :: CALL MOVES("RV",2079,8192,0)

This put onto screen what I had saved to file TST.

 

Tried the same thing using "DSK0.TEST.TST" and made a folder on TIPI named TEST. 

Can load and save XB programs but CALL PLOAD or PSAVE just says * File Error each time.

TIPI refuses to create or use any file from PSAVE or PLOAD all result in FILE ERROR, TIPI will not load or save the files for some reason.

  • Confused 1
Link to comment
Share on other sites

The command seems to work in classic99

10 CALL LOAD(8192,1)
20 CALL PSAVE(2,"DSK1.PSAVE2")
30 CALL LOAD(8192,0)
40 CALL PLOAD(2,"DSK1.PSAVE2")
50 CALL PEEK(8192,A)
60 PRINT A
70 REM EXPECT 1

Using classic99 with the tipi rom loaded, and a breakpoint at (4000-5FFF), when I run 10 CALL PLOAD(2,"DSK1.PSAVE2") I get a good PAB: 

0C00: 05 00 0C 40 00 00 10 00 ...@....
0C08: 00 0B 44 53 4B 31 2E 50 ..DSK1.P
0C10: 53 41 56 45 32 00 00 00 SAVE2...

 

Stepping through the DSR, it appears to get upto copying the PAB to the PI just fine. 

 

To configure classic99 with the TIPI ROM: 

[UserCart1]
name=RXB PLOAD
rom1=G|6000|A000|C:\Users\matth\Documents\data\retro\TI99\RXB2020PLOAD\RXB2020\RXB2020G.bin
rom2=C|6000|2000|C:\Users\matth\Documents\data\retro\TI99\RXB2020PLOAD\RXB2020\RXB2020C.bin
rom3=X|6000|2000|C:\Users\matth\Documents\data\retro\TI99\RXB2020PLOAD\RXB2020\RXB2020D.bin
rom4=D|1000|2000|C:\Users\matth\Documents\data\retro\TI99\classic99\tipi.bin

 

This doesn't work for real usage, but confirms the DSR interaction seems fine, at least before the PI is involved. 

 

At this point I have to switch to js99er and PI emulation.  But I'm going to try real-hardware first.

  • Thanks 1
Link to comment
Share on other sites

On real hardware, it just works... well, at least with "TIPI.PSAVE2" ... (Later I try a mapped drive with same result)

 

2021-02-19 22:47:20,752 TipiService : INFO     TIPI Ready
2021-02-19 22:49:12,118 TipiDisk    : INFO     Opcode 6 Save - TIPI.PSAVE2
2021-02-19 22:49:12,119 Pab         : INFO     opcode: Save, fileType: Sequential, mode: Update, dataType: Display, recordType: Fixed, recordLength: 0, recordNumber: 4096
2021-02-19 22:49:12,121 tinames.tinames: INFO     TIPI.PSAVE2 -> /home/tipi/tipi_disk/PSAVE2
2021-02-19 22:49:12,775 TipiService : INFO     Request completed.
2021-02-19 22:49:45,101 TipiDisk    : INFO     Opcode 5 LOAD - TIPI.PSAVE2
2021-02-19 22:49:45,101 Pab         : INFO     opcode: Load, fileType: Sequential, mode: Update, dataType: Display, recordType: Fixed, recordLength: 0, recordNumber: 4096
2021-02-19 22:49:45,102 tinames.tinames: INFO     TIPI.PSAVE2 -> /home/tipi/tipi_disk/PSAVE2
2021-02-19 22:49:45,104 TipiDisk    : INFO     LOAD image size 4096
2021-02-19 22:49:45,809 TipiService : INFO     Request completed.

I don't normally bother to map drives.. cause for what I do it is usually LVL3 IO.

 

So I ran:

 

10 CALL LOAD(8192,1)
20 CALL PSAVE(2,"TIPI.PSAVE2")
RUN

and then

10 CALL LOAD(8192,0)
20 CALL PLOAD(2,"TIPI.PSAVE2")
RUN

and then 

CALL PEEK(8192,A)
PRINT A

which printed 1

 

Mapping DSK1 to TIPI.TEST, such that TIPICFG shows: 

Drive Mappings
  1) DSK1=TEST
...

And re-running the basic code with DSK1. instead of TIPI., it also still works.

 

2021-02-19 22:55:27,570 TipiService : INFO     TIPI Ready
2021-02-19 22:56:21,158 TipiDisk    : INFO     Opcode 6 Save - DSK1.PSAVE2
2021-02-19 22:56:21,159 Pab         : INFO     opcode: Save, fileType: Sequential, mode: Update, dataType: Display, recordType: Fixed, recordLength: 0, recordNumber: 4096
2021-02-19 22:56:21,161 tinames.tinames: INFO     DSK1.PSAVE2 -> /home/tipi/tipi_disk/TEST/PSAVE2
2021-02-19 22:56:21,790 TipiService : INFO     Request completed.
2021-02-19 22:56:46,687 TipiDisk    : INFO     Opcode 5 LOAD - DSK1.PSAVE2
2021-02-19 22:56:46,687 Pab         : INFO     opcode: Load, fileType: Sequential, mode: Update, dataType: Display, recordType: Fixed, recordLength: 0, recordNumber: 4096
2021-02-19 22:56:46,688 tinames.tinames: INFO     DSK1.PSAVE2 -> /home/tipi/tipi_disk/TEST/PSAVE2
2021-02-19 22:56:46,690 TipiDisk    : INFO     LOAD image size 4096
2021-02-19 22:56:47,378 TipiService : INFO     Request completed.

 

So, I don't know... What problem are we trying to solve? 
I did not try using variables to compose the file name. Properly composing the filename into the PAB is the client's responsibility... 

...

ok, tried that, still works.

10 F=3
20 CALL PLOAD(2,"DSK1.PSAVE"&STR$(F))

 

So... to see the log data from the PI, I ssh into the PI from a modern PC. On a MAC it would be something like:

ssh tipi@tipi.local

 

password `tipi` unless you changed it. Then on the PI, I:

tail -F /var/log/tipi/tipi.log

 

If you reset the TI, you should see the TIPI READY message associated with a current timestamp. 

 

Copying one of the PSAVE generated files with DM2K also works fine.  I copied from 1000.DSK0.TEST. to 1000.DSK0. quite happily.

 

 

Edited by jedimatt42
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...