LFD.DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDINPRITE D.DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDE FEEDOR SSB R
0DTE 2; CARRIAGE RETURN
NA.PS ONS10135; SET/RESET PRTO S FLAGND)NTND)NTU 012135; REPEAT RITE ND)NTS D.DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD01GEN; STOP TO 1.1OLE OUT9L NA.U U NERRITE NOLETE LINEND)NTX U NIME
RAC, INPRTE RITE ;
;FLSYPACES)
DRVSES
;NS
;N3P2 SUCDCRIVE SEPERAIME. (:)
RU. -D.DDD.DD7H CDCELEACK0ASLAY
HARY AMAXCMD D.DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD40RITE OF VALID P2DOS COMMALE IHIS BSTART PROGRAM
;
P2DOS:
;
VERS: DB 0D5HRITE VERSION D VNOT IMPLEMENTD.DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDE
DPEASIZMP2DOS CCDC5s added to support system id
MAXDVERSIS IM201Gfeature in modified Kaypro bios21VERSIS 000H21VERSIS 000H21VERSIS 000H(:TA
CP2DOSY A:)T: J212CNTACK0ARITE JUMP TO ERAIONE NRN2DOSCONIRROR MESS CONSES P2DOSSECTOBad sector message changeNOT o read/write messages-B./C
;STBDSC: DEFW BADSECRITE BAD GICR MESS CONSE
STSEL: DEFW SELERRRITE FILE ( N
STRO: DEFW RDONLYRITE DCES)EM W ONLY O
FILRO: DEFW FILRORITE /EAD ONLY O
RDERR: DEFW RDERRRITE Read error message O
WRTER: DEFW WRTERIVE
RAC,Write error messageCONIXTERSB RON
N9E
SEC PATH: DEFW RAMLOWNUMB 40HOUTOIATHNAME FOR OPEN FILE COMMAND
;Path no DPX Uorted--B./CWRITEDATH: DEFW RAMLOWNUMB H
ER N
; S ONADDRESS P2BIOSY A ILATLDOUTE:H IMEAD: DEFW UTE: RAC,S ONROUT2D2T NFOR UTE:21ENDILATLLLLL; OLE CATE STAMPCT DMAXIF (RITE DOUTE:)
UTE:AD: DEFW +000000000000000000000000000000000000000000000000001ENDIFR R
; OR CONSS FOR SPECIALS
; BIT 0: PUBLIC FILE D D(1)/DISABLE+2)
;ME T A
L DETION BWRITEWTE 2ARACTERS ACTIVE(1)/DISABLE+2)
;
OR CONS;
;FLdded 0DMA2RITE OR CONSME TECONINTACK0A PO FLAAOMMANDCT D
OF T: LD A,STATRAC,GET ILES NUMBER21LD (FUNCT),AS
SAVE IT FOR RBER USE21LD HL,0 RAC,
; O1 W TO ZERO21LD (PEXIT),1 WS
CLEAR EXILAY
ODE
XOR ARITE CLEAR A21LD (FLDRV),AS
M YT DCES) SELECT DONE OR CONS21LD (RDWR),AS
M YT READ/M BOOOR CONS21LD (SPSAVE),SPS
SAVE STACK PO;
;;S BN DD SP,P2DOSS K LCONS INTERSB R STACK PO;
;;S BS IMUSH IX RAC,SAVE INDEX REGISTES BS IMUSH DERITE SAVE PARAMETER REGISTES BS IMOP IX RAC,GET IT BACK IN IX21LD HL,P2EXITS
GET EXIT ADDRESS P2DOS21PUSH 1 WRITE SAVE IT H. TTACK TO 3ROUTO FROM P2DOS21LD A,STATRAC,GET ILES CODEY A ILATLDOUTE:21CP 200135; EST GET UTE:21JS
;NZ,GETC=0S
YES THENCONS TIME21CP 201 RAC,TEST S9L OR SSMAXJS
;NZ,
; YIMS
YES THENACE
UTE:21ENDIFY APUNCHS
;NECELEAD+1S
TEST GREATER THEN MA101D VN
5)=DSTATRAC,IF SO RETURN TO CALL1 ND DOMUSHING21LD HL,CTCAK L LOAD INPUE
N DD B,0 RAC,PREPARE 16ME T ADD21ADD HL,BCRITE ADD21ADD HL,BCRITE ADD TWIH IFMTO GET WORIS NALUE
N DD A,(1 W) RAC,GET MDB21RACT HLRITE ONE NONSOLO MSB21LD H,(1 W) RAC,GET MSB21LDN D,ARITE SAVE MD
; 20 P9L M S DE=T NUTE: A=0RK RHIS BDIRLINACK0A CODE : H ,01H,02H,03HESEAD5RROR
; A=0DMA2ESE N
; ERROR CODE : H ESEAD5RROR
; A=0DMA2ESE N
; READ/M BOOCODE: H ESEAD5RROR
CTER A=01EEM W => END OF FILE
; M BOO=> DIRLINACK0A
; ALLICAINTS:Y IFWL
; ALLY ACTABLE: DEFW OIN BCLRAC,P2DOS S. -OT
DEFW RDCONRITE H HSECTOEVE N DEFW BWRCONRITE H H
19L DEFW RDRDIVE
RAC,OR SOOSECTOEVE N DEFW W=RLRITE H HA=00EVE N DEFW W BRRAC,CE A=00EVE N DEFW DCIORITE DIRECT H H I/O21SIZW GIOST RAC,GET I/O BYTE21SIZW SIOST RAC,
; OI/O BYTE21SIZW MESSRITE LFNT STRING21SIZW RDBULATLRAC,CKCM H H BUENTRER
m idEFW TSTCS RAC,GET H H STATUS21SIZW ELEAND12RITE 3ROUTO VERSPRTUMBER
m idEFW ELEANDLE SRAC,M YT DISKCKCM21SIZW ELEAND1Y IFRAC,FILE (0Em idEFW ELEAND15RITE OPEN FILE21SIZW ELEAND16RITE CLOSE FILE21SIZW ELEAND17RITE SEARCH FOR FIRS DEFW ELEANDD)RITE SEARCH FOR NEX DEFW ELEAND19RITE DFDE FILE21SIZW ELEAND20RITE CKCM SEQUENTIAL21SIZW ELEAND21RITE M BOOSEQUENTIAL21SIZW ELEAND22 RAC,MAKE FILE21SIZW ELEAND23 RAC,RENAME FILE21SIZW ELEANDION DRITE 3ROUTO LOGIN VECTRS B DEFW ELEAND25RITE 3ROUTO CURRENT DISK21SIZW ELEAND26RITE
; ODMAC=2ESS21SIZW ELEAND27RITE GET T NALLOCMINI VECTRS B DEFW ELEANDNO ERITE M BOOPROTE LISK21SIZW ELEAND29 RAC,GET R/O VECTRS B DEFW ELEANDET UUURITE
; OFILE ATTRIBUTES21SIZW ELEAND31RITE GET T NDISK PARAMETER HEAVE N(DPH) 21SIZW ELEAND32RITE GETR ET USER CODE21SIZW ELEAND33RITE CKCM 2DOM21SIZW ELEAND3Y IFRAC,M BOO2DOM21SIZW ELEAND35RITE COMPUTE FILE (F2E21SIZW ELEAND36 RAC,
; O2DOM RECOR DAT DEFW ELEAND37RITE M YT MULTIPLE DRIVE21SIZW DUMMYP2 SUCOT 0DPLEMENTED
DEFW DUMMYP2 SUCOT 0DPLEMENTED
DEFW ELEANDKEY RAC,M BOO2DOM WITH ZERO FILLHIS BI/O ROUTINECT D
; AA=OE IN9LSEC EM WTE 2ARACTER FROM H H AND ECHO
; IF CHARE DR,SECON, BRE, NA.H OR > NONET/E
;
RDCON: CALL GET
; OSRAC,GET K HES BPUNCHALL TST
; OSRAC,TEST IF CR,SECON, BRE, NA.H OR > NONET/E
JIVE
C,EXITP2 SUCO THEN EXIT21CALL WRCONRITE ECHOTE 2ARACTER
EXIT: LD (PEXIT),AS
3ROUTOTE 2ARACTER
DUMMY:5)T ; AND EXIT P2DOSHIS BP2DOS M BOOH HY ABWRCON: LD A,RT TA OPY CHARW.S B JIVE
WRCONRITE AND A=00EUT I SEC EM WEM WER
ER N
RDRDR: CALL
; VE NRITE GET K HER FROM OR SOO21JSB XIT RAC,AND 3ROUTO IT TO CALLER HIS BM BOO=RLY AW=RL: LDPUNCH,RT TA OPY CHARW.S B JS
;N=RLRITE AND A=00EUT IT TO PUNCH DEVICE
SEC WRITEOUTISTY AW PU T: LDPUNCH,RT TA OPY CHARW.S B JS
;N BRRAC,AND A=00EUT IT TO LIST DEVICE
SEC DIRECT H HSECTOEUT/O; KY ADCIO: LDPUNCH,RT TA OPY CHARW.S B INC E135; EST IF 0FFH21JIVE
Z,DCIO0 RAC,YES DO . -D INC E135; EST IF 0FD.DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD021JS
;NNZ,CONOD.DDK L NO THEN O; KTE 2ARACTER
MAXCALLPUNCHONST RAC,GET H H STATUS21JSB XIT RAC,AND 3ROUTO IT TO CALLER
DCIO0: CALLPUNCHONST RAC,GET H H STATUS21OR A135; EST I 5)T ZRITE EXIT IF NO K HER PRNEWTNT21CALLPUNCHA TNRITE GET K HES B JSB XIT RAC,AND 3ROUTO IT TO CALLER
ER N
; GET I/O
US BYTEY AGIOST:N DD A,(RAMLOWNUMB 3H) ; GET I/O BYTE FROM RAM21JSB XIT RAC,AND 3ROUTO IT TO CALLER
ER N
;
; OI/O
US BYTEY ASIOST: LD A,RT TA OPY I/O BYTE21LD (RAMLOWNUMB 3H),AK L AND SAVE IT IN RAM21RET ; EXIT TO CALLER
ER N
; TESLAY
=OE SRAC, USY ATSTC;
;FLPUNCHALL G+0000000000000000000000000000000000000000000000000000000000000000000000000000000000ITE GET H H STATUS21JSB XIT RAC,AND 3ROUTO IT TO CALLER
ER N
; A=00EUTTE 2AR ( NA.ROL CHAR = ^CHAR)
;
OUTCH: CALL TST
; OSRAC,TEST ILAY
R,SECON, BRE, NA.H OR > NONET/E
JIVE
NC,WRCONS
YES THEN JUMP21PUSH AFRITE SAVE K HES BN DD A,'^'AT ROAD A WITH '^' 21CALL WRCONRITE A=00EUT I S IMOP ALATLRAC,GET K HER BACK21PUSH AFRITE SAVE IT AGAIN21ADD A,'A'-1RITE ADD OFFSET21CALL WRCONRITE A=00EUT I S IMOP ALATLRAC,GET K HES B5)T ; 3ROUTO TO CALLER
ER N
; ECHO CR,SECONY ACROUT: LD A,CRRITE A=TEM RIA NA.UETH321CALL WRCONRITE A=00EUT I N DD A,SECONRITE A=EM TFE5HRESO FALL THROUGH TO A=00EUT R012NUMB 2ER N
; M BOOK HER ON C=OE
;
WRCON: CP TAB135; EST IF TAB21JIVE
NZ,WRCON1 K L NO THEN JUMPCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDON0: LD A,' 'RITE EXPAND TAB WITH HARYCES21CALL WRCONRITE M BOOHARYCE21LD A,(TABCNT) K LCONS TAB COUN AND 7135; EST IF DONUMB 2MAXJIVE
NZ,WRCON0 K L NO THEN REPEAT21LD A,ETE RAC,3ROUTO TAB21RET ; 3ROUTO TO CALLER
WRCONA
LS IMUSH AFRITE SAVE K HES BPUNCHALL G+000000000000000000000000000000000000000000000000035; ESFHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOTUS AND NA.S/ NA.C21POS
;NAFRITE GET K HER BACK21PUSH AFRITE SAVE IT AGAIN21LDPUNCH,ARITE COPY I PUNCHALLPUNCHON
SERAC,A=00EUT I S IMOP ALATLRAC,GET K HER BACK21PUSH AFRITE SAVE IT AGAIN21LDPUNCH,ARITE COPY I N DD A,(F
; 1E) K LCONS PR;
;;R ECHO FLAG
OR A135; EST I PUNCHALL NZ, BRRAC,NON ZERO =>
1PUT CHAR TO LF==21LD A,(FLAGS) K LCONS5s CONS BYTE
BIT 1,A135; EST DELAY WRITEW BYTES ACTATE MMAXJIVE
Z,WRCON2 K L NO THED
XI N DD 1 W, NOLAYS
GET NOLAY COUNTER
MAXXOR ARITE A=0
OR (1 W) RAC,TESLAY
OU===021JIVE
Z,WRCON2 K L YES THED
XI DEC (1 W) RAC,ELSE DECREMENLAY
OU==CDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDON O
ETS IMOP ALATLRAC,RESTORE CHARW.S BESO FALL THROUGH TO COUNT R012NUMB 2ER N
MAXRET NSTATRAC,YES, NOR C TE 2ARACONSOLHEN EXI DEC (1 W) RAC, NA.ROL K HER, DECREMENT TAB COUN PUNCHS
;N NA.01GTEST BLSYPQU 0MAXJIVE
NZ,COUNT0 K L NOIME. (CKHARYH IFMTHEN JUMP21DESTAT(1 W) IME
RCREMENT TAB COUNTER
MAXRET ; AND EXIT21CP RUBOUT21JIVE
NZ,COUNT021DESTAT(1 W)
5) COUNT0: CPPUNCHIVE
RAC,TESLAY
AR
L NA.UETH321JIVE
NZ,COUNT1 K L NO THEN JUMP21LD (1 W),0 RAC,M YT TAB COUN 5)T ; AND EXITND)UNT1: CP TAB135; EST TABTE 2ARACTER
MAXRET NZP2 SUCO THEN EXIT21PUSH AFRITE SAVE K HES BN DD A,(1 W) RAC,GET BRE COUN ADD A,8 RAC,ADVANCE IT 8 POSITION21AND 0FDV PU T
; OIT TO NEXT TAB POSITION
MAXLD (1 W),ARITE SAVE IT21POS
;NAFRITE RESTORE CHARW.R 21RET ; AND EXITHIS BGET K HER FROM H HY AGETCH: LD HL,LAST
; OSK LCONS PO;
;;11O LCK1SECTOEUTTE 2ARACTER
MAXLD A,(1 W) RAC,GET K HES BN DD (1 W),0 RAC,M YT LAST K HES B OR A135; EST IF CHARW.R PRNEWTNT21RET NZRITE 3ROUTOESESO21JS
;ND DNRITE ELSE GET K HES B;
; GET H H STATUSY AG+0000000000000000000000000000000000000000000000000000000000 LD A,( NOLAY) K LCONS 256 BYTES NOLAY
OR A135; EST I JIVE
NZ,GGG10 K L NON ZERO, NOLASETTTIL ACTIVE OR DISABLE DATPUNCHALLPUNCHONST RAC,GET H H STATUS21AND 1135; EST I JIVE
NZ,GGG11 K L NON ZERO THEN GET K HES BGGG10: LD A,(LASTCH) K LCONS LAST K HES B OR A135; EST I JIVE
NZ,GGG13 K L NON ZERO THEN K HER PRNEWTNT21CALLPUNCHONST RAC,GET H H STATUS21AND 1135; EST I 5)T ZRITE 3ROUTOESENO K HER PRNEWTNT
GGG1A
LPUNCHALLPUNCHA TNRITE GET K HES BPUNCHS
;N NA.S RAC,TESFHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOTE: UK HES B JIVE
NZ,GGG12 K LBY SETHED
XIQU EARACTER
MAXCALLPUNCHA TNRITE GET NEXQU EARACTER
MAXCPPUNCHONTC135; EST IF USER WANTS TTABXI JS
;NZ,RAMLOWNUMB INCYES THEN WAR HL=P JIVE
G+000000000000000000000000000000000000000000000000035; EST AGAIN
GGG1 O
ETN DD (LASTCH),AS
SAVE K HES BN DD A,0F (B PU T
; ODELAY COUNTER
MAXLD ( NOLAY),AS
AND SAVE IT
GGG13:N DD AM WRITE K HER PRNEWTNT CODE21RET ; 3ROUTO TO CALLER
ER N
; TESQU EARACTER
; EXIT TEM RY=0: CR,SECON, BRE, NA.H OR > NONET/E
; TEM RY=1: ALL OTHERTE 2ARACTERSY ATSTCH: CPPUNCHIVE
RAC,TESLAY
AR
L NA.UETH321RET ZRITE 3ROUTOESESO21CPN DLATLRAC,TEST EM TFE5HR5)T ZRITE 3ROUTOESESO21CP TAB135; EST TAB21RET ZRITE 3ROUTOESESO21CPPUNCHONTH135; EST BLSYPQU 0
;Added next two lines as a part of delete key fix--B./CMAXRET ZRITE 3ROUTOESESO21CP RUBOUT21RET Z21CP ' '135; EST > NONET/E
5)T ; 3ROUTO TO CALLER
ER N
; M BOOBACKHARYCE,HARYCE,BACKCPQU 0ER N
W NA.H: CALL W NA.0 RAC,M BOOBACKHARYCE21LDPUNCH,' 'AT ROAD HARYCE21CALLPUNCHON
SERAC,AND A=00EUT I W NA.0: LDPUNCH, NA.01GLOAD BACKHARYCE21JS
;NCONOD.DDRAC,AND A=00EUT I SEC
1PUT MESS CONSE
;
MESS: LD A,(DE) RAC,GET BYTE FROM BUENTRER
MAXCP '$'135; EST LAST BYTE21RET ZRITE YES, THEN 3ROUTO TO CALLER
MAXRACT DRT DMAO FLTO NEXT BYTE21PUSH DERITE SAVE ONE NTER
MAXCALL WRCONRITE A=00EUTTE 2ARACTER
MAXPOS
;NDERITE RESTORE PO;
;;S B JIVE
MESSRITE stemEST AGAINHIS B CONSAIN PRINTS #,CR,SECON AND ADVANCES TO TABCX1
GET POSITION FIRSQU EARACTER OUTORMAXCP (1 W) RAC,CHECK IT21RET ZRITE 3ROUTOESEH. TAME POSITION21LD A,' 'AT ROAD HARYCE21CALL WRCONRITE A=00EUT I JIVE
CONSAIN1 RAC,stemEST AGAINHIS B; -TE CNEN
; ERAI: T EQ:)T BUENTRER-1
;
; 16E DHARW.R COU== (ALWAYS>0)Y A NOLCH: DESTATPEAIME
RCREMENQU EARACTER COU==21LD A,(TABCNT) K LCONS TAB COUNTER
MAXPUSH AFRITE SAVE IT21PUSH BCRITE SAVE K HER COU==21LD A,(TABCX1)S
GET POSITION FIRSQU EARACTER OUTORMAXLD (TABCNT),AS
SAVE IT IN BRE COUNTER
NOLCH0: LD A,PEARAC,COPY CHARW.R COU==21OR A135; EST IF 021JIVE
Z, NOLCH2 K L YES THEN JUMP21DESTATPEAIME
RCREMENT I INC HLRITE RACTREMENT BUENTRER ONE NTER
MAXLD A,(1 W) RAC,GET K HER FROM BUENTRER
MAXPUSH 1 WRITE SAVE BUENTRER ONE NTER
MAXCALL TST
; OSRAC,TEST IF CR,SECON, BRE, NA.H OR > NONEP21JIVE
NC, NOLCH1 K L YES THEN JUMP21RRA ; ELSE IME S BE NA.ROL K HES BPUNCHALLPUNCHOUNTSTATRAC,COUNT CONTROLTE 2ARACONSOLWICE
DELCHA
LPUNCHALLPUNCHOUNTSTATRAC,COUNTTE 2ARACTER
MAXPOS
;N1 WRITE GET BUENTRER ONE NTER
MAXJIVE
NOLCH0 RAC,stemEST AGAIN
DELCH O
ETS IMOP BCRITE RESTORE CHARW.R COU==21POS
;NAFRITE stemAB COUNTER
MAXPUSH 1 WRITE SAVE BUENTRER ONE NTER
MAXPUSH BCRITE AND K HER COU==21LD HL, BRECNTS
GET BRE COUNTER ONE NTER
MAXSUPEA(1 W) RAC,CALCULATE DIENTRERENCE
DELCH3: DEC ARITE DECREMENT I PUNCHS
;N8 RAC,COMPARE WITH K MAXJIVE
NC, NOLCHY IFK L JUMP IF >=K MAXPUSH AFRITE SAVE DIENTRERENCE21CALL W NA.01GREMOVE K HER END OUTORMAXPOS
;NAFRITE RESTORE COU==21JIVE
NOLCH3 RAC,REMOVE MORE CHARW.RS
DELCHIVE
IS IMOP BCRITE RESTORE CHARW.R COU==21POS
;N1 WRITE RESTORE BUENTRER ONE NTER
MAXRET ; AND 3ROUTO TO CALLER HIS BCKCM BUENTRER
ER N
RVERSISUF: LD A,(TABCNT) K LCONS CURRENRNOSITION CURSOR
MAXLD (TABCX1),AS
SAVE ITDTVERSISUF0: PUSH IX RAC,SAVE :)T ADDRES6 CUENTRER
MAXPOS
;N1 WRITE GET IT IN 1 W21LDPUNCH,(1 W) RAC,GET ECIMUMOUTINE LENGTH21RACT HLRITE RACTREMENT TO EM TLENGTH POSITION21LD B,0 RAC,CLEAR EM TLENGTH COU==21PUSH 1 WRITE SAVE :)T EM T- 1
RDBUFA
LS IMUSH 1 WRITE SAVE REGISTERS21PUSH BCDTVERSISUF2: CALL GET
; OSRAC,GET K HES BS IMOP BCRITE RESTORE REGISTERS21POS
;N1 W21AND 0NUMB 6E01GMASKTE 2ARACTER
MAXCPPUNCHONTE RRAC,TEST IF CONTE21JIVE
NZ,RDBUF3 K LBY SETHEN JUMP 21PUSH 1 WRITE SAVE REGISTERS21PUSH BC21CALL AGAIN0 RAC,MOVE CURS ASO NEXT OUTORMAXJIVE
RDBUF2RITE AND GET NEXQU EARDTVERSISUF3:PUNCHS
;N NA.01GTEST BLSYPQU 0MAXJIVE
NZ,RDBUFY IFK LBY SETHEN JUMP
DOBACK: LD A,PEARAC,TEST IF ; -TING CHAR FROM EMPTYOUTINUMB 2MAXOR COL JIVE
Z,RDBUF1 K L YES THEN GET NEXQU EAR21POS
;N1 WRITE GET :)T OUTORMAXPUSH 1 WRITE AND SAVE IT AGAIN21CALL DEL
; OSIME
RLETE CHARW.S B JIVE
RDBUF1 RAC,GET NEXQU EARACTER
RVERSISUFIVE
IPUNCHS
;N
; 1E135; ESRNRINT ENABLE/DISABLE21JIVE
NZ,RDBUF6 K LBY SETHEN JUMP21LD A,(F
; 1E) K L COA=DENT PR FLOR CONS21CPL21LD (F
; 1E),COLRDBUF5: JIVE
RDBUF1 RAC,AND GET NEXQU EARACTER
RVERSISUF6: CPPUNCHONTR135; EST Rt sDRV1A1MAXJIVE
NZ,RDBUFAS
RITE THEN JUMP21PUSH BCRITE SAVE REGISTERS21CALL AGAIN RAC,MOVE CURS ASO NEXT OUTORMAXPOS
;NBCRITE RESTORE REGISTERS21POS
;N1 WRITE GET :)T OUTORMAXPUSH 1 WRITE SAVE IT AGAIN21PUSH BCRITE SAVE EM TCOU==/MAXIMURK RNE LENGTHDTVERSISUF7: LD A,PEARAC,TEST LAST K HER ECHOED 21OR COL JIVE
Z,RDBUF8 K L YES THEN JUMP21RACT HLRITE RACTREMENT PO;
;;S BN DD A,(1 W) RAC,GET K HES B DEC BRITE DECREMENTOUTINE COUNTER
MAXPUSH 1 WRITE SAVE REGISTERS21PUSH BC21CALL OUT
; OSRAC,A=00EUTTE 2ARACTER
MAXPOS
;NBCRITE RESTORE REGISTERS21POS
;N1 W21JIVE
RDBUF7RITE stemEST END OUTOR
RVERSISUF8: POS
;NBCRITE RESTORE EM TCOU==/MAXOUTINE LENGTHDTVERSISUF9: JIVE
RDBUF5 RAC,AND GET NEXQU EARDTVERSISUFA: CPPUNCHONTU135; EST DFDE OUTORMAXJIVE
NZ,RDBUFSTATK LBY SETHEN JUMP21POS
;N1 WRITE GET :)T OUTORMAXCALL AGAIN RAC,MOVE CURS ASO NEXT OUTOR
; OD.DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD4ON D DMAXJIVE
ELEAD25ARITE AND EXITHIS BM YT DISKCKCMY AELEAND13: 21IF5)SDSK
;detect change between single and double sided disks if this function is
;supSIZMPted.--B./CMAXCALLFLTGRA
MAXENDILATL21LD HL,0 RAC,LOAD ZERO21LD ( NO IN),1 WS
ALL DRIVES LOGED OUT21LD (DSKRO),1 WS
ALL DRIVESEM W/WRITE21LD HL,RAMLOWNUMB 80H ND)NTSET UP DMAC=2ESS21LD (D.D),1 WS
AND SAVE IT21CALL STDDSKECDCO PEADM CALL21XOR ARITE
; ODEFAULT DCES) = 'A'
MAXLD (SIZ003),AS
SAVE IT21CALLFLLDAS 6RAC,FILE (DRIVE 'A'
MAXLD A,(SUBOR G) K LCONS SUBMIT OR CONS21JIVE
ELEAD25ARITE EXIT(:EARCH FOR FILEY AELEAND17: CALLFLLDRVRITE FILE (DRIVE FROM FCB21LD A,(IX+0) K LCONS DRIWARMUMBER FROM FCB21SUPEA'?'135; EST IF '?'
MAXJIVE
Z,ELEAD17PEAK LESESO ALL ENTRIES MATCH21LD A,(IX+14) K LCONSIME BYTE21CP '?'135; EST IF '?' 21JIVE
Z,ELEAD17AS
YES, JUMP21LD (IX+14),0 K L LOAD READ F BYTE WITH ZEROOR SD VN17A: LD AM W5 RAC,TEST FIRST 15 ITEMS IN FCBOR SD VN17B: CALLFLARC01GDO SEARCH
2D2D VN17C: LD HL,(DIRBUF) K L COPY DIRLINACK0A BUENTRER 21LD DE,(D.D) K L TO D.D CHPN DD BCM WNO ERITE DIRLINACK0A=1NO E BYTES 21LDIR21RET ; EXIT(:EARCH FOR NEXT OCCURENCE FILEY AELEANDD): LD IX,(DCOPY) K LCONS LAST FC
; 16USED LY LARCH
MAXCALLFLLDRVRITE SELEXT DCES) FROM FCB21CALLFLARCNRITE SEARCH NEXT FILE MATCH21JIVE
ELEAD17STATRAC,AND COPASIRLINACK0A TO D.D CHPSEC DELETE FILEY AELEAND19: CALLFLLDRVRITE FILE (DRIVE FROM FCB21CALL DFDRT ; ; -TE FILEOR SD VN19A: LD A,(SEAREX) K LCONS EXIT BYTE 00=FILE FOUND,0FTUSONOT21JIVE
ELEAD25ARITE AND EXITHIS BRENAME FILEY AELEAND23:PUNCHALLFLLDRVRITE FILE (DRIVE FROM FCB21CALL5)NAMRITE RENAME FILE21JIVE
ELEAD19ARITE AND EXITHIS B3ROUTO LOGIN VECTRS B;OR SMNDION D: LD HL,( NO IN) K LCONS LOGIN VECTRS BELEADION DA: LD (PEXIT),1 WS
SAVE IT21RET ; AND EXITHIS B3ROUTO CURRENT DCES)Y AELEAND25: LD A,(SIZ003) K LCONS CURRENT DCES)OR SD VN25A: J212CXIT RAC,AND EXITHIS B3ROUTO ALV VECTRS B;OR SMND27: LD HL,(ALV) K LCONS ALLOCMINI VECTRS B JIVE
ELEADION DARITE AND EXITHIS B3ROUTOY IFWL R/O VECTRS B;OR SMND29: LD HL,(DSKRO) K LCONSY IFWL R/O VECTRS B JIVE
ELEADION DARITE AND EXITHIS BCHAAA3 STATUSY AELEANDET UUU: CALLFLLDRVRITE FILE (DRIVE FROM FCB21CALLPUNCH
RITE CHAAA3 STATUS21JIVE
ELEAD19ARITE AND EXITHIS B3ROUTO DRIVE INPUE
;
ELEAND31: LD HL,(IXP)S
GET DRIVE TABLE21JIVE
ELEADION DARITE AND EXIT(:ET/GET USER CODEY AELEAND32: LD A,RT ; GET USER CODE21RACT A135; EST IF 0FFH21LD A,(USER) K LCONS OLD USER CODE21JIVE
Z,ELEAD25AS
IF 0FTUSOTHED
XI N DD A,RT ; GET 1 W+USER CODE21AND 01 (B PU T MASK I N DD (USER),AS
SAVE IT21RET ; AND EXITHIS BCOMPUTE FILE (F2E COMMANDY AELEAND35: CALLFLLDRVRITE FILE (DRIVE FROM FCB21CALL FILSZRITE COMPUTE FILE (F2E21JIVE
ELEAD19ARITE AND EXIT(:ET 2DOM RECORD COUNTY AELEAND36: LD HL,32RITE
; OONE NONSOLO NEXT RECORD21CALLPUNCHALRRSTATRAC,CALCULATE 2DOM RECORD COUNT000 DRRC: LD (IX+33),D K L AND SAVE 2DOM RECORD COUNT21LD (IX+34),C21LD (IX+35),B21RET ; AND EXITHIS BM YT MULTIPLE LOGIN DRIVE
;
ELEAND37: 21LD A,RT ; GET MASK LD5MAXCPL TA OMPLEMENT I N D)
D,A
MAXLD A,D RAC,GET MASK MD5MAXCPL TA OMPLEMENT I N DD D,COLN DD 1 W,( NO IN) K LCONS LOGIN VECTRS BN DD A,RT ; PASSET/OGIN VECTRS B ANDN DAT RD5MAXLDN D,COLN DD A,D RAC,MASK LOGIN VECTRS B AND HRITE MSB21LD H,COLN DD ( NO IN),1 WS
SAVE NO IN VECTRS B EX DE,1 WRITE USE NO IN VECTRR AS MASK21LD HL,(DSKRO) K LCONS DRIVE R/O VECTRS BN DD A,RT ; PASK DRIVE R/O VECTRS B ANDN DAT RD5MAXLDN D,COLN DD A,D RAC,MASK DRIVE R/O VECTRS B AND HAT RD5MAXLD H,COLN DD (DSKRO),1 WS
SAVE DRIVE R/O VECTRS B;21EXX21IF5)SDSK21CALLFLTDSK21ENDIF21CALLPUNCHLRDSK21EXX21RETSECTO******************************************************************************
LS IMUSH IX RAC,YES THEN DISPLAY "FILE ="21SUPEA19135; EST DFDE FILE ILES21JIVE
NZ,ERROR2 K LBY SETHEN JUMP21OR STATRAC,TEST AND AO FECT MAXJIVE
Z,ERROR2 K L NO FILE R/O THEN JUMP21CALLPUNCHALDIRRITE GET FC
; 16FROM DIRLINACK0A BUENTRER
MAXEX (SP),1 WRITE SAVE IT
ERROR O
ETN DD DE,MFILES
GET MESS CONSE " FILE ="21CALL MESSRITE DISPLAY MESS CONSE
S IMOP HLRITE GET ONE NTER FCB21LD B,8 CDCISPLAY FIS
C8 K HERS21CALL FILENM21LD A,'.'AT ROAD '.'
MAXPUSH 1 WRITE SAVE FC
; 16ONE NTER
MAXCALL WRCONRITE ECHO I S IMOP HLRITE RESTORE FC
; 16ONE NTER
MAXLD B,3 CDCISPLAY LAST 3 K HERS
PUNCHALL FILENM
ERROR3:PUNCHALL G+000000000000000000000000000000000000000000000000035; EST IF CHARW.R PRNEWTNT21OR COL JIVE
Z,ERRORY IFK L NO THEN JUMP21CALL GET
; OSRAC,GET K HES B JSB RROR3 RAC,stemEST AGAIN
ERRORIVE
IPUNCHALL GET
; OSRAC,GET K HES B;P2DOS had a bug which did not allow the user to ignore a read/write error
;by hitting a key other than Control-C. This is the fix.--B./CMAXPUSH AFRITE Save it21LD A,(RETOR G) K L Get RETOR G
MAXOR COL JIVE
Z,ERROR521POS
;NAF21CPPUNCHONTC21RET NZ
ERROR5: JS
;NRAMLOWNUMB INCOLE CO P2DOS S. -OTHIS BDISPTION BD DER N
NUM: LD D,-1AT ROAD D V-1
NUMA
L INC DRITE RACTREMENT NUMBER21SUPEASTATCDCIVIDE BY C21JIVE
NC,NUM1 RAC,RITE FINISHED THEN LOOP21ADD A,STATRAC,RESTORE LAST VALUE21PUSH AFRITE SAVE IT21LD A,D RAC,TEST IF "0"21OR PEARAC,AND IF LEADING ZERO21JIVE
Z,NUM2 RAC,YES, THED
XIT 21LD B,D RAC,
; ONO LEADING ZERO
N DD A,D RAC,GET D DMAXADD A,'0'RITE MAKES ASCII21PUSH BCRITE SAVE REGISTERS21CALL WRCONRITE ECHO NUMBER21POS