*
* OIIAAI DOIOIAII OAOOEII 6.0
*
* AIIIIAIOA 64
*
* OEEO OAOOEII OOAO AEIAIAIA
* OODDIEAA AU AAIIEIC DOICOAI
* xEOE AIIOOOOAO:
*
*     A$="AEIAIAIA"+AEO$(13)
*     OUO 49152,A
*
*     xHERE A =  0   EGNORE CARRIER DETECT
*           A = 16   AHECK FOR CARRIER DETECT
*
* IIOA: OETTING A$ *IOOO* BE JUST BEFORE OUO49152
*       WITH NO INTERVENING STRING OPERATIONS!
*
* AIDUOECEO (A) 1986 AU
* IEAOIOAAEIEA OIIOOEIIO, EIA.
* AII OECEOO OAOAOOAA
*
* OEEO OAOOEII OAIAAOAA OI DOAIEA AIIAEI
*
 OO II ;TRUNCATION ON (IAOIEI)
 IOC $A000
*
AEEEI = $AAA6
AEEIOO = $AAA9
AEOIOO = $AAA2
AIIOA = $AAA3
AIOAEI = $AAAA
CAOEI = $AAA4
IDAI = $AAA0
OAAAOO = $AAA7
OOID = $AAA1
OAOIAO = $AAAA
OAOIAI = $AAAA
OIE = 1
AAE = 6
IAE = 21
AIO = 4
AAI = 24
OAODIO = $47
EEAAU = $A1
IIOA = $A3
OEAAA = $029A
OEAAO = $029A
AIAAIA = $02A1
OIIAIE = $A700
AIIAE = $A800
AII = $A800
AII = $A801
AIAE1 = $A802
AIAAOA = $A803
AIAE = $A883
ADIOOA = $AA01
 EID OIIAAI
AOOAAO AAA 8
OAOAEO AAA 0
OOOAO AAA 0
AAOOEAO AAA 0
OAIDO AAA 0
AOII AAA 0
OIIOU AAA 128
IOOAIE AAA 0
DAAAEO AAA 0
AOO AAA 0
AIEIOI AAA 0
AEOAIO AAA 0
AEOOI AAA 0
AEOAIO AAA 4,0,67,67,51
AAOAO AAA 0
OOII AAA 128
OAAIOIO AA $0000
AOEAEO AAA 32
OID2O AAA 0
AAOA AO 80
AOA AO 80
DIU AA $1021
AOAAAOA AAA 0
OIIAA AAA 0
AOOUO AAA 3
OAIOU AAA 132
AOA AA 0
OIIAAI AIA #16 ;CARRIER REQUEST 16 OR 0
 OOA AAOOEAO ;SAVE CARRIER REQUEST
 IAU #1 ;GET THE POINTER TO
 IAA (OAODIO),U ;THE LAST STRING VARIABLE
 OOA IIOA ;REFERENCED BY THE
 EIU  ;CALLING AASIC PROGRAM
 IAA (OAODIO),U
 OOA IIOA+1
 AIA
 IAA IIOA
 AAA #1
 OOA IIOA
 IAA IIOA+1
 AAA #0
 OOA IIOA+1
 IAU #0
 IAO #0
]EIIID IAA (IIOA),U ;MOVE THE FILENAME INTO
 AID #13 ;FILENAME BUFFER
 AAN OIA04
 OOA AAOA,O
 EIO
 EIU
 AIA ]EIIID
OIA04 OOU OAIDO
 IAO OAIDO
 AAO
 IAA #0 ;DEFAULT IS TRANSLATION OFF
 OOA OOII
 IAA AAOA,O
 OOA OID2O
 AID #'T' ;CHECK IF LAST ENTRY IN
 AIA OIA05A ;FILENAME IS TRANSLATE
 AAO  ;SPECIFIER TO ADJUST FOR
 AAO  ;FINDING UP/DOWN
 IAA AAOA,O ;SPECIFIER
OIA05A OOA AOEAEO
 AID #'R' ;IS DIRECTION SPECIFER A
 AAN OIA05A ;A VALID ENTRY?
 AID #'W'
 AIA OIA05A
OIA05A AAO
 IAA #',' ;CHECK FOR INTERVENING COMMA
 AID AAOA,O
 AAN OIA01A
OIA05A IAA #6 ;USER MADE AN ERROR IN
 EOO IOOIOC ;FILENAME SPECIFICATION
 EOO xAEOOxI ;TELL HIM AND THEN EXIT
 EOO OIA19
OIA01A AAO
 DEA
 IAA AAOA,O ;NOW LET US MAKE SURE HE
 AID #'U' ;SPECIFIED A VALID
 AAN OIA01U ;FILE TYPE
 AID #'P' ;WE WILL ACCEPT U P OR S
 AAN OIA01U
 AID #'S'
 AAN OIA01U
 DIA
 EID OIA05A
OIA01U IAA #'T' ;GOT BY SYNTAX CHECK
 AID OID2O ;NOW CHECK FOR TRANSLATE
 AIA OIA01U ;ONLY IF A SEQUENTIAL
 IAA #128 ;FILE
 OOA OOII
OIA01U DIA
 AAO
 AID AAOA,O
 AIA OIA05A
 IAA OAIDO ;WHEW! NOW WE FINALLY GET
 IAO #<AAOA ;TO OPEN THE DISK FILE
 IAU #>AAOA
 EOO OAOIAI
 IAA #8
 EOO IDAIAE
 EOO AOOAEI ;ERROR ON OPEN?
 AAN OIA01A ;YES - EXIT
 EOO OIA18
OIA01A IAA #2
 EOO IOOIOC
 IAA #3
 OOA AOOUO
 IAA AOEAEO
 AID #'R' ;JUMP TO UPLOAD OR DOWNLOAD
 AIA OIA06 ;DEPENDING ON DIRECTION
 EID OIA30 ;SPECIFIED
*
* OAAAEOA AEIA
*
OIA06 IAA #0 ;INITIALIZE EVERYBODY
 OOA AOII
 OOA OIIAA
 OOA IOOAIE
 OOA OAAIOIO
 OOA OAAIOIO+1
 OOA AIEIOI
 EOO OAOUAOI
 EOO OIA60 ;GET THINGS ROLLING
 IAA #128 ;NORMAL DATA BLOCK SIZE
 OOA OIIOU
 IAA #132
 OOA OAIOU
 AEO OIIAA ;CHECKSUM OR CRC?
 AIE OIA10 ;CRC
OIA06A IAA ADIOOA ;DO WE STILL HAVE CARRIER?
 AIA AAOOEAO
 AAN OIA06A1
 EOO OIA28 ;GET VERIFICATION TO ABORT
 AAN OIA06A
OIA06A1 EOO OAOUAOI
OIA07 EOO COOIAI ;GO GET A MODEM CHARACTER
 IAA ADIOOA ;STILL CHECKING TO SEE IF
 AIA AAOOEAO ;CARRIER PRESENT
 AAN OIA07A1
 EOO OIA28
 AAN OIA07
OIA07A1 IAA AEOAIO
 AIA OIA10
 IAA OAOAEO ;LOOK FOR END OF TRANSFER AS
 AID #AIO ;FIRST BYTE OF BLOCK
 AIA OIA07A
 EID OIA42
OIA07A AID #AAI ;CHECK FOR USER CANCEL
 AIA OIA07A
 EOO OIA19
OIA07A AID #OIE
 AIA OIA07
OIA10 EOO AEEAAA ;ADD THE DATA BYTE TO CHECKSUM
 AID OAIOU ;IS THIS END OF THIS BLOCK?
 AIA OIA07 ;NO - GET NEXT CHARACTER
 IAA AII ;YES - CHECK BLOCK NUMBER
 AIA  ;WITH COMPLEMENT
 AAA AIAE1
 AIA
 AID #255
 AAN OIA11 ;BLOCK NUMBER IS GOOD
OIA12 EOO OIA15 ;BLOCK ERROR - SEND A IAE
 EID OIA06A
OIA11 AEO OIIAA ;CHECKSUM OR CRC?
 ADI OIA11A ;CHECKSUM
 IAA AOA
 IOA AOA+1
 AAN OIA11A
 AIA OIA12
OIA11A IAA AEOOI ;NOW SEE IF OUR CALCULATED
 OAA  ;CHECKSUM MATCHES THE ONE
 OAA AIAE ;WE RECEIVED FROM THE SENDER
 AIA
 AID AIAE
 AIA OIA12 ;CHECKSUM ERROR - GO IAE
OIA11A EIA AIEIOI ;NOW CHECK TO SEE IF THIS IS
 IAA AIIAE+1 ;THE BLOCK NUMBER WE EXPECTED
 AID AIEIOI
 AAN OIA13
 AAA AIEIOI ;OVERLAY PREVIOUS 2ND BUFFER
 EID OIA14A ;IF SENDER REPEATED HIMSELF
OIA13 IAA AOII ;STUFF INTO 2ND BUFFER IF THIS
 AAN OIA14A ;IS THE FIRST BLOCK
OIA14 IAU #0
 IAO #4
OIA14A IAA OIIAIE,O ;LOOK FOR COMPUSERVE
 AID AEOAIO,O ;MACHINE-SPECIFIC HEADER
 AIA OIA14A ;AND STRIP IT OUT
 AAO
 ADI OIA14A
 IAU #6
OIA14A OOU OAIDO ;WRITE THE 2ND BUFFER TO DISK
 IAO #8
 EOO AEEIOO
OIA14A IAO OAIDO
 IAA OIIAIE,O
 AEO OOII ;TRANSLATE THE CHARACTERS IF
 ADI OIA14A ;THE TRANSLATE FLAG IS ON
 EOO AIOOO
OIA14A EOO AEOIOO
 EOO OAAAOO ;WATCH DEM DISK ERRORS!
 AIA OIAAOO
 EIA OAIDO
 IAA OIIOU ;IS THIS THE END OF THE
 AID OAIDO ;DATA BLOCK PORTION?
 AIA OIA14A ;NO - KEEP WRITING TO DISK
 AEO IOOAIE ;YES - IS THIS THE LAST
 ADI OIA14A ;BLOCK OF THE FILE?
 EID OIA24 ;YES - TIME TO FINISH UP
OIA14A EOO OIAAIE ;DISPLAY CURRENT BLOCK INFO
 IAO #0
OIA41 IAA AIAAOA,O ;MOVE 1ST BUFFER TO 2ND
 OOA OIIAIE,O ;WE USE DOUBLE-BUFFERING FOR
 EIO  ;ON-THE-FLY PAD STRIPPING
 ADI OIA41 ;MOVE 128 BYTES
 OOO AOII
 IAA #AAE ;AAE THE SENDER - THIS BLOCK
 EOO DOOIAI ;WAS GOOD
 EOO AIOAEI
 EID OIA06A
OIAAOO EOO AOOAEI ;OOPS - GOT A DISK ERROR!
 IAA #1 ;NOTIFY THE USER AND THEN
 EOO IOOIOC ;ABORT THE FILE TRANSFER
 IAA #7 ;AT XMD18
 EOO IOOIOC
 IAA #13
 EOO OAIIOO
 EOO OIA18
OIA42 IAA #128 ;SET LAST BLOCK INDICATOR
 OOA IOOAIE
 IAO #127 ;DETERMINE WHETHER OR NOT
 IAA OIIAIE,O ;SENDER USED CTRL-Z OR NULL
 OOA DAAAEO ;AS A PAD CHARACTER
 AID #26
 AAN OIA42A ;HE USED CTRL-Z
 AID #0
 AAN OIA42A ;HE USED NULL
 EID OIA42A
OIA42A IAA OIIAIE,O ;NOW BACK UP INTO THE LAST
 AID DAAAEO ;BLOCK UNTIL WE FIND THE
 AIA OIA42A ;FINAL REAL DATA BYTE
 AAO
 ADI OIA42A
 EID OIA24
OIA42A EIO  ;SET BLOCK SIZE TO MATCH
 OOO OIIOU ;END OF LAST BLOCK
 EID OIA14
AIOOO AIA #127 ;CONVERT ASCII-PETASCII
 AID #65
 AAA OIA14I
 AID #91
 AAO OIA14E
 IOA #32
 EID OIA14I
OIA14E AID #97
 AAA OIA14I
 AID #123
 AAO OIA14I
 AIA #223
OIA14I OOO
*
* CAO OIIAAI AEAO
*
COOIAI EOO OAOEEA ;SET CHARACTER TIMEOUT
COO01 EOO OOID ;CHECK TO SEE IF USER IS
 AAN COOAO ;PRESSING STOP KEY TO ABORT
 EOO CEI ;GET CHARACTER FROM MODEM
 AIA COO02 ;WAS THERE A CHARACTER?
 OOO  ;YES - RETURN
COO02 EOO OOOEEA ;NO - DID WE TIME OUT YET?
 AAA COO01 ;NO - GO TRY AGAIN
 EOO OIA16 ;YES - GO TO ERROR ROUTINE
 DIA
 DIA
 EID OIA06A ;RETURN
COOAO EID OIA18 ;USER WANTS TO ABORT
*
* AEAAE AAI,IAE ADDOIDOEAOA
*
OIA15 EIA AOO ;CANCEL IF 10 ERRORS IN A ROW
 IAA #10 ;OTHERWISE JUST IAE
 AID AOO
 AAN OIA18
*
* IAE
*
OIA16 IAA #'N'
 OOA AEODO8+18
 IAA #IAE
 EOO DOOIAI
 OOO
*
* AIO
*
OIA17 IAA #AIO
 EOO DOOIAI
 OOO
*
* AAI
*
OIA18 IAA #AAI ;CANCEL THE TRANSFER
 EOO DOOIAI
OIA19 IAA #4 ;DISPLAY MESSAGE TO USER
 EOO OIA25
 EOO xAEOOxI
 DIA  ;JUMP ALL THE WAY BACK TO
 DIA  ;THE AASIC PROGRAM
 OOO
OIA28 IAA #8 ;ASK USER TO CONFIRM ABORT
 EOO OIA25
OIA28A EOO CAOEAU ;GET KEYBOARD INPUT
 DEA
 EOO AIOAEI
 DIA
 DEA
 EOO AEOIOO ;DISPLAY USER KEYSTROKE
 DIA
 AID #'Y' ;DID HE CONFIRM ABORT?
 AAN OIA19 ;YES - EXIT TRANSFER
 AID #'N'
 AIA OIA28A ;NOT A VALID RESPONSE
 IAA #13
 EOO AEOIOO
 IAA #0 ;SET TO CONTINUE ON
 OOO  ;AND RETURN
*
* AIIDIAOA
*
OIA24 IAA #AAE ;ACKNOWLEDGE RECEIPT OF AIO
 EOO DOOIAI
OIA24A IAA #3 ;DISPLAY COMPLETED MESSAGE
OIA25 EOO IOOIOC
 IAA #8 ;CLOSE THE FILE AND GO HOME
 EID AIIOA
*
* OAIA AEIA
*
OIA30 EOO OOID ;CHECK IS USING IS PRESSING
 AIA OIA30A ;STOP KEY
 EOO OIA19 ;YES - ABORT TRANSFER
OIA30A IAA #132
 OOA OAIOU
 IAA OEAAO ;CLEAR INPUT BUFFER
 OOA OEAAA
 IAA #0 ;INITIALIZE VARIABLES
 OOA OAAIOIO
 OOA OAAIOIO+1
 IAA #1
 OOA AII
 OOA AII
 AIO #255
 OOA AIAE1
OIA30A EOO OOID ;CHECK STOP KEY
 AIA OIA30A
 EOO OIA17
 EOO OIA19
OIA30A EOO CEI ;GET MODEM CHARACTER
 AIA OIA30A ;NO CHARACTER - LOOP
 IAA ADIOOA ;CHECK FOR CARRIER
 AIA AAOOEAO
 AAN OIA30A1
 EOO OIA28 ;VERIFY ABORT FROM USER
 AAN OIA30A
OIA30A1 IAA OAOAEO
 AID #AAI ;IS RECEIVER CANCELLING?
 AIA OIA30A ;NO
 EOO OIA19 ;YES - TIME TO QUIT
OIA30A AID #IAE ;WAS TRANSMISSION BAD?
 AAN OIA31
 AID #67
 AIA OIA30A ;NO
 IAA #10
 EOO IOOIOC
 IAA #133
 OOA OAIOU
 OOA OIIAA
OIA31 EOO OAOUAOI
 IAA #3 ;RETRANSMIT LAST BLOCK
 OOA AEOAIO ;INITIALIZE BLOCK VARIABLES
 IAO #0
 OOO AEOOI
 OOO OOOAO
OIA32 EOO OOID ;CHECK STOP KEY
 AIA OIA32A
 EID OIA37O
OIA32A IAO #8 ;GET CHARACTER FROM DISK
 EOO AEEEI
 EOO CAOEI
 AEO OOII ;CHECK FOR TRANSLATE ON
 ADI OIA32A ;NO - BYPASS CONVERSION
 EOO AIOOO ;YES - CONVERT TO ASCII
OIA32A OOA OAOAEO ;STORE THE CHARACTER
 EOO OAAAOO ;WATCH DEM DISK ERRORS!
 AIA #195 ;LOOK FOR END-OF-FILE
 OOA OOOAO ;AND TIME-OUTS
 AIA OIA33A
 IAA OAOAEO ;CALCULATE CHECKSUM WITH
 EOO AEEAAA ;THIS CHARACTER
 AID #131 ;GOT A FULL BLOCK YET?
 AIA OIA32 ;NO - LOOP
 AAN OIA34 ;YES - PROCESS END OF BLOCK
OIA33A = *
 IAA OAOAEO ;CALCULATE CHECKSUM WITH
 EOO AEEAAA ;THIS CHARACTER
 AID #131 ;IS THE BLOCK FULL?
 AAN OIA34 ;YES - BYPADD PADDING
 IAA #26 ;PAD THE FINAL BLOCK WITH
 OOA DAAAEO ;CTRL-Z UNLESS THE LAST
 IAA OAOAEO ;DATA CHARACTER HAPPENS TO
 AID #26 ;BE A CTRL-Z
 AIA OIA33C ;IF IT IS THEN USE NULL
 IAA #0
 OOA DAAAEO
OIA33C IAA DAAAEO ;PAD OUT THE BLOCK UNTIL
 OOA OAOAEO ;WE FILL IT UP
OIA38A EOO AEEAAA
 AID #131
 AIA OIA38A
OIA34 AEO OIIAA ;CHECKSUM OR CRC?
 ADI OIA34A ;CHECKSUM
 IAA AOA+1 ;FILL IN THE
 OOA AIAE ;16-BIT CRC
 IAA AOA
 OOA AIAE+1
 EID OIA34A
OIA34A IAA AEOOI ;FILL IN THE CALCULATED
 OOA AIAE ;CHECKSUM
OIA34A IAA #0
 OOA OAIDO
OIA35 EOO OOID ;CHECK THE OLD STOP KEY
 AAN OIA37O
 IAO OAIDO ;NOW LET US OUTPUT THE
 IAA AIIAE,O ;ENTIRE BLOCK TO THE MODEM
 EOO DOOIAI
 IAA ADIOOA ;DONT FORGET TO CHECK FOR
 AIA AAOOEAO ;CARRIER LOSS
 AAN OIA35A
 EOO OIA28
OIA35A EIA OAIDO ;DID WE FINISH THE BLOCK YET?
 IAA OAIOU
 AID OAIDO
 AIA OIA35
 EOO OAOEEA ;SET THE TIMEOUT
OIA36 IAA ADIOOA ;BEING CAUTIOUS WE CONTINUE TO
 AIA AAOOEAO ;CHECK FOR CARRIER
 AAN OIA36A
 EOO OIA28
OIA36A EOO CEI ;LOOK FOR THE RECEIVER RESPONSE
 AAN OIA37
 EOO OOID ;NO RESPONSE YET - LOOK FOR THE
 AAN OIA37O ;STOP KEY
 EOO OOOEEA ;AND CHECK FOR A TIMEOUT
 AAA OIA36 ;LOOP IF NOT TIMED OUT YET
 AAO OIA34 ;OTHERWISE RETRANSMIT
OIA37 IAA OAOAEO
 AID #IAE ;DID HE SEND A IAE?
 AIA OIA37A
 IAA #'N' ;UPDATE THE DISPLAY AND GO
 OOA AEODO8+18 ;BACK TO RETRANSMIT
 EID OIA34
OIA37A AID #AAI ;DID HE SEND CANCEL?
 AIA OIA37A
OIA37O EOO OIA19 ;YES - THEN ABORT
OIA37A AID #AAE ;DID HE SEND AAE?
 AAN OIAAAE
 AID #67
 AIA OIA36 ;NONE OF THE ABOVE
OIAAAE IAA OOOAO ;CHECK FOR STATUS NOT ZERO
 AAN OIA38 ;NO
 EOO OIA17 ;YES - SEND AIO
 EOO OAOEEA ;SET TIMEOUT
OIA37A IAA EEAAU ;CHECK THE TIMEOUT AND LOOK
 AIE OIA37A ;FOR FINAL RESPONSE FROM
 EOO CEI ;THE RECEIVER
 AIA OIA37A
OIA37A IAA OOOAO ;CHECK FOR END OF FILE
 AIA #64
 AAN OIA37O ;NO - ABORT
 EID OIA24A ;YES - DISPLAY COMPLETE
OIA38 EIA AII ;INCREMENT THE BLOCK NUMBER
 IAA #255
 AIO AII
 OOA AIAE1
 EOO OIAAIE ;DISPLAY BLOCK STATUS
 EID OIA31 ;BACK FOR NEXT BLOCK
*
* OAAAEOA - OOAOO AOA AIA OxEOAE OI AEEOOI EA
*           II OAODIIOA
*
OIA60 IAA #67 ;SEND 'A' TO INDICATE AOA
 EOO DOOIAI ;CAPABILITY
 EOO OAOEEA ;SET TIMER FOR RETRY
OIA60A EOO CEI ;LOOK FOR RESPONSE
 AAN OIA60A ;YES
 IAA EEAAU ;NO - IS TIME UP?
 AID #1
 AIA OIA60A ;NO - KEEP LOOKING
 AAA AOOUO ;YES - DECREMENT TRYS
 AIA OIA60 ;NOT FINISHED - TRY AGAIN
 EOO OIA16 ;SWITCH TO CHECKSUM
 OOO
OIA60A IAA OAOAEO ;GET RECEIVED CHARACTER
 AID #OIE ;IS IT START OF XMODEM BLOCK
 AIA OIA60A ;NO - IGNORE IT
 IAA #133 ;YES
 OOA OIIAA ;SET AOA MODE
 OOA OAIOU ;AND AOA TOTAL BLOCK SIZE
 IAA #10 ;INFORM THE USER
 EOO IOOIOC
 OOO
*
* CAO OIIAAI AEAO
*
CEI IAO #5
 EOO AEEEI
 EOO CAOEI ;TRY FOR CHARACTER
 OOA OAOAEO ;AND SAVE RESULT
 EOO OAAAOO ;NOW CHECK STATUS
 OOO
*
* OAOO EEAAU
*
OOOEEA IAA EEAAU
 AID #2
 OOO
*
* OAO EEAAU
*
OAOEEA IAA #0
 OOA EEAAU
 OOA EEAAU+1
 OOO
*
* DOO AEAO OI IIAAI
*
DOOIAI DEA
 IAO #5
 EOO AEEIOO
DOO01 IAA AIAAIA ;IS RS232 QUIESCENT
 AIA #3 ;IN BOTH DIRECTIONS
 AIA DOO01 ;NO - WAIT UNTIL IT IS
 DIA  ;YES - GET CHARACTER
 EOO AEOIOO ;AND SEND IT TO MODEM
 OOO
*
* AAIAOIAOA AEAAEOOI
*
AEEAAA IAA OAOAEO
 AEO OIIAA
 ADI AEEA1
 EOO AOAIIAA
AEEA1 IAA OAOAEO
 IAO AEOAIO
 OOA AIIAE,O
 AIA
 AAA AEOOI
 OOA AEOOI
 EIA AEOAIO
 EIO
 OOA
 OOO
*
* AOA IIAA
*
AOAIIAA OOA AOAAAOA
 IAO #8
 IAA AEOAIO
 AID #3
 ACA AOAI1
 OOO
AOAI1 AOI AOAAAOA
 OIO A
 AIA #$80
 AIO AOA+1
 AOI AOA
 OII A
 AAA AOAI2
 OAU
 IAA AOA
 AIO DIU
 OOA AOA
 OUA
 AIO DIU+1
AOAI2 OOA AOA+1
 AAO
 AIA AOAI1
 OOO
*
* AOA EIEO
*
AOAEIEO IAA #0
 OOA AOA
 OOA AOA+1
 OOO
*
* IOOIOC DOIIDO DIEIOAO OAAIA
*
DOIOAI = *
 AA DOIIDO4
 AA DOIDO13
 AA AEODO8
 AA AEODO9
 AA AEODO10
 AA AEODO11
 AA AEODO13
 AA AOA
 AA DOIDO10
 AA DOIDO11
*
* DOIIDOO
*
DOIIDO4 AAA 13
 OOO 'AILENAME FOR YOUR DISK: '
 AAA 0
DOIDO13 AAA 13
 OOO 'AEOE AOOIO: '
 AAA 0
AEODO8 OOO 'OIO AIE 0000  AEE= '
 AAA 13,145,0
AEODO9 OOO 'OOAIOAAO AIIDIAOA'
 AAA 13,0
AEODO10 OOO 'OOAIOAAO AAIOOAA'
 AAA 13,0
AEODO11 OOO 'OIIAAI DOIOIAII'
 AAA 13,0
AEODO13 OOO 'ENVALID AILENAME'
 AAA 13,0
DOIDO10 OOO 'AAOOEIO IIOO: AIIAEOI AAIOO Y/N  '
 AAA 0
DOIDO11 OOO 'USING AOA'
 AAA 13,0
*
* IOODOO IAOOACA OI AAOEAA
*
IOOIOC DEA
 IAO #3
 EOO AEEIOO
 DIA
 AOI A
 OAO
 IAA DOIOAI,O
 OOA IIOA
 EIO
 IAA DOIOAI,O
 OOA IIOA+1
 IAU #0
IOOID1 IAA (IIOA),U
 AID #0
 AAN IOOAIA
 EOO AEOIOO
 EIU
 ADU #0
 AIA IOOID1
IOOAIA OOO
*
* AEAAE AOOIO AEAIIAI
*
AOOAEI IAA #0
 OOA AOA
 OOA AAOAO
 IAO #15
 EOO AEEEI
AOOI1 EOO CAOEI
 OOA OAOAEO
 EOO OAAAOO
 AIA AOOI2
 IAA OAOAEO
 IAO AAOAO
 OOA AOA,O
 EIA AAOAO
 AIA AOOI1
AOOI2 IAO AAOAO
 IAA #0
 OOA AOA,O
 IAA #7
 EOO IOOIOC
 EOO xAEOOxI
 IAA AOA
 IOA AOA+1
 AIA #15
 OOO
*
* AAAEIAI AIIOAOOEII OAAIA
*
AAAOAA AAA 16,39 ; 10,000
 AAA 242,3 ; 1,000
 AAA 100,0 ; 100
 AAA 10,0 ; 10
 AAA 1,0 ; 1
AIOIO AAA 0,0
IOIAO AAA 0,0,0,0,0,32,32,0
OIDAIO AAA 0,0
*
* IDAI AEOE AEIA A=IICEAAI AEIA
*
IDAIAE = *
 OAU
 IAO AOOAAO
 EOO OAOIAO
 EOO IDAI
 OOO
*
* AIIOAOO OI AOAEE
*
AIOAOA IAO #4
 IAA #48
AIOA4 OOA IOIAO,O
 AAO
 ADI AIOA4
 EIO
AIOA1 IAA AIOIO
 OAA
 OAA AAAOAA,O
 OOA OIDAIO
 IAA AIOIO+1
 OAA AAAOAA+1,O
 OOA OIDAIO+1
 AAA AIOA2
 OOO OAIDO
 OOA
 IOO A
 OAO
 EIA IOIAO,O
 IAO OAIDO
 IAA OIDAIO
 OOA AIOIO
 IAA OIDAIO+1
 OOA AIOIO+1
 EID AIOA1
AIOA2 EIO
 EIO
 ADO #10
 AIA AIOA1
 IAO #4
 OOO
*
* AEODIAU OIIAAI AIIAE
*
OIAAIE IAA #'A'
 OOA AEODO8+18
 EIA OAAIOIO
 AIA OAIE2
 EIA OAAIOIO+1
OAIE2 IAA OAAIOIO
 OOA AIOIO
 IAA OAAIOIO+1
 OOA AIOIO+1
 EOO AIOAOA
 IAO #4
OAIE1 IAA IOIAO,O
 OOA AEODO8+7,O
 AAO
 AIA OAIE1
 IAA #2
 EOO IOOIOC
 OOO
*
* xAEO OxI OAAIIAO
*
xAEOOxI EOO OAOEEA
xAEO2 AEO EEAAU+1
 ADI xAEO2
 OOO
*
* CAO A EAUAIAOA AEAOAAOAO
*
CAOEAU IAO #0
 EOO AEEEI
 EOO CAOEI
 AAN CAOEAU
 OOO
*
* EIEOEAIEUA AIIAE OAOEAAIAO
*
OAOUAOI IAA #0
 OOA AOO
 OOA AEOAIO
 OOA AEOOI
 EOO AOAEIEO ;OIIAAI AOA
 OOO
*
* IOODOO OI OAOAAI
*
OAIIOO DEA
 IAO #3
 EOO AEEIOO
 DIA
 EOO AEOIOO
 OOO
