XMODV6.TXT

(14 KB) Pobierz
*
* 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
 ...
Zgłoś jeśli naruszono regulamin