IMD 1.18: 18/09/2014 16:15:02 sk*dos/68k system disk ds/dd 40/80tr 1989      `PT2' $|I |@BaG9|a(f:g@zzgVB*|`>:g2GDB:c<@G*Bg*Jg *B@BGF|@aJJg *B@B< AFC@|@affaNu`BfNua*@fNua g` gn gxDAMONCOM XDELETECOM  XDEVICECOM  XDIFFCOM XDISKNAMECOMWDOSPARAMCOM  YDRIVECOM&'ZECHOCOM  WEDLINCOM XELIZACOM!j WTIMECOM$$uWTOLOWERCOM$$  WTOMSDOSCOM$$w VTRACENABCOM$$" WTURNCOM$#$# XUBASICCOM$$&&XUNDELETECOM&& VVERIFYCOM&& XVERSIONCOM& &  VWORKCOM&&nX gz`Jf,GaFgg |@aGa(fr<AB00Nua"IaANua,@a$aBf`aH@,@aЎ,@a`a*@`naH@*@aЍ*@`^gNA`A+ gN`N DISK NOT LINKED  ERROR - TRY AGAIN? NNNNNNNNNNNNNNNNNNNNNNN ERRCODESSYS'' ZFAKEBAT""5XFAKEADMDVR#$ XFAKEADMTXT% XFINDCOMWFIXBOOTCOM WFORMATCOM#'  ZFROMSDOSCOMXFTOHCOM"XHDFORMATCOM#YYPIP&&wWDSK* #!Z'$ HELPCOMXHTOFCOMu XIOSTATCOM!ZLINKCOMlWLISTCOM ! VLOCATECOM" VMAKEMPTYCOM WMONOPARDVReXMONOPARTXT!dXNOBEEPCOM VDSK*' Z'$ PARALLELDVReXPARALLELTXT#cXPARKCOMYPDELETECOM  XPEEKCOM VPOKECOM VPROMPTCOM VPROTECTCOMWRAMDISKCOM ZRANDOMCMD$VSK*DOSSYS'd ZACATCOM nXADM-3ADVReXADM-3ATXT9bXAPPENDCOM XASCIICOM WASCIITXT WASMCOM  YBACHCOM  WBACKUPCOM Y READCOM XREADTXT2XREDOFREECOM&& ZRENAMECOMdXS1TOCOMCOM WSCATCOM  nXSEQUENCECOM WSERIAL1DVR_XSERIAL1TXT']XSERIAL2DVRbXBEEPCOM   VBUILDCOM  WCACHECOM  # YCATCOM $ YCHECKSUMCOM oXCMODEMCOM  XCMPCOM WCMPTXTWCOMPARECOM  VCOPYCOM Y SERIAL2TXT&aXSERIAL3DVRbXSERIAL3TXT "'bXSK*DOSCOR# "> ZSK*DOS09COM!#9 YSKEQUATETXT#  ZSPLITCOM#$$ XSTEPRATECOM$$ VSYSTEMCOM$$nXTCATCOM$ $ nX !"#$ !"#$     ^+= qqQQwwWWeeEErrRRttTTyyYYuuUUiiII ooOOppPP[[{{]]}} aaAAssSSddDDffFFggGdNNNz NN NNN N2Nz NNz0) FNCASE EQU 801 File Name case flag FOADDR EQU 784 File output address vector (long word) LASTRM EQU 753 Last terminator LINBUF EQU 608 Line buffer (128 bytes) LPOINT EQU 758 Pointer to line buffer (long word) MAXDRV EQU 802 Maximum _GhhHHjjJJ kkKK llLL ;;::;''""'``~~`\\||zzZZxxXXccCCvvVVbbBBnnNNmmMM ,,<<,..>>.//??/** * SK*DOS / 68K EQUATES FOR USER PROGRAMS NOLIST * DATA AREA EQUATES (RELATIVE TO A6) BACKSC EQU 736 Backspace character ($08) BAUDRT EQU 3329 Baud rate for serial ports (/100) BREAKA EQU 762 Break (Escape) address (long word) BSECHO EQU drive number MEMBEG EQU 5104 First usable address (above program)(long word) MEMEND EQU 796 Last usable memory address (long word) NULLWT EQU 3324 Null wait constant OCOLUM EQU 3328 Current output column OFFSET EQU 770 Offset load addres`***        77 77 %88%88#99#99-------(44(44'5 743 Backspace echo ($08) CDAY EQU 751 Current date - day CMFLAG EQU 793 Command flag CMONTH EQU 750 Current date - month COMTAB EQU 754 Pointer to command table (long word) CURRCH EQU 766 Last character read from buffer CYEAR EQU 752 s (long word) PAUSEB EQU 3326 Output pause control byte PLINES EQU 3322 Number of printed lines per page PREVCH EQU 767 Previous character read PWIDTH EQU 3323 Page column width REPEAC EQU 749 Repeat character ($01) SEQNUM EQU 806 Seqa5'55 &66&66++++;++"11"11 '22'22$33$33*00*00+..+..*y#t*y.yN*y#t*y.yNNua9 Yb9 #b9 bt9 1bha9 bRa9 e< b6a Current date - year DATBEG EQU 5100 Data area beginning - used by JINK DELETC EQU 737 Delete character ($18) LINCTR EQU 3327 Line-on-page counter (for pause) DEVIN EQU 3274 Current input device number (0) DEVOUT EQU 3275 Current output  uence number SLINES EQU 3325 Number of skipped lines between pages SPACOM EQU 739 Default write space compression (0=ON,$FF=OFF) SPECIO EQU 792 Special I/O Indicator SYSDIR EQU 744 System directory SYSTDR EQU 747 System default drive TTAbj/9*Nu9@NuaINN CALENDAR/CLOCK NOT PROPERLY SET -/ E HE/EHE/E*Nua9 e. b(9a9a f<a The must be specified, and must apply to a val K`KEEtKECaaaaa|M, |analajM,aba`a^a\aZaXaVaTaRM,aJaHaFaDMM,M, if given, overrides the default interleave constant. FORMAT will then ask for further information. Remember that to be bootable, the disk must be double-density throughout. Caution: FORMAT does real 0M Ba6aM:cM: :ga::fNu z"zޓM:":$: B:10:g: :|:vgd 0 0 :eB0 B0 B2:XMd::g2GDB:c<@G*Bg*Jg *B@BGF|@aJJg *B@B< AFC@|@af ! /f 9!eNG*#aLe4K<ad& .fZa2 Ae8<axd .g&N@e:|BB BlB,a0<Nua*L09"bEadNMa<Nu9*K g jK`Nuad _g -g *g`9!eNGfN@Bors) Choose 1, 2, or 3: <4:jaM|O|:<<aNuI5BBI0:3I  9c0gJ) gMVGJf afrMB:<<a(fZa1IIJgIB1 M:Gi' faNu`BfNua*@fNua g` gn gx gz`Jf,GaFgg |@aGa(fr<AB00Nua"IaANua,@a$aBf`aH@,@aЎ,@a`a*@`naH@*@aЍ*@`^gNA`A+ gN`N!"fN@Nu  f#NuJ9gBK/M<-,f<,f<,f,|-*y*Nu>3G>,|Ns>9G<FF>,|Ns ae {dNu*9BNuHKB<<JjQ*JfJg<Bq|:<<aEG L@1 KACfBiaTKG8<jgQ`ޠAK{a(9 g f`:Ug @f :D g:8f`:c :fNu<<9g g9a< aNuH0&*|B`H0B6*|BB$BEe`֕0 0fJfBg Jg< NJBfL Nu;B@'d HB`H<&<,<N@eT 9cJg6NG Fb*0  c(Jfք"# aJaH`aD</a>*L<<f< Jga&Q<.a<<f< Jga QL `NuHaL @NuHl BJDg& Dg, Dg> DdL9 PM>,vPN9 <Nu9 PM*6P<Nu9 PM,vPN <NuBJDg Dg& Dd89 PM,vP(NaQ<Nu9f9gaPKEa~Qana`NuM:>G:<<af aJfNu<Nu><Gfa(9 ga9gNu<2fNua9jNu.<B@fNuI<5<03(NK`8<BQz9|"`օ<`N@d*L<Nu*L<NuHDaHDaNu\a\aNu aaNu0 9c~NJHx((|E<9 * NB$9+9BNBD`Hx,g^(|E<9 * NB$9+9BNBD g g#$9 <Nu9 PMװ*6P<Nu <NuJ9+fB9 PM~,vPNB9 PMh,vP8NB9 PMR,vP NJ9+f,B9 PM4B.1B9 PM,vPNB9 PMB.1B9 PM,vPGHDGD00BINOBfDAfNOBf6  g0H9 * L NJ$%* gJPMֺ#*,y*,nJ9+g ,y*,n /NBo,|NfN     'sB9,y+#,y*Nf.y*L9NuL@*< NL  fPB..f.,g4.1.1d(|1./gH< NL/fNuJ.5gT,nHNL L@*gafM+.JVgJ.fJ.g`... g:,f,?f.`6-&e|9l>"Nu:,>EM3f(y+,|#ID.gg,G`,B(WJ,fB,Nb0LNu+f#+B9+&abfJ,=gNT fNWf9lJ"N_fB,MM``yyyNW.NEN_`vJ,jl=,N_NuBNu(W`J,|#ID.g(NuJf B9 `H(/9#  d#(y&y+#+NPH+f L8L NuBNCN0:KfMM-nPf+|NULL0M4+NP+NT+NX    NqNqNu<Nu, fJ.,fD., g@!g@!ng@!g@ .|,*e,K,*,y+`<+(B^<<>,Q(y+`(K+*,y+`<<?,Q(y+9l"N_f9l>"BNu,,Q(y4g,G`(W,;g*k(< NPf,;NPfBNPfJlf N[hf`TBl`N_f9lJ"N_ftB,MKM`kKKN_fM$K,,,MK4,,,NaRgh9,< `D=,;g, f< ` < af,;B,;a f,=`H:,NgE EfB,NN`f<,9F9F"J,gjNafy is also optional and may consist of one or more full or partial file names and/or extensions to be searched for. For example, ACAT 1.A/ TX.COM would list all files in   NAM SERIAL.DVR OPT PAG PAG * SERIAL DEVICE DRIVER FOR SK*DOS/68K * THIS VERSION IS CONFIGURED FOR THE PT-68K COMPUTER (-1A, * -1B, AND -2 VERSIONS) AND * IMPLEMENTS ICNTRL AND OCNTRL WITH TRANSLATION TABLES FOR THE * ADM-A TERMINAL. * COPYRIGHT|"fnIp5IpBEI6B((z<84I~54"(*h E$EKBBB*h  gn(gh  f-` .fR--d *fLI.!e1E-d *f2I.!e1E -d *fIn.!e1E `IX#KW:T g jdirectory A of drive 1 whose names begin with TX and whose extensions are .COM. The symbol * is a wild-card character inside file names.Incorrect drive number.Error in reading directory.Disk Name: Catalog of disk in drive  Number:  ! (C) 1987 BY PETER A. STARK * MOD. >>A<< 6-12-87 FOR PT-2 COMPUTER * MOD. >>B<< 6-4-88 FOR NEW DRIVER FORMAT **************** NOTE ************************************ * DEVICE DRIVER FORMAT WAS CHANGED 6-4-88 TO CONFORM TO * SK*DOS VERSIONS 2.4 AND K`(H ft(H fl,kgKM< : *g:g" g& *g g-fKQ`2J-k`J-j`g -fKQ`(g e<4KBE<<JjQ4$$$ hb`**h  g Name Ext Sectors Date Time Free sectors 8Not enough memory for directory., in alphabetic order.0 "LATER. THE "DEVICE.COM" PROGRAM * VERSION 1.0 AND LATER, WILL, HOWEVER, WORK WITH EITHER OLD * OR NEW VERSION DRIVERS. CHANGES ARE IDENTIFIED WITH >>B<< * NOTE ESPECIALLY THE CHANGE OF THE DRIVER MARKER FROM "DR" * TO "DN" AND THE ADDITION OF THREE NEW(g  g ,fV-`&JMa`BaB:afGf b`M*gg:`:`0123456789 9NuagNuMdB:gDL f Eb a<NuNuM$ * THE FORMAT OF A DEVICE DRIVER FOR SK*DOS IS VERY RIGID, * ESPECIALLY AT THE BEGINNING AND VERY END. YOU MAY * SUBSTITUTE YOUR OWN DRIVER CODE, BUT MAKE SURE TO USE THE SAME * FORMAT FOR THE DRIVER AS THIS EXAMPLE. NOTE ESPECIALLY THAT * THIS DRIVERical order, The syntax is ACAT The drive and directory are optional and default to the current work drive and work directory. They may be specified as either just a drive number, or as both a drive numbTN*<,<P`HF<<a<=a aHF a`    Nu IS NOT EXECUTABLE; IT IS TO BE LOADED INTO MEMORY * BY THE 'DEVICE' UTILITY, AND MUST BE POSITION-INDEPENDENT. DTBAUD EQU 51 BAUD RATE ENTRY IN DESCRIPTOR ********************************************************** * PART 1. BEGINNING, VERSION NUMB     ER, AND A 'DN' MARKER >>B<< * WHICH IS CHECKED BY 'DEVICE' TO AVOID ERRORS. ********************************************************** START BRA.S START NEVER EXECUTED DC.W $0003 VERSION NUMBER >>B<< DC.W $444E 'DN' ID MARKER >>B<< ********* ************************* ORG $0000 THEBEG EQU * ************************************************************* * PART 5. DATA AREA USED BY THE DEVICE DRIVER FOR VARIOUS * PURPOSES. ************************************************************* * ND OF TABLE CMP.B D6,D7 COMPARE WITH DESIRED BNE.S BAULOO LOOK MORE IF NO MATCH LEA BAURAT(PC),A0 MOVE.B D6,(A0) WHEN FOUND, STORE BAUD RATE LSR.W #8,D6 MOVE CODE RIGHT BRA.S GOTBAU AND CONTINUE BNOTFD MOVE.B #$66,D6 DEFAULT TO 1200 ************************************************* * PART 2. LENGTH SPECIFICATION. THE NEXT LONG WORD DEFINES * THE LENGTH OF THE DRIVER TO DEVICE.COM. THEEND IS A * LABEL WHICH IS PLACED AT THE VERY END OF THE DRIVER *********************************** BYTES 0-12: * NAME OF THIS DEVICE DRIVER DISK FILE - 12 CHARACTERS PLUS $04 DRNAME DC.B 'ADM-3A .DVR',$4 * BYTE 13: * DEVICE NUMBER SO THIS DRIVER KNOWS WHICH DEVICE IT IS DEVNUM DC.B 0 DEVICE NUMBER FOR THIS DRIVER * BYTES 14-17: * ADDRESS OF DEIF NOT FOUND LEA BAURAT(PC),A0 MOVE.B #12,(A0) AND STORE IT GOTBAU MOVE.L #DUART,A0 POINT TO DUART MOVE.B #$15,DCOMMB(A0) CRB: MODE=1, ENABLE RX&TX MOVE.B #$5,DCOMMB(A0) CRB: ENABLE RX & TX MOVE.B #$13,DMODEB(A0) MRB1: NO RTS, NO PARITY *********************** LENGTH DC.L THEEND ********************************************************** * PART 3. ENTRY POINT POINTERS. THE FOLLOWING POINTERS * DEFINE THE ENTRY POINTS INTO THE DRIVER. ALL ARE * RELATIVE TO THE ORIGIN **************** VICE DESCRIPTOR FOR THIS DRIVER DEVADD DC.L 0 * BYTE 18: * ACTUAL BAUD RATE BEING USED BAURAT DC.B 0 * BYTES 19: SPARE DC.B 0 ************************************************************* * PART 6. DEVICE INITIALIZATION. THIS CODE INITIALIZES PO, 8 BITS MOVE.B #$27,DMODEB(A0) MRB2: RTS,1 STOP BIT MOVE.B D6,DCLOCB(A0) CSRB: SET BAUD RATE MOVE.B #$80,DAUXB(A0) AUX CONTROL REG = SET 2 MOVE.B DDATAB(A0),D0 MOVE.B DDATAB(A0),D0 EMPTY RCVR BUFFER 3 TIMES MOVE.B DDATAB(A0),D0 RTS  ****************************************** DC.L INIPOR DRIVER INITIALIZATION DC.L INSTAT INPUT STATUS DC.L INCHAR INPUT CHARACTER WITH ECHO DC.L INCHAN INPUT CHAR WITHOUT ECHO DC.L ICNTRL INPUT CONTROL ENTRY DC.L OUSTAT OUTPUT STATUS RT B * OF THE 68681 DUART AT $FE0000 IN THE PT-68K COMPUTER. IT IS * ONLY EXECUTED WHEN LOADED BY 'DEVICE'. ALL REGISTERS CAN BE * CHANGED. ************************************************************* * HARDWARE EQUATES FOR THE PORT DUART EQU $FE00* BAUD RATE LOOKUP TABLE, CONSISTS OF BYTE FOR CLOCK SELECT * REGISTER, AND CORRESPONDING BAUD RATE CODE (EQUAL TO BAUD RATE * * DIVIDED BY 100). BAUTAB DC.B $11,01 110 BAUD DC.B $44,03 300 DC.B $55,06 600 DC.B $66,12 1200 DC.B $88,24 24 DC.L OUCHAR OUTPUT A CHARACTER DC.L OCNTRL OUTPUT CONTROL ENTRY DC.L INSTA1 INPUT STATUS (1 CHAR ONLY) >>B<< DC.L INCHN1 INPUT 1 CHAR ONLY, NO ECHO >>B<< DC.L BFLUSH FLUSH TYPEAHEAD BUFFER >>B<< **************************************** 00 DUART ADDRESS >>A<< DMODEB EQU 17 PORT B MODE REG DCLOCB EQU 19 PORT B CLOCK REG DSTATB EQU 19 PORT B STATUS REG DCOMMB EQU 21 PORT B COMMAND REGISTER DDATAB EQU 23 PORT B DATA REGISTERS DAUXB EQU 25 PORT B AUXILIARY CONTROL REG * INIT00 DC.B $99,48 4800 DC.B $BB,96 9600 DC.B $CC,192 19,200 DC.B 0,0 MARKS END OF TABLE *********************************************************** * PART 7. INPUT PORT STATUS CHECK. THIS ROUTINE IS TO RETURN * TWO THINGS: * 1. ZERO IF NO CH ********************* * PART 4. THE FOLLOWING LINE DEFINES THE BEGINNING OF THE ACTUAL * CODE AS BEING AT $0000. IT SERVES TO BREAK UP THE OBJECT FILE * TO MAKE IT EASIER FOR 'DEVICE' TO LOAD INTO THE CORRECT PLACE. ************************************ IALIZE PORT AND SET BAUD RATE INIPOR MOVE.L DEVADD(PC),A0 GET ADDRESS OF DEVICE DESCRIPTOR MOVE.B DTBAUD(A0),D7 DESIRED BAUD RATE LEA BAUTAB(PC),A0 POINT TO BAUD RATE LOOKUP TABLE BAULOO MOVE.W (A0)+,D6 GET NEXT ENTRY BEQ.S BNOTFD IF AT EARACTER IS READY, NON-ZERO OTHERWISE * 2. D5=0 IF NO CHARACTER IS READY, ELSE THE NUMBER OF * CHARACTERS READY. IN NON-INTERRUPT SYSTEMS, D5 SHOULD * RETURN A 1; ONLY IN INTERRUPT-DRIVEN SYSTEMS WILL IT * INDICATE A REAL NUMBER OF CHARACTERS IN INP !"#$UT BUFFER * PRESERVE ALL REGISTERS (AND CLEAR REST OF D5!) * NOTE CHANGES INTRODUCED IN VERSION 0003 : >>B<< * THERE ARE NOW TWO INSTA- ENTRIES, ALTHOUGH BOTH DEFAULT * TO THE SAME ROUTINE IF THERE IS NO TYPEAHEAD BUFFER ON THE * INPUT PORT: INSTAT CHHAN TAKES THE NEXT CHARACTER FROM THE TYPEAHEAD * BUFFER (AND CLEARS THE INSTA1 FLAG), WHEREAS INCHN1 TAKES ONLY * THE CHARACTER FROM THE END OF THE TYPEAHEAD BUFFER, AND CLEARS * BOTH FLAGS. *********************************************************** %APID SEQUENCE, RETURN THE CODE (WITH BIT 8 SET) IN D5, AND * ALSO RETURN THE ACTUAL KEY CODES (RIGHT JUSTIFIED) IN D6. ELSE * RETURN ONLY THE FIRST CHARACTER RECEIVED WITH BITS 8-15 CLEAR. IC0005 CLR.L D6 MORE05 LSL.L #8,D6 MOVE PREV CHAR LEFT BSRECKS TO SEE WHETHER THERE IS ANY CHARACTER * IN THE TYPEAHEAD BUFFER, WHEREAS INSTA1 CHECKS ONLY TO SEE * WHETHER THERE IS A 'LAST' CHARACTER AT THE END OF THE BUFFER * WHICH HAS NOT YET BEEN INPUT WITH THE INCHN1 ENTRY ******************************** INCHAN BSR.S INSTAT CHECK STATUS (CLR D5 LEFT BYTES) BEQ.S INCHAN WAIT IF NOTHING MOVE.B DUART+DDATAB,D5 ELSE GET CHARACTER RTS INCHN1 EQU INCHAN >>B<< *********************************************************** * PART 10. INPUT CHANNEL !&.S INCHAN GET ONE CHARACTER MOVE.B D5,D6 MOVE INTO D6 CLR.L D7 MOVE.B BAURAT(PC),D7 CURRENT BAUD RATE DIVU #$FFFF,D7 CONVERT INTO DELAY WAIT05 BSR.S INSTAT CHECK FOR NEXT CHARACTER BNE.S MORE05 IT'S THERE, GET IT SUB.W #1,D7 ELSE DE*************************** INSTAT MOVE.B DUART+DSTATB,D5 GET PORT B STATUS REG AND.L #1,D5 CHECK STATUS BIT RTS INSTA1 EQU INSTAT >>B<< *********************************************************** * PART 8. GET INPUT CHARACTER FROM PORT INTO !CONTROL. FUNCTIONS 0000, 0001, AND * FFFX ARE HANDLED BY SK*DOS, SO HERE WE ONLY ADD * 0002 = RETURN RAW 8-BIT CHARACTER * 0003 = ENABLE FUNCTION KEYS * 0004 = DISABLE FUNCTION KEYS * 0005 = RETURN A SPECIAL (DECODED) CHARACTER ********************"'CREMENT COUNTER BNE.S WAIT05 AND WAIT SOME MORE CMP.L #$FF,D6 IF NONE, IS THERE >1? BHI.S LOOK05 YES, LOOK UP IN TABLE MOVE.B D6,D5 NO, SO RETURN IT IN D5 BRA.S ICNTOK RETURN ZERO LOOK05 LEA TABL05(PC),A6 MOVE PREV CHAR LEFT NEXT05 MOD5 AND ECHO IT TO * THE OUTPUT PORT. IF NO CHARACTER IS READY, WAIT FOR IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS * THIS ENTRY USES THE TYPEAHEAD BUFFER, IF ANY >>B<< *********************************************************** INCHAR "*************************************** ICNTRL SUB.W #2,D4 CHECK FOR 0002 BEQ.S INCHAN RETURN RAW CHARACTER SUB.W #1,D4 CHECK FOR 0003 BEQ.S IC0003 SUB.W #1,D4 CHECK FOR 0004 BEQ.S IC0004 SUB.W #1,D4 CHECK FOR 0005 BEQ.S IC0005 M#(VE.L (A6)+,D5 GET NEXT TABLE ENTRY BEQ.S DONE05 IF AT END OF TABLE CMP.L D5,D6 COMPARE WITH WHAT WE GOT BEQ.S DONE05 MATCHES MOVE.W (A6)+,D5 SKIP CODE BRA.S NEXT05 AND LOOK AT NEXT DONE05 MOVE.W (A6)+,D5 GET THE CODE ($1FF IF ERROR) BSR.S INCHAN GET THE CHARACTER W/O ECHO BRA.L OUCHAR AND THEN ECHO *********************************************************** * PART 9. GET INPUT CHARACTER FROM PORT INTO D5 WITHOUT ECHOING TO * THE OUTPUT PORT. IF NO CHARACTER IS READY, WAIT FOR#OVE.L D4,D4 RETURN NON-ZERO IF ERROR RTS * ENABLE FUNCTION KEYS: {ESCAPE ;} ON ADM-3A IC0003 MOVE.L #$1B,D5 ESCAPE BSR.L OUCHAR MOVE.L #$3B,D5 ; BSR.L OUCHAR ICNTOK OR.B #$04,CCR RTS RETURN ZERO IF OK * DISABLE FUNCTION KEYS: {ESCAPE >}$) BRA.S ICNTOK RETURN ZERO * CONVERSION TABLE TABL05 DC.L $00001B30 F0 INPUT CHARS: {ESCAPE 0} DC.W $0100 RESULTING CODE DC.L $10001B31 F1 DC.W $0101 RESULTING CODE DC.L $00001B32 F2 DC.W $0102 RESULTING CODE DC.L $00001B33 F3 DC. IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS * NOTE CHANGES INTRODUCED IN VERSION 0003 : >>B<< * THERE ARE NOW TWO INCH-- ENTRIES, ALTHOUGH BOTH DEFAULT >>B<< * TO THE SAME ROUTINE IF THERE IS NO TYPEAHEAD BUFFER ON THE * INPUT PORT: INC$ ON ADM-3A IC0004 MOVE.L #$1B,D5 ESCAPE BSR.L OUCHAR MOVE.L #$3E,D5 > BSR.L OUCHAR BRA.S ICNTOK RETURN ZERO * ENTER AND DECODE SPECIAL CHARACTERS. FOR EXAMPLE, ON THE ADM-3A * {ESCAPE $3X} IS FX. WHEN SUCH A COMBINATION IS RECEIVED IN A * R*W $0103 RESULTING CODE DC.L $00001B34 F4 DC.W $0104 RESULTING CODE DC.L $00001B35 F5 DC.W $0105 RESULTING CODE DC.L $00001B36 F6 DC.W $0106 RESULTING CODE DC.L $00001B37 F7 DC.W $0107 RESULTING CODE DC.L $00001B38 F8 DC.W      +$0108 RESULTING CODE DC.L $00001B39 F9 DC.W $0109 RESULTING CODE DC.L $00000000 IF NOTHING IS FOUND... DC.W $01FF ...RETURN THIS ERROR CODE *********************************************************** * PART 11. OUTPUT STATUS. RETURN ZERO1***************************** OCNTRL LEA OCTABL(PC),A6 POINT TO TABLE CLR.L D5 OCLOOP MOVE.W (A6)+,D5 NEXT ITEM IN TABLE BEQ.S ENDTBL WE'RE AT END OF TABLE CMP.W D4,D5 CHECK IF ITEM FOUND MOVEM.W (A6)+,D5-D5 GET OUTPUT STRING BNE.S OC7DC.W $0011 MOVE CURSOR TO (D5,D6) DC.W MOVCUR >$FF !!! DC.W $0000 MARK END OF TABLE DC.W $0000 MARK END OF TABLE ******************************************************* * PART 14. NEW IN REV. >>B<<. WHEN A TYPEAHEAD BUFFER * EXISTS, THIS FLU, IF OUTPUT IS NOT * READY, NON-ZERO IF READY TO OUTPUT NEXT. PRESERVE ALL * REGISTERS. IF NO HANDSHAKING IS USED, OR IF HARDWARE * HANDSHAKING IS USED, THEN SIMPLY CHECK BUSY BIT. *********************************************************** OUSTAT BTS 2LOOP NO, SO LOOK AT NEXT CMP.W #$FF,D5 MORE THAN ONE CHAR? BHI.S OCMORE YES, HANDLE IT DIFFERENTLY BSR.S OUCHAR NO, JUST OUTPUT IT OCNTOK OR.B #$04,CCR ZERO IF SUCCESSFUL RTS ENDTBL MOVE.B D4,D4 NON-ZERO IF FAILED RTS OCMORE LEA THEB8SHES IT AND CLEARS BOTH INSTAT AND * INSTA1 FLAGS TO INDICATE THAT ALL IS EMPTY. ******************************************************* BFLUSH RTS IN THIS CASE DOES NOTHING >>B<< ******************************************************* * THE END. L-T #2,DUART+DSTATB CHECK TX READY BUT RTS *********************************************************** * PART 12. OUTPUT CHARACTER FROM D5 TO OUTPUT PORT. IF NOT * READY, JUST WAIT FOR IT. PRESERVE ALL REGISTERS (INCLUDING D5) *********************** 3EG(PC),A6 POINT TO BEGINNING OF DRIVER ADD.L D5,A6 POINT TO BEGINNING OF ROUTINE JMP (A6) GO TO IT * RETURN SCREEN SIZE RETSIZ MOVE.L #24,D5 24 LINES MOVE.L #80,D6 BY 80 CHARS BRA.S OCNTOK RETURN OK STATUS * MOVE CURSOR TO POSITION D5,D69ABEL THEEND IS USED TO CALCULATE LENGTH OF * DRIVER. NOTE THAT THERE IS NO TRANSFER ADDRESS. ******************************************************* THEEND EQU * END .************************************ OUCHAR BSR.S OUSTAT CHECK IF READY BEQ.S OUCHAR WAIT UNTIL READY MOVE.B D5,DUART+DDATAB PRINT IT RTS ******************************************************* * PART 13. OUTPUT CHANNEL CONTROL. FUNCTIONS 0 4 MOVCUR SWAP D6 COL INTO LEFT HALF OF D6 MOVE.W D5,D6 ROW INTO RIGHT HALF MOVE.B #$1B,D5 BSR.L OUCHAR ESCAPE MOVE.B #$3D,D5 BSR.L OUCHAR EQUALS MOVE.B D6,D5 ADD.B #$20,D5 OFFSET BY 20 BSR.L OUCHAR ROW SWAP D6 MOVE.B D6,D5 A`A!nI#e<$1l l`I#eva^g ,g,7`fJ,fn"n gX.gP!I`"n g g(.g"4IBEIo6`g3fNu-zI#aܠg 7IS`|;B,-zB(B(aaJ(gI/000, 0001, AND * FFFX ARE HANDLED BY SK*DOS, SO HERE WE ONLY ADD * 0002 = CLEAR SCREEN (SEND $1A) * 0003 = HOME CURSOR (SEND $1E) * 0004 = CURSOR UP (SEND $0B) * 0006 = CURSOR RIGHT (SEND $0C) * 0007 = BELL (SEND $07) * 0008 = CURSOR LEFT (SEND $ 5DD.B #$20,D5 OFFSET BY 20 BSR.L OUCHAR COLUMN BRA.S OCNTOK RETURN OK STATUS OCTABL DC.W $0002 CLEAR SCREEN = 0002 DC.W $001A SEND $1A TO OUTPUT DC.W $0003 HOME CURSOR DC.W $001E DC.W $0004 CURSOR UP DC.W $000C DC.W $0007 BELL ֠fIv5C$!IJ(fI#a~f|;|I"z&nf ŷf!INu!I ,gI7I+`NfB(".Nf|NuIJC&z$FF !!! APPEND is used to append two or more files together to make a new file. The syntax is APPEND <2 or more input file-specs> The very first file-spec must have an extension; the remaining file-specs default to the same ex !"#$tension as the first file if no extensions are given. Note that, generally, all the files should be the same type. An error will be generated if one of the input files is missing, or if the output file already exists.Invalid file name.Last $` .W.@Af R @Gp$<[$H$Q&A\QE$C`-I/.C |7 . f|72(g A(1|((g A1| aRBXOD | Nua(/XO`H$/):)6)2).)*)$) 1)))) ))((((("2 (~unlktsttrapvtraptasswapsvssvcsubxsubqsubstopstsplsnesmisltslsslosleshsshisgtsgesfseqscs)! -@,h(h)!i(i)!AAA B@@B@B@BB@@BA @"@ @H@ @  *@   C +M@ !CAAAA@ @ Hbbbb p,@0,A,APp,@0,A,ANt%NsNwNuaaT@TU@UW@WQ@Q\@\^@^R@RT@T_@_U@US@S]@sccsbcdrtsrtrrteRtdroxrroxlrorrolresetpeaornotnopnegxnegnbcdmulumulsMovesmoveqmovepmovemMovecmovelsrlsllinkleajsrjmpillegalextexgeordivudivsdbvsdbvcdbtdbradbpldbnedbmidbltdblsdblodbleAbbT&U&W&Q&\&^&R&T&_&U&S&]&[&V&Z&Q&P&X&Y&   @"@ @ |%@/@@, *@  < /@, +M@ !C/@@,AH,, ][@[V@VZ@ZP@PNr%@"@@H@@/@ @ *@ /@ C+M@!CAAAA/@@@ @ QHQ@@Q@Q@QQAQ@@dbhsdbhidbgtdbgedbfdbeqdbcsdbcccmpmcmpclrchkbvsbvcbtstbsrbsetbrabplbnebmibltblsblobleBkptbhsbhibgtbgebeqbcsbclrbchgbccasraslandaddxaddqaddabcdNVHKI,<G~*<p(<Ed !"#$v n.(*? UJg TR"UR`*? UJg TR"UR`*? UJg TR"UR` n * UJg TR"UR`*? UJg TR"UR`Hy" /Hy/NOHy"HyHyHy?NOHy"Hy,HyHy?`NOHy"Hy#Hy%R`jJg lJg # 3l #3 9# . @ -P-D-D-| nR"nR/ nR _Jg`Hy. np @ <#Rg .T` ./NNOHy"Hy-HyHy>NO*>( UJg TR"UR` TR1*> UJg TR"UR`Hy" /Hy/NOHy"Hy+HyHy>TNOHy"Hy3& .oV-n-nRA-H-| nJgSJg nR"nR` n"nB`(-|=:A-H nR"nRJg`-D-|, nJg nR"nR`A-HS nR"nRJg` .䰮gJg .l .D`!,RJg`BS  nRrƒ-A A2H-@ g f R l nR .` nB 0f2J9g*-|-| nR"nRJgF` @f,  nRr8ƒ-A A2H @gS#v#v!HyHy> NOHy"Hy*HyHy=NO(*= UJg TR"UR`*= UJg TR"UR` TR3*= UJg TR"UR`Hy" /Hy/NOHy"Hy-HyHy=tNO*=D( UJg TR"UR`HyHy/NrO ' . @ ".]Ё-@-|,-n nR"nRJg`Hy. np @ <#Rg .T` ./N50) -ofile-name: specify object file name 0) -mx: set processor type (680x0, default 680 -l: suppress formatted assembly listing -hxx: set page h 8-n nJgR` .-@ l ~L?N^NuS .S @ .ff npNLDFbDJlDPsDRwDT`@` `~`U l~`U-n .Ю-@ @P nB-|h .-|Ю-@ @-P-n nRp>`NVHKIHyNVXOHy"HyHyHyQ|NOB-|B-n n . @-PJgh .mF-n-n n"npfJg RR` n"npb`-n-n-n R`nJgHy3eight (default 66, >23) -f: suppress even address alignment -d: generate debugging output -b: suppress generation of object file options are as follows: [+/-options] source-file-name [object-file-name] Usage: 7.1 CSC 9@ nRp@p..fJ.g`p..c-nP np..f 90*f npf~` n0(HNLEEE@E EEpf~`d`\p @fpfp` ..`?NVXO* UR n/(/Ns~PO* GR ( TJg UR"TR` UR Hy"/HyHyNO . @"n `L?N^NuNVHKz U"Up(f Up(0-@g ~L?N^Nu Up(0-@-@ .l-n4 68010 Assembler Version "@>@@NVHK>,<IvGlE*<f(<@v .]@J.g .D-@`B TPJ.g . fBp.L?N^Nu E"EB) p) JfR . b~` .,fRJ.g.` .'W :2Jg agp` ..`Jg igp` ..`..`Jgp..c-n-n nB . n B n` ".-A AЈ-@ @-P-n nRp@ nRp@p..fJ.g``zJfR nppNLFaF@`-np U afPP .n .R @ ` U (/fp` U (-fp`p.`nNVHKv W-@JgB-n-U nJgn np/HyQ`N`Z o2p ".0-@ am6 f6RR.`*.`/NXO-G f^ Ѓ// Nd>PO o n R  n R  o n R  n .`0 fp`p.`NVH|_-n-| .-|@Ю-@ @-P nRp@ nRp@p.. < n .@..L?N^NuRR` n"npd`-n n-P`j-U .H-@ѕ m> <й/NXO-G f~` .# .Ю*-n n n!n  n .@-n nR"nRJg`Bn,-n/./.NPO Ю-@`|JW..`2NVHKv|'B|J.gX UpfR Upg ..L?N^Nu yv  d..` . URr-@S.` Upg~`R..`NVH,<*<xKlB-n !"#$C-M lR nRB` 9$gR$HyBHyNYO n0(H-@/HyNPO-GF n(HHgHyfNXO-G l -|`0HyNXO-G l -|` n0( H-@p9IrO /9$/ \Ns~PO L"LFF`Bl ll nRRl`/./. / NcO -G-L$ .g nR` ?o rg-|l f-|Bl nJg" ll nR"nRRl`*r ll n O Jf p9g B .NLZhZlZlZp]p]` cB DBBJg j CpNLZ0Z1["4["6\ .Д n/./.  FА/NcO J g&B .l nRD-@Jg n(HH".f n(HH-@찮g .f .g~ n(HHf^JgV n(PRHH".f> n(HH-@谮gz .f .ffSR\`-|`SR\`(-|J9g /JRRl`-|Bl nJg" ll nR"nRRl`h ll nRRl` .hShJgJ UpNLU UU URBh` U nR"UR`S .g npgR n Hy" .R/Hy/ N!P p9` F .ѐ D .ѐ .є`J f D .ѐ .ђ`Jg .l n Jg n.B .l"F QRBR` D .-@ѐ .Вє .l"F QR"nR `B$ 9"o`RR DR`Z n JfE.NWXOB/ HyNSvO ~L?N^Nu n0H-@ .@ n(HH-@g 90*g2 ./N{XO-G m-n`/.NWXO`HyNWXOR .#(J9g/9(/ HyNSvO ..`HQ`.0123456789ABCDEFHOabcdefhoKO g g gBNWXO`tNVHKIJgJ9fL?N^Nu*Jg" .ѹ 9̰m UR (d TJg UR"TR`#/9R/9/NrO *J9g UR ( TJg UR"TR"QN .-|Ю-@ .l n Jf RR` .m D$ ѐ` 9".-AҔn0Jg| D .ѐ .є .l"F QR"nR ` F-PS nJf6-|S .Rm nJfR` o F . .F Value Symbol "QBQNVHK|I4GBEB9&p9&"oS` l "DЁ(-FJg lp`  @ -@JgP-|-| .SJg,/.NXO-G g nR .  g` nB .g L` UR UR Hy"/HyHyNO`(NVHKIG|p9g f&`Jf f ~L?N^Nup9~@gHHyNVXOB nJgR`/"/.HyHyNO-FS .mHy#R .ђ` 9".-AҔnvJ g" .l2"F QR"nR ` .l"F QRBR` D .ѐ .є`v 9Z DА"9$g` DB JfJgl CpNL]0]1^& SRS SR"Cp-@r3Hy Go &  @B  @R`Jg /.NbXO m  @BS& l6#r yr yrB(R9p9 c .L?N^NuB  @HydHyNPO f#.9`B p9(#(#($(# ~BMNVXO(*d UJg TR"UR` np @* UJg TR"UR` TR /"/HyHyNO`j&p9~@gHyNVXO(*d UJg TR"UR` 9* UJg TR"UR`*d UJg TR"UR`$S.rє//NsO & X# yJg SR"yR`Hy <r9DЁ//NsO & GR -S EJf/9/.HyHyNO ".gf E `ZBJf&JVg ]-@JgJg" єB HBHy NYO `l~`jNVhH| KIq-L-yh%h g/./. /.NYO p9~@g2 g f g BNWXOL?N^NuJ9&g f&p9&/NVXO gDHy 9 @// NNHy 9 @//NrO ( GR /"/HyHyY2NO` JgS Sp".DЁR~`Fd"JNVYNVHKnIJGE,,<N*<(<V&<|JgT.l"F QRBR`B U"CpйF"@)0 U"C 2fp`p-@  f U @ RѮ EJf./9/.Hy/NO ".g E Jgx U 95|dp!`p"Jg ѹZHyZ/RNd>PO/ /ZNd>PO EJf./9Hy Hy     U/NO g E BJf^ 92|dpK` C 2f <` <#  9/NXO*f EJf E ` gb 9$ DА#ZB CpNL`0a1az2a/9Z/XNs~POHyZHyNd>POp9A[FPO ".R貀orJ9g\/./ /.NSvO B .谮l nR"nR` l nRB`-|-|BJg, g /.NWXO .ѹ( .Ѯ`&J9g.Jg/./ /.NSvO B/ HyNSvO L?N^NuNVHa b` n C"yvRvR ` n CBHnNHXOJg .؁` k fp9f .؁`BHyN@PO fAf-h . NLl~elflglhliljm .ܰfz .l:`p .ܰV(A(A( F# R R`^/9Z/TNs~POHyZHyNd>POAp(A(A( F# R R` U 9Z@ U 9Z@ F#R R`HyZ/RNd>PO Fa#R R` Cp \K$8|BJ gp`R . -@  f S . `p-@  o R*BBHyNYO J9gJ9$gHy/.NprPOJfBHyN@PO-GfAfB-PJg f/. Af/NPO-GJ9gTHnHylNd>Pbmd .؁`Z .ܰoN .؁`D .ܰn: .؁`2 .ܰl( .؁` .ܰg .؁`HyNWXOHy/.NiJPOL?N^NuNVHKIGEB ? l( yv  b` n "yvRvR ` n B m|(*s UJg TRWNLa0a1cD2cd& SRS SR"Cp-@7 SR0 SR .r5Hy`HyNd>PO/9`#/9Ns~PO .ѹ yJg SR"yR`HyJg <` <Ar( Ar( A ]OHyHylHyNSvO Jg .op9|NLh"0h"1h42hH4hH6h^-L .-@`b-| .-@`L-|@ .r-@`6 l-| .r -@`-| .r -@Jg"/.BHyNYO Sc"UR`* UJg TR"UR` TR Hy"/HyHyNOHy"NnXOHyN XOR  @Hys/ NPO f|(*s UJg TR"UR`* UJg TR"UR` TR Hy"/HyHyNOHy"NnXOHyNXr( Ar( //NsO & GR -@ EJf/9/.Hy/NO ".g E ` U 9`@ U 9`@( C 2g(Hy`/RNd>PO U"CpйF"@) `g0 EJf*/9/Hy/NO " ^ .ѕ` .".S-@Jg/.BHyNYO .ѕ~L?N^Nu .ѕBBHyNYO ~`J9g&HyNWXOBHylHyNSvO ~`NVHK~IJfJ f . NLiii j j ?j2@jPOHyHylHyNSvO ~`HyNWXOJgBHylHyNSvO ~`NVHK -U-|B  f *` .*Jg d fdB  l, yv f$-|B .$  l$BHyN@PO V-@`DJ9f.p9~f gRBBHyNYO + My p9fnJg ~L?N^Nu . ^ MJ( V぀-@//./5HyNFOJf#~ !"#$g.9`JgHyNWXO`HyNHXO(gr T-h Tp(J gr`rgHyNWXO`NJ g .g>HyNWXO`. T!u-h MJ( g T(`HyNWXO  lHJ9g@  fJ9f.HnHylNd>POHyHylHym-p-`p0 n(-/./. NypPO`\/./ Nd>PO .e g p. f@ nJ( g6-: np"n")$ԮЁ!@ /./. NyPO` nJ( g" n R  n R -|p. f .p-p-`p7Ю-p sN2N3V0V145/ NsXO/ HyNtNPOL?N^Nu/ NsXO/ HyHyfNu$O `/ BNtNPO/ HyNzPO`/ BNtNPO/ HyHyeNu$O `/ BNtNPO/ HyHyjNu$O `h/ BNtNPO/ HyhNSvO MB 5@ ~`NVH .Ю-@ @BS .m< n/. Hy N\PO 0/. Hy NFPO-G `..L?N^NuNVH .Ю-@ @BS .mB n . -@ l .0` .7 . -@ `..L?N^NuNVn- n R  n ..`r .f f~`dp. f~`Tp. f.`D np"ҮЁ n f-:/./. NyPO` -;/./. NypPO`~`NVH n -h n lHyNWXO nl .Al .!tNzPO`H/ BNtNPO/ HyNtNPO`(/ BNtNPO/ HyNtNPO/ HyNyPO`/ BNtNPO 5 n 5 lHyNWXO 5@~`/ BNtNPO/ Hy NzPO`/ HyHyeNu$O -G l..`p/ p".Ё/HygiHHy . r//.NsO -GHy/. /.NsO L?N^Nus Bad library file r Library file nest error NVH n-h m oHyNWXO .、9lp9lL?N^NuNVH nlJg "n p)` "no@~L?N^NuNVHKl n -h n lHyNWXO n (af np n"n p) n J(g n n .@~L?N^NuNVHKl n -h n -P f 9$T`0 f/. /.NzPOL?N^N"uNu$O -G l .` .Ю.`6/ HyNzPO/ HyHygNu$O -G l .`R ..`/ HyNtNPO/ HyHygNu$O `/ HyNzPO/ HyHygNu$O -G l .`R ..`/ Hy NzPO/ HyHygNj p)、p~L?N^NuNVH n -h .< fT-nB .@ . d8 .r. Agp. D @ (PO~`NVHKfIl6|EB{ .NL}}}}~~6~V~v ~ ~  h ^$wu$O `Z/ HyHyfNu$O `>/ Hy>NtPO/ HyHyhNu$O -G l .`R ..` 5gHyNWXO 5@ f/ HyHyfNu$O `/ HyHyeNu$O -@l .`R ..`x/ HyHyjNlp. f np(-p-`p n(-~`R .e g p. fR nJ( gH n"ni n"ni np"ҮЁ -;/./. NypPO`p. fp nr(-@`p( n(-/./. NyPO`p. f p nr(rr (D`&B !"J#^$r%&'()(*l+,-.&/ xu$O `\/ Hy>NtPO/ HyHyjNu$O -G l .`R ..`/ HyNtNPO/ HyNtPO`/ HyNzPO`/ HyNtNPO/ Hy NzPO`/ HyNzPO/ HyHyfNu$O -G       y l .`R ..`T/ HyNtNPO`@/ HyNtNPO`,/ HyNzPO`/ HyNtNPO/ HyNzPO`p,-@ 5r$.FgJgp` <}/NWXO 5,p,~`/ HyNzPO`/ HyNzPO` JW( p( f4 nJf" n lHyNWXO n .`/.NXO`HyNXO-| gHyNWXO`R 9 @ ` np9΁( /9$NXO` n ` n| /9 Jg*.`d*.`X-|`N-|`B-|`6 NL   *.``>*.`*.`*.`*.`* .` zv/ HyNzPO/ HyHyfNu$O -G l .`R ..`2/ Hy NzPO/ HyHyfNu$O -G l .` .T.`/ BNtNPO/ HyNtNPO`/ BNtNPO/ HyHyfNu$O `/ BNtNPO/ HyNtNPO/ HyNyPO` 0NXO`p n .`HJf n .`4HyNXO gHyNWXO n!m n f"nJ)g <` <` f <` < .` n HyNWXO`NVHKI ." A"m S @  x TR >f* .`` TR  <"' \n~`p n @ nE URpNL:)T,V U +fR~b`(.<``F.` n| n|p URpNL),h~`N NL    ~   ab,@@HyNXO n f~` n f n!m~` n!m-h np9(( n 2,> > > H NL   * .``V*.`*.`* T .f

UR )g.`. n @ np(fp`p.` .`.`SN NL"2BRbr  !"#$ ~` n @ nE~`x n @ nD~`` n|c~`P n|s~`@ n|u~`0 n|D~` n|S~` n|V~` n!T~`R.```NVHKz|IGd*<xcv B-|  Ur(-@ G n"n!i n  .WS.L?N^NuH|(/@gt oH"o< (fHyaXO!G!GDlL&HH$hRS g f 0( @f (f/aXOSf0( @ fR`.LNuH$/DS"o@"/< v .찄f rf -|` ..L?N^Nu ff .谄f -|` Up(0-@g..` Up-@  Ur( A2HNL 2  f(< 3(< 3RQ(92`PA(|"XO& g f .L?N^Nu . V/HyaPO,l-F/.HyaPO//./aFO *l& "Ёm "$҂Ё @ n.`NVH/./. aPO*/aXO&(JgS m DRB`.L?N^NuH /a$a0D.LNuH H o< (fHyNXO!G!G fp0( @gHy"NnXOHy"NnXO0( @gp`0<H//((HH/NO fh ~LNu!hS"hR`NVH n0( @g< n ( n-@o&/. n/( n(HH/aO - aXOJg~` n"nB!i nBh ~`H o<C`-ItgQ 2<pI"/>6HHCo Both drive numbers must be given, and must be different. (If there is only one floppy drive on the system, then use FTOH and HTOF instead.)CAUTION! DESTINATION DRIVE IS A HARD DISK. Is it OK to proceed (Y,N) ?Incorrect drive  Y Y Y Yi  Y   Y i  Y   Y $$$$$$$$ Y$ Y Y$ Y Y$ Y Y$ Y    Y    Y  Y0P*a#3003s33s3#(#*a# P 5e ( #   s  3         Y(  і (s) specified.Backup from drive  to drive OK to go on? Destination disk is too small.Error in reading source diskNot enough memory available; BACKUP aborted.Error in writing destination diskError in verifying destination diskFinished backing u  : : : Y Y Y Y : Y Y Y Y  Y Y Y Y  Y Y Y Y s s Ys3ss3s Ys3ss `0eBJg<."bZGE nFA<0P<gB0e6Jg2."b,E :g" nFA<0PgI%5)1 YgId5Iz5:03I}6:y03Ix5) YgI`zV9|"f@B2,'AI<z3f*B2,g e:p  tracks. on track and sector   3sssss00000000 dI&5I=5I5B+ 4|0 C :3+ +9 c|0 A'H(zzz"f :f| z#gIa::gF+ :f c z~(`f*(ag$":n`'A`eA5C IJ'L(z>z5z0"f :*f| z ` N*n ?gRC$H&I f* f& f" f f f f f|I5RfI5I5BEEP adds a beep (bell) as part of the prompt. The correct syntax is just BEEP You may cancel BEEP with NOBEEP.SK*DOS: BEEP is no I00I000000$00$00 Y00 Y00 00 005e *a #  #*nF-:B-:g*nFD:I}a(z`*nFD:K`B<<?ޝQ)G:ְ:g.+ :f c(z,`f,ag ``dJgC I'L(zzz"f :zf| zn#fK`B<<?ޝQgIal4(zF:@:7g.+ :.f c(z&,w &enabled.Sorry ... can't enable BEEP.  !"#$ ` N(N#en<$f0I5I?6,&h #g(Hf  g`7  ,fI5) YfI55) Yf(Hf`I5BUILD is used to generate short text files. It is not intended to replace a text editor, but is useful in generatin 4&nF .> PSe8-1  g<.g4 ?g, Sg& Ng0."b `K CACHgР-1 Ef-1 Wf*n  g ,gBB0  b ҆` e dA t up first and CACHE second. ************************************************************ * CAUTION! WARNING! DANGER! * * The cache MUST be flushed each time a new floppy disk is * * inserted into a drive or else CA g test files, STARTUP files, and the like. Within a line, some editing is allowed with backspace and control-X, but once a line is entered no further changes can be made to it. The correct syntax is BUILD Start typing in your tex  .@(elef@I}5(B8I6) Yf.. B-@*@-@, *BdC"CACHC QNugF$i"* CACHg iNug,$i"* CACHg iNug$i"* CACHgtC" <'AC 8 DNug ! CHE will keep supplying * * data from the old disk and - worse yet - will write on * * the new disk as if it were still the old disk! * ************************************************************The specified drive doesn't exist or ist, ending each line with RETURN. At the end of the text, enter a line consisting of only a # (pound sign). .That file already exists ... do you wish to delete it? ARE YOU SURE YOU REALLY WANT TO?  C8 DNugC03AP#AR3|CAdK CACHf n &nFG," GbH|#*z*mFN LfDG#,HK0܍*F.,pf.,|f.,f ., gD.,p*.,|+G.,+G.,+G B,H*zZ*m*UfBdB,HHF<,"*z.*m.,",# `dI<5A"((B8IL5(B8A@B.gIX5(B8I6(B8 eҠIS5I5I5I5IT5I5IY5I5I#5CACHE is used to set up a disk buffer (cache) which stores in memor # OK? The specified CACHE disk size is too big for your RAM.Bad CACHE size - too small or too large.Cache memory size: Total cache capacity in sectors: Cache sectors that are empty: Number of cached sectors for physical floppy drive : CACHE HA ڍ,E&," Gf2,HK܍*F.,p*.,|+G., y all data written to or read from a floppy disk. When SK*DOS subsequently needs some data already previously read or written, CACHE supplies the data from memory instead of actually reading the disk. The syntax is either CACHE NEW S AN INVALID ENTRY! Suggest rebooting.COPYRIGHT (C) 1987 BY PETER A. STARK STAR-K SOFTWARE SYSTEMS CORP. +G.,+G B,HHF<,"*z*m.,",#ڍ,E& to erase (flush) the cache of data for the specified disk, or CACHE STATUS to print a cache memory status report. CACHE may be used with RAMDISK, but only if RAMDISK is se `` ADFMNPRS*n ?gK*K*a(aR:gKKKa`A[K_PfA^KBfNu n +g( +f       -(aHgNABKf-e  9b 0K`_AKݱg f(`I5`:fJ<:g:g:g :g<K:g<OKdNuaT4:g(NfaND` zpag .e 9cX:Ug0:;glI>5 :x g jK`<Nu<-3Nu.f`("HB(a0aB)g m0< AA<a aB)  ba*<8Nuaa(:Nu n| ( f| -H<A  Zo NuFile# Name Type Begin End Siz `0Jg޺."bE=|"(Ng I:5(N72,6<B=C">Gf.# e >.`gBGf<(NgI'5.03<-3aNA`><B0ԀQcC<.HgB<N>OcI5(B<B8L*<8<-3*<8NuI5CHECK )_ Eg`|K6*Nu-z,Nu(NKJnjK8BK`aԠ-0EKB-  gz.gt  gn ,gh .f̠- *g Ae zb.!eK-  g ,g /g  g.g`-` nB .Nua6:KgaK]BKV;(N f K e Date ProtFiles=Total=Biggest=Free=wDrive:  Dir: Created:  Disk: -E?JanFebMarAprMayJunJulAugSepOctNovDecBADCAT is used to print a catalog of the files on a disk. Various options may be used to catalog just some files, or to pr SUM is used to read an entire disk and calculate a checksum of all the data on the entire disk. This can be used to determine whether the contents of a disk has been changed. It is particularly useful in verifying the integrity of the RAMdis \BUaVfI 5B.B8:VgI63</3I6IBEa AB.L.aIӠ6AaĠ4:gIX5KBB: g jK`afKB`"a,g.e 9b-d`aeaaf(N f|afv4I"5A8aVI"6A|8aHI 6B int in different formats. The general syntax is CAT <+format> All of the arguments are optional, and mean the following: <+format> option letters (preceded by a + sign) are A Alpha sort N Non-existent (deleted)k if the computer has been left unattended for an extended period of time. The syntax is CHECKSUM Error in reading system information recordError in reading drive-track-sector Checksum =  8:\B8</38:ZB8a6I6A8(B8a :gI5`a*`(N|74. g.NuK AapB(N fKag .g`.gKU,j|-:f"`0.KUe:zK:KUA:mfKt*ATKn**zdAF< files D print file Date P Page output format F print File Number R Repeat M show Maximum display S print file Size is optional and specifies where to look for files. Its format is either a drive-number or drive.dir/  4` .W.@A P RG&&& @p$<[$HQ&A\Q#"4C`-I/.aBXD | Nua\(/OJgI594(/`exit -- H$/<Թ"4ZC` is also optional and may consist of one or more full or partial file names and/or extensions to be searched for. For example, CAT +DF 1.A/ .CMD AB would list al l nR`Hy/./N -E n  g n  f nR` nBB-E ng nHHfR` ng n 'g n "f nHH@R`F .R A\ ng@ n.f nRB`( n ,f.HH ~::g 8.<8a>:"g Aaa2:g$<W<a<D<a<C<a`:aNqH< 3LNu(N Nuf< g f<-3fNuKBA<Bfa&gI#`2<A-e.!ej<NuKS l files on drive 1, directory A, whose names begin with AB or whose extension is .CMD, listing their dates and file numbers. (* inside a match-list file-name is a wild-card character.) f nRB`R``L .A\BA\//.aPOaL?N^Nu"4n"}  !"#$ #NV  HN?FNI@N?FJ9FfN%BN&XO`L?N^NuNVHHy+0NF0XOHy+ NF0XOHy+NF0XOHy*NF0XOHy*NF0XOHy*NF0XOHy*NF0XOHy*NF0XOHy*NF0XOHy*NF0XOHy*vNF0XOHy*fNF0XOHy*RNF0XOHy zf(<4&<B o/. HyN$PO`Hy5&HyN$PO#HyN XO#z#zv#vrJg2N?F/9rNGXO/9vNGXO/9zNGXO#J#B9 B9 B9B>B6B9B H-| <"-@ l/.NXOR`L?N^Nu ((((( H   *BNF0XOHy*2NF0XOHy*$NF0XOHy*NF0XOL?N^NuNVHKI*GFE,<Hy*NF0XOHyNF0XOHy*NF0XO9HHN@D/NmXO-G".g n`Hy*NF0XO .N|( H(0Q(6O(@ !bBB9&BfBj##@#0#JBRB9DB9B9B9 CBB9B9B9B9B9B9B9BH D & D #B9FHy5$HyN PO# 9fvJgHy5  &(*,  V(TK(G(T(D)E)?).U)8Y)@R)^X)fS)A)F)C)M)N7HyN=XOHyN3XO`N7N7V`Jf`NK`JgNBB9B2B:B6B>Jg "NF0XON?/Nt/NpPOHy5/NPOHy/NPOHy5/N PO# 9f L?N^Nu/9Hy(/NEZ JgJg /NF0XON?Hy5NF0XOB n  o .A"nR` .ABJg,Hy5 NF0XOA/ 4<DFNV^`x   /9N@XO#zv#vr`VNJ fB`@B:J. g L?N^NuN?FNI@` FJg FB` F `JgB``JgB``No*`NwBJ. fNI@`NBJ. fNI@ #NF0XOHy5NF0XOB ng\R ngL n  g n  f`, .RA"n .ABR`Jg8 .ABHy4NF0XOA/NF0XOHy4NF0XOAHH/NmXOGJg0Hy4NF0XO.HH/N?XOH   "*2: `|NMTJ. fNI@`dJf`ZN6`PJf`FN6B9BJg/9N@XO`. HH/NTXO```* CHOICE > <H-HANG UP PHONE O-OS RETURN Q-QUIT PROGRAM U-SYSTEM CALL M-MODIFY OPTIONS E-ECHO TOGGLE  $y4NF0XO.HHN|/A0B0D1I2K2L2P2M2R3S3&T3nU3X3A/NnpXO`JgHy4NF0XOA/NXO*Jg(Hy4NF0XO/NFXOHy4NF0XO N|  BHJRZbjrz% NVHpЮ @//.N+LPON3Hy+FHyN$POHy+BHynN$POB9B9J9g 9HfB9 C-CLOSE BUFFER V-VIEW BUFFER F-FLUSH TEXT BUFFER K-KILL BUFFER A-SEND ASCII TEXT G-GATHER ASCII TEXT X-BINARY SEND MODE Y-BINARY RECEIVE MODE S-SEND MODE R-RECEIVE MODE T-TERMINAL MODE V 9.0NVHKZIA,GBE 0,0X00 `00%0K0*D`@*U`6*`0*`&*`*`*`*`#`AHH/NmXO Ff CB` C`pAHH/NmXO Ff J.g DC/ NXO        `BpAHH/NmXO RfA/NnpXO `pAHH/NmXO SfA/NnpXO `pAHH/NmXO Tf"A/NnpXO2`pAHH/NmXO Wf`fpAHH/N /NfPOHyN=XOL?N^NuNVH 9>n 96o N6`~J9gtHyHNF0XOHyHNF0XON@D/NmXO-G YfN6Jg/9N@XOJgHyHNF0XON?FBN zXOL?N^NuNVH . f L?N^Nu . "```NVHHyHHNF0XOHyH.NF0XOA/NEXOAHH/NmXOG .NgN6/9N@XOB9#zv#vrL?N^NuNVHB .".lfB .0lLB .4l2NBJg9HH.L mXO Mfh.HH/NmXO N|2A2C2U2``````A/NnpXO``A/NnpXO#JA/NnpXO`A/NnpXO`zpAHH/NmXO N|3V  m~` . f~` . f~` . f~` . f~` . f~` . f~` . f~`z . f~`j . f~`Z`TNVHJ9gN=$HyH/.N PO-G .f L?N^Nu/.N@XO~``NV #?N^NuR`R`R``NVHN@dJg NBZ`L?N^NuNVHB9N@d f NBZ -@..L?N^NuB .lB .0lrB .4lXNBJg9HH.`N@d fNBZ -@ T3jJgB```2A/NXO& do&d`F``2/9N@XO`NVHHyN3XOL?N^NuNVHHy 9J/NfPOHy 9J/NfPOHy 9J/NfPO/9 9J/N HKBB .l.J9g n ` n BR`BJg L?N^NuJ9gJ9f4  $..`xR`R`R`l9HH.`HNVHB lHy N?XOR`Hy N?XOL?N^NuNVHNJg ~L?N^Nu``NVH~L?N^NuNVHN?Jg. HH/NXO. HH.L?N^NuNVHB9 fPOHy 9J/NfPOHy 9J/NfPO 9J/NzXO-G 9J/NzXO-G 9J/NzXO-GL?N^Nu4 baud rate is in case B: loc: second: first: r.NO PROFILE rprofileNVHK  f(J9g .RЮ @ .-| n .R`h..`NVHJ9gГ#> 96Д#6#v#vrL?N^NuNVHL?N^NuNVHN5.HyINF0XO/96NFXOHyINF0XO/9>NFXOHyHNF0XOB:B2B6B>HyN=XOL?N^NuNVHHy 9J !`HyH/.NPOJf~`HyH/.NPOJf~`HyH/.NPOJf~`HyH|/.NPOJf~`dHyHx/.NPOJf~`FHyHt/.NPOJf~`(HyHp/.<NPOJf~` HyHl/.NPOJf~` 'f`$ f` nR .` .l .f L?N^Nu nRB..`NVH 9J/NzXOG.HH.L?N^NuNVHN?Jg49HHN?f~L?N^Nu````NVHKDJfJ9g  !"#$ (BHH.L?N^NuJ9gBHH.`N@dJfBHH.`9HHNBZ-G".fHH.`BHH.``N@dJfHH.`f9HHNBZ-G".fBHH.`49 g$9 HH".fBH .E MEMORY CAPTURE BUFFER IS STILL OPEN CHARACTER COUNT LINE COUNT ERROR WRITING TXT, DISK FILL? I@NVHKzI@B9 <"ҕЁ#p"ҕЁ#p"ҕЁ#B.HyTNF0XO 9 l,Hy 4l~ nzP. .R-@ . f l6Hy N@XOB l R`Hy N@XOJ9fHy N@XO| J9gHy N?XOBJ9&gHyN=XONBJg/N@XOB`J9g/N@XOB`z.H )H.`HH.``NVH-nS . o/9N?XO-G .m/.N?XO f,S nBHy N?XOHyN?XO` fHy N?XO`8 fHy N?XO` nR . nB`F .l .DD /TNF0XO9@HH/N?XO`9HH/N?XOHyTNF0XOJ9gHyTNF0XONPVL?N^NuNVH|KJgrHyTzNF0XOHyTlNF0XON@D/NmXOG .NfN6/9N@XOB`N6B2B:~L?N^NuHyTTN !5H/N@XOJ9g.HH/N?XO .Rйz @Bg<.g .f(DJ9g9HH/N@XO.@`z`N/N@XOBB9DHyN?XOHySNF0XO`NVHKrIvGzE|*<(<&<@ < C" *f L?N^Nu nRB..`NVHHyd/.NDPOL?N^NuNVHHy"Hyd/.NEZ L?N^NuNVH-nS . oP/.NtXO-G .m8 f S` f` nR .` .l .f L?N^Nu nRB 0F0XOHy`NEXOJ9`f.`Hy`N8XOJgBHy`NF0XOHyT#zv#vrJ "6Ё#p C"ғЁ# Dp"C"ғЁ (* EB.N@d f$ UHyN>XXO  Uf` URPJ9g o9HH/N@XOJf.HH/QFHN?XOHyN>XXOGJ.gNJ9fD o`4 UR. +..`NVH nRHH-@Jg/. /.NPO`L?N^NuNVHA,B nB nJgf n  g n  f. n  f n R` n R n"nRR nB` nB/.//9.N0 L?N^NuNVH 1g,/9rNGXO/9vNGXO/9zNGXOHyN=XO~`NVHKzBB-| 9r#:B .:l n@.HH/N?XO n  f* .RЕ @  gHy N?XORB .oHyTNF0XON #7.@Jf.HH/N?XOB.`HyN=XON5.B:N>29HH/N@XO` D o*`N?JgN?-G .f 9~g Nq2`9HH".f EBL?N^Nu9HH".f N[`^9HH".g9 ,-n/.Hy NPO -@Jg/.NFXO/.Hy NPO 0/N?XOL?N^NuNVH-nJg ./NGDXO .0/N?XOL?N^NuNVH-nJg ./NGXO o^ .0/ 2?-G f*BBHy N?XOHy N?XO`\ f" .S-@BHy N?XO`0 g$ gHyN=XOL?N^NuR`HyN=XO`NVHKI GN?FN>2J9gVHySNF0XOHySNF0XON $8HH".f/.N@XO`&/.N@XO f EB`J9g:J9g$ fHy N?XO-| /.N?XO`N?Jgr f`Jg`J9g T  fHy N?XO TfR` TR/N?XO D o -N?XOL?N^NuNVH. @Hy^N?XO.@HH/N?XOL?N^NuH.SAVE THE BUFFER TO FILE ?THE MEMORY CAPTURE BUFFER IS OPEN COMEXEOBJcomexeobjCMDBINcmdbinrFILE ERROR DATA LOSS POSSIBLE DO YOU WISH TO SAVE IT?TH 3@D/NmXO YfN6B9Jg /N@XOBHySNF0XOHySNF0XOHy`NEXOJ9`f L?N^NuHySHy`N PO& f>HySNF0XOHy`NF0XOHySNF0XOHyN=XO`BHy/9z/N9( -GJgB . 9(`B`S DONE RETURNING............. NOT FOUND CMODEM:rFILE > ASCII FILE TRANSFER MODE SAVE IT? MEMORY BUFFER STILL OPEN ----MORE----  COULD NOT CREATE FILE w -EXISTS - DELETE(Y/N) COLLECTION FILE NAME >USE OLD FIL       :E?COLLECTION ALREADY ACTIVE TEXT COLLECTION IN OPERATION ATTENTION . CONTROL TERMINAL MODE. NVHKI,GN?FHymNF0XOHymNF0XOHymNF0XOHymNF0XOHymNF0XOHym`NF0XOHymHNF0XOHym(NF0XOH @F0XO9 HH/NGXOHyjNF0XO9HH/NGXOHyjNF0XO9HH/NGXOHyjNF0XO9HH/NGXOHyjNF0XOJ9gHyjNF0XO`HJ9gHyj|NF0XO`,J9gHyjvNF0XO`HyjpNF0XOHyjbNF FN^NuNVHN?FHygNF0XO/94NFXOHygNF0XOA/NEXO.f L?N^NuA/NXO#4HygtNF0XOHy N=XOHyg\NF0XOHyN=XOHyg4NF0XON@DHygNF0XOHy N>XXOHygNF0XOHyN=XO`^NVH ;ymNF0XOHylNF0XOHylNF0XOHylNF0XOHylNF0XOJgHylNF0XO`HylNF0XOHylNF0XOHylbNF0XOJgHyl^NF0XO`HylXNF0XOHylFNF0XOHyl&NF0XOHyl NF0XOHykNF0XON@D/NmXO-G  A0XOJ,gHyj\NF0XO`HyjPNF0XOHyj>NF0XO[ /9NFXOHyj*D`L*U`B*f`8*`.*` >0XOA/NEXOJ.f L?N^NuA/NnpXO-GHykNF0XO/.NGXOHyknNF0XON@D/NmXO-G YfT#JHykVNF0XO/9JNGXOHykTNF0XOHyN3XOHyN=XO`NHyk6NF0XOHyN=XO`.`*NVHN D/NEXOJ.gA/NnpXO `L?N^NuNVHN?FHyhNF0XOHyhNF0XOHyhnNF0XOHyhXNF0XOHyh8NF0XOHyhNF0XOHyhNF0XON@D-G .N|_81_D2_V3_b4_x5_6_`P J$*`*`Jg L?N^Nu(/ 9J/NfPO`NVHHyejNF0XO/9fNFXOHyefNF0XOAJg A/NEXO/NXO#fHye2NF0XO/9jNFXOHye.NF0XOAJg A/NEXO/NXO#jHye,NF0XOL ??FHyk(NF0XO/9BNFXOHykNF0XO9HH/NGXOHykNF0XO9HH/NGXOHykNF0XOJ9gHyjNF0XO`HyjNF0XOHyjNF0XOJ9gHyjNF0XO`HyjNF0XOHyjNF0XO9 HH/NGXOHyjN EB9`>`2B9B9B9`&`B9&``L?N^NuNVHKBN?FHygNF0XOA/NEXOJ.gA/NXO* do*d.L?N^NuNVHHygNF0XOA/NEXOJ.gA/NnpXOL? K?N^Nue, ? enter number of nulls to ouput after each CR now ? enter number of nulls to output after each character now unknown192009600480024001200600300 CURRENT BAUDRATE IS - 8 - 19200 BAUD 7 - 9600 BAUD 6 - 4800   !"#$ L BAUD 5 - 2400 BAUD 4 - 1200 BAUD 3 - 600 BAUD 2 - 300 BAUD INPUT CHOICE FOR MODEM BAUD RATE CRC error checking will be used NEW BLOCK SIZE IS INPUT NEW BLOCK SIZE-MAX 1280 ? CURRENT BLOCK SIZE IS ENDING 10 SECOND CREC R MODE S - SET TIMING LOOP VALUE Q - QUIT AND RETURN MAIN MENU L - LF/CR TOGGLE OFF ON E - TOGGLE EMACS MODE - NOW- D - DEFINE DISPLAY TYPE CHECKSUM CRC - NOW- C - TOGGLE CRC ERROR CHECK B - CHANGE TRANSFER BLOCK LENGTH 8 - DISPLAY CU Xir<lrDjrXmr`krtor~nrprqr`XNT` FNw FB`| FN FB``NMT`VNJ fB`@ DB`4N7HyN=XON3`N7N7V``` ^m MV BEGINNING 10 SECOND CRECV HIT ANY KEY TO START SECOND TIME TEST ENDING 10 SECOND HIBER BEGINNING 10 SECOND HIBER INPUT VALUE FOR TIM_FUDGE ? THE CURRENT VALUE IS INPUT ATTENTION CHARACTER ? ENTER UNIT SIZE DESIRED ? 6 - REMOVE SLOWDO SRRENT OPTIONS 7 - ATTENTION CHARACTER 6 - CHANGEm2 CAPTURE UNIT SIZE 5 - CHANGE LINE MODE 4 - CHANGE X-ON X-OFF CHARACTER 3 - CHANGE MODEM ADDRESS 2 - CHANGE MODEM PARITY 1 - CHANGE MODEM BAUD RATE CMODEM OPTIONS NVHp !Y gnHHN|sL^s`_s`sat&bt@ctDdtNetXft\gt`Jf`N6`Jf`N6/9HyNPOBB9B2 DBB6B>Jg/9N@XO`Jf`NK`JgLBB NWN 5 - SLOW OUTPUT(WAIT AFTER EOL) 4 - STANDARD - ALL ABOVE OFF 3 - OUTPUT ONLY NL 2 - ADD LF TO CR ON OUTPUT 1 - AS IS NO TRANSLITERATION ENTER MODE YOU WISH FOR EOL ENTER HEX VALUE TO RESUME DATA FLOW ENTER HEX VALUE TO STOP DATA F T. HH$Ё @g.  @ . HH.L?N^NuNVHp. HH$Ё @g.  @ . HH.L?N^NuNVHB nJg n  g n  g nRHH/NmXOG .fp".Ё-@`.HH/HywNo "Z9B2 DBB6B>Jg/9N@XO#zv#vr`@ EJg EB` E`&`"No*`N7V`` ``` HHN|tGu,Hu|IuKuMvBOvrPvQvRvSwJg"Hy OLOW OUT AFTER END OF LINE CHARACTER ENTER HEX VALUE OF CHAR TO SEND ENTER HEX VALUE FOR X-OFF ENTER HEX VALUE FOR X-ON 3-SET TAPE MODE AND CNTRL CHR CONTROLED BY YOU IN PROGRAM 2-INTERNAL CONTROLED CHARACTERS FROM THE HOST TO YOU  U:PO-GJf ~L?N^Nu .ЮS-@-n`\..`NVHL?N^NuNVHB nJg( n.f..L?N^NuR`~`NVH/.NVXO-GB n Jg8/./. .Ю /N Jf..L?N^NuR`~`NVH #[NwhXOHyN@XO`N[`JgHyN@XO`6Jg"HyNwhXOHywNAxXO`Hy N@XO``Jg QUPLEX = KILL = ATTENTION = UNIT SIZE = modem address not changed MODEM address is now is this ok (Y/N)?The new MODEM address will be Please input the HEX value for modem port address The current port address is T - TERMINAL WPO-G .n .l .RЮ @- n B/. NoXOL?N^NuNVHK~IGE,<**<(<: :o& ElZHH/Nw*XO~L?N^Nu So$ ^l HH/Nw*XO~` hm qnHHN|r.hr2]HyN@XO`HJgHyN@XO`0JgHyN@XO`HyN@XO``~`d``NVHHyN@XO. HH/N@XOHy N@XOL?N^NuNVH. HH/N@XOB l R`L?N^Nuw*[B[C[D[A[ 0;0H 01     ^23456789ABCDEF! B0c@P`p)Jkѭ12s"RRBrb֓9{ZӽÜ$b4C dtDTjK( ŬՍ6S&r0vfVF[z8םǼHXhx@a(8#Hi +ZJzjq P:3*랛yX;l|L\,"< `Aͭ* hI~n^d0$E/2(mTW)#gL;H]h*o+KAXXO #B .йz-@( l@ . @0".ၳ nR-@R` . @0".ၳ".ܳ-@ . @0".ၳ"9-@ .g `_N>.2Qp:Yxʡ -No0 P@%pF`g=^"2B5RbwrV˕nO, 4$tfdGT$D۷_~<&6fWvvFV4Lm/ȉ鹊XDHexh'8(}\?ثJuZTj7z *:.lM|&l\dLE<,  eF0XOHyPNF0XO/NEXO EJf L?N^Nu-E-E/NVXO-G nRJgnS .ob n #g n ;fF nRBJg0-n nJg nR` nR nB``-|/N;XOJg J9gHyLHynN$POJ9k`n .".gT DJgDHyTNF0XO/.NGXOHyPNF0XO/.NGXOHyNNF0XO`. 9f2HyN>XXOJg J9gHyN@XO` 9Rg DJgHy.NF0XO` Ѯ .ذlHyN@XO`>]|ٟn~6NU^t.>w0fFmpjZaj]ۈ2yܸ*h-&x L+~|Go@odj F{A"}m +J|,z9lVdku6\Oclr ;n Li^*]<KG-zZJ5Bl$D6*SC2lE\u#)1T.§&0Q:7(@/!V fgHy>NF0XO`Hy2NF0XOJ,gC$` $/N8XOJg/NF0XOHyNF0XON@D/NmXO^ 9Y^f*Hyn/N PO#HyNF0XO`*HyNF0XO/NEXO EJf`N`h`4Hyn/N PO# 9lHy N?XO/9 NFXOR #B CB`r`n/./9z/9N:t /9N@XOHy N@XOHyNF0XONF` DJgHyNF0XO``R/./9z/9N:t f6HyNF0XO/9N@XOHyN=XONa#0EjgGBZ(_9&NN/o|XhL>UIvAqg-D*q`@[G+xɢ4iWrgj m=-nikkQlabz( l{} ? ;ePtAGFwb-Is, +MaX:Q\C+DJߥA=ؕ[.;,) Cij4nRw%G0D-s3U"7Pq<'AA6zWh gfHyNF0XO`HyNF0XON0 .찅gZ/.NAxXOB l>HyN>XXO-GJ9g` ./N?XOR`# B CB# BBN>2#zv#vr9$HH/N@XO .ذlJ9g/9mF`DHyN@XOB``*NVHKI,<G^E*<(<&<HyHynN$PON?FHyNF0XOHyNF0XOHy`NEXOJ9`f L?N^Nu-|`-|`Hy`NVXO-G nRJgnS .ob n #g nb% oF+1a^)ɘO/g8(WLY=. HB?ESG|e@LJ tҚ*b-Q&sk| mj>zjZ0lc '}lx\.hi5l6qnk+v, zZgJF qAC`))\^.l8OR.DYC?H6K'&P6JAz` =W 1nFiy4LtC|%oҠRh hN@XONF`Jg CRJ9f< ./N>XXO-GJ9g/9N@XONF``HyNF0XO/9 NFXOHyNF0XO C/NFXOHyNF0XO C mBHy~NF0XO/./9z/9N:t /9N@XONF`>HyNn ;fF nRBJg0-n nJg nR` nR nB`` E o #B/9B E/N6PO -@ o4Hy E/NPO #B/9B E/N6PO -@-|Hy`N;XOJg J9gHyHynNc63kD"U&/:EBMB+Z\j=(YJ/0,ٞ[ޮd=P ujm cWrgWj@~G{+ 8m-qe*A| !y,-,+hݳڃn~A3 F٥owGwwf; \paQaklE_(-NT9Xٟ/ IiGM>nwQ.&)$@ f7;VCQ!Da;G0BB 5E=vS i@XO/.N>XXO N|||/.N>XXO$/.N>XXO# йg `& .йz-@ .Г-@B( lXXOѮͮR`/.N>XXO -@ DJgHyjNo$POHynHy`N PO# 9f>HyNF0XOHy`NF0XOHyNF0XOHyN=XO`P-|B## B# J,g$` $N>2J9gHyNF0XO`HyNF0XO#zv#vr `g !"#$p/.NAxXOB ,lfHyN>XXO-G CJgHyNF0XO`: g Cf` ./N?XOR`N>2HyhNF0XO/.N>XXO-G gv CgjR f8Hy6NF0XO/9N@XOBHyN@XONv`R m8HyNF0XO/9N@XOBHyN=XONF`BN@XOf*HyN@XO/9N@XOBNF`T`< f*HyjNF0XO/9N@XOBNF` RR 9# . EА-@ .԰mxB``NVH |XO n"n0) @gp`0<H/"n/)"n)HH/NL n f nh ~L?N^Nu n"n!i nS"n iRHH-@..`NVHp"//.NPOL?N^NuNVH/. /.NPOL?N^NuNVH n (fqF`Jg/9N@XOBNF``rHy4NF0XON0 Cf#,$/./9z/9N9( # gP DJg,HyNF0XO/9NFXOHyNF0XO 9fpHyN@XOB ./N>XXO gR g wB9L?N^NuNVHB9Hy N@XOL?N^Nuj TRANSMISSION CAN CELED - ABORTING. TIME OUT - ABORTING.  ERROR OVERFLOW - ABORTING. TOT ABORTgot sent CKS sent BNO sent SOH  TRANSMISSION COMPLETED. THE NUMBER OF B!}" n "n HyNXO#G!i"n iR . n S g, f n 0( @f n (f/. NXO-G..L?N^NuNVH n0( @gF n ( n-@ .o*/. n/( n(HH/N0 -G n"n!i n .rCJg``HyNF0XO/9N@XOBNF`Jg N>2BNBJg/9N@XOBNF`PJg/9N@XOBNF`0B 9F#BB gHyNF0XO9$HH/N@XO DJgHyNF0XO/9N@XO/9NxYTES IS TIMEOUT WHILE AWAITING INITIAL NAK - ABORTING. AWAITING INITIAL NAK... TEXT MODE BINARY MODE OPEN ERROR: rbFILE > CHECKSUM TRANSMISSION OPTION. rFILE WRITE ERROR - ABORTING. Default time out error  TRANSMISSION COMP"~fp`BS.L?N^NuH$/DS"o@"/<  -EXIST#,PM8 vNRQ`File Not Open For WriteH"o@&/DS XXO g DJgXHyNF0XOHH/NGXOJgHyzS DELETE(Y/N) TEXT MODE BINARY MODE wbFILE > CHECKSUM RECEIVE OPTION. wHB.LNuNVHBJ g^ .lR-n /.NXO-G .m nR .`..L?N^NuSJfR`..`NVHBJ gX .lL-$Jfؐ`Ԡ*  f*< R gQ`File Not Open For ReadNVHBBn n rg n RfBn`-|nR n bg n Bfn0.H//.NPO-G f L?N^Nu ."-@ n .@ n"nB!iuNF0XO CJgHyNF0XOHyNF0XO f`H CJfpJfj Cf#,$RN>2 m8HyNF0XOHyN=XO/9N@XOBNF`$` CJgNBJg/9N@XOBNF`Jg/9N@XOBNF{n /. nRHH/NPOSJf n0( @ g` R`..L?N^NuNVH/.NXO-G "f/.NXO..L?N^NuNVH n (f" n"nHyNXO#G!i n f n0( @g&p "/NXOp"/N n n0.1@ ..`NVH/. /.NBPOL?N^NuNVH/.NXO n (l L?N^Nu n0( gD n(HH/NXXOJg~` n"nB!i nBh ``H o<C`-ItgQ 2<pI" HELP open1 move.b #1,d4 default to TXT ext dc DEFEXT dc FOPENR open file for reading bne.s error1 move.l a2,a4 to open FCB 2 dc GETNAM from cmd line to FCB bcc.s open2 br if no error move.b #21,FCBERR(a4) error2 dc PER LEA HLPMSG(PC),A4 DC PSTRNG DC WARMST HLPMSG DC.B "CMP is used to compare two files to check if they are the same." DC.B $0D,$0A DC.B "If the files are not the same CMP will display a not equal message and" DC.B $0D,$0A DC.B "tell which by      te of the files was the first to be unequal. In the" DC.B $0D,$0A DC.B "event that the files are the same but one is shorter than the other" DC.B $0D,$0A DC.B "CMP will display a message telling which file is the shorter." DC.B $0D,$0A DC.B $0D,$`0JfI05"b(NE0Jg溮"bA,E9|"g I5(N74,6<,Hg:=C"1C"$|J."f e >.`g|.`fv(NgIe5.03<-3a4|IgI?5(03<-3a\4|. f C`G><?fQ` I,5a4Rc -g<OcDI5B8Lz8<-3z8NuCOMPARE is used to compare the entire contents of two disks against each other. The correct syntax is COMPARE ERROR IN READING SYSTEM INFO RECORDag`"K8<-a<f`4NuK|=|< z+H:<*a8K+z :fB-I6a (za z4K-=g(g" b(g b( Le deFK|>:n6IaIa t:knIag Kf-CB & buffer file2 ds.w 608 FCB & buffer end cmp  J+n(- +g Ae zc-zT  fRApK}B(f-e$_A@KNg*f(` n g ,f-:)gNuI4ag aIa ga`BBBB <@A*n-  g.g-a& .g /g *g _g <`XKZ-< zh2< a0Qa$a" fBaaaa (z>a`(z2K+H+LNu"<a :dI`g`-n`"g`hIKB-H`  8 K|GI a ` Pa )_ YNuIa K z+H :gKv+@ ` !"#$ :f z~ga, zxKT+H|?((#ef22< (e f$Q z>6gK+H` z$ (!h!@ (!h!@ (!h!@ ( !h !@0(1h"1@"KB-?`: f:g zK+HHE$$$A: *f : *gaa B-HI `l< 3<r3Iؠg`PK^Bm2B-EB-FB-D|; zT+H$I쪠f0,bK.z\g(m2zPg:if:mg2>:> Gf+H2 z +H$ ,1g f:(g~`KB-HI `.dEe0>< QK+H$B,1`b, g f *<a`DJ-Rg6 zp"zp()b,e"()b e()be ( ) b:wg`:og z,B(aܱfhNu:RgKB-HI` K:'k"AP+HaA( *f:2aA.+H( za fI|` zK+HB-Car` $a a . g:g`NK~|E:fg`X:fBI.K\|Df|;z:f:g|:f z)z z.IBD:*nFK<5@f,:Cg&:>f 8: N De D b:jf :<$$QB,1`hIf K|GA a:fg InfNu<3<p3fG 6"I 6z9["6: &Cf6`9l`"gQ*nF-:B-:K$I"g PM B6pNuHere are some sample ways of using COPY: COPY ADNL 0,1 .COM AB (normal) COPY FE 1,2 12 2-7 21 (file #) COPY R 0 2A 8 1.FILE (sector) COPY S 0 2 2-12-88 (since date) A Alphabetize files C allow Corrupt file xB-Z` SfN`:fDaXA( *ganA( *fKB<<JjQaDa z2B(af,`:@gA `$KBm.. g|.gt0dI KB-H`K;E,gE;E,. -f 0eK;E.gE;E.0:zbB0:.ЇЇff<3<w3G @6: CBABI@9["><>K`:A:*ИQJCfBl`'@f2Q>+9G9z 9lJ"fB,MKM`kKKݠfޠ fؠ f>G~OG}.,z *GfB,}B,~B,B,GOGfK|G#s (danger) D copy only files with newer Date E delete Existing file from destination F copy by File number K Kill source duplicate file (danger) L List without copy M Make random file N copy files Not on destination O turn OfEdKr+@ @J(kPa H8<#38:DB88<:38< 3L`aK4J-Vfa$A( *ga0: @2<BI<9X"fHK`>gPf<]f8A<<>ԝQQشf AaNuJCgK*B-HIS`I*5aK+L$,I gg4 *f*zKB<<JjQ<.33</3NuIj6Nu"<Һ@K$+A ANuAa2gfA a:[g:Zf A !a` I sa:f`:5fI a&g Sf`hI,fZC0,:K@0 z0:( A( AKH0H!\d(03:g,Aa< z(":a&(#::g ICag :fIaaNuKJ+L$,I g(I g-KI gI gIaP`V:<03<.3(H<E :'fKL<8: f< 3( b< 3Are you sure (Y/N): Bad entry: Date bad: Allow bad dates (Y/N):  to Drive Single Copy by number not allowedIllegal directory numberChange disk-press key:  File exists Delete original (Y/N/S)?  Copied, verify error & Killed File will      not fitSource drive is empty!Prompt off (P):SK*DOS (S):copy (Y/N)?Prompt off (P):SK*DOS (S):KILL (Y/N)?Nothing  CopiedDirectory space overflow!Directory read error Continue copy anyway (Y/N):  KILL on drive  at track-sector: JanFebMarA`(N#e`""n g.g(N#e, fI5`̠4I̠5.03<.3IBEDI6)_ Yg I5`I5D)_ Yg I5`r(Ngj. f I5`V7 I5DELETE is used to delete one or more files.r display SK*DOS device drivers. The correct syntax is DEVICE to just display current device assignments, or DEVICE AS AT to install a new driver. In this form, is prMayJunJulAugSepOctNovDecBadDRIVE NOT READYTHE FILE OR DISK IS WRITE PROTECTEDDISK FILE WRITE ERRORSECTOR NOT FOUNDCRC READ ERRORSYNTAX ERRORFILE NOT FOUNDRECORD NUMBER MATCH ERROR - FILE DAMAGEDLINK TO PROTECTED DIRECTORY SECTORSORTING ...   The correct syntax is DELETE where the must include the file name and extension, and the default working drive is used unless a drive number is specified. You may delete several files by including more than one the file name of the driver on the disk (or DEFAULT with no extension for console default), with a default .DVR extension if not specified. is the name (such as CONS or PRTR) that will be used by the syste COPYING ABORTED - INVALID DATE.file-spec.]You must provide an extension.Delete  ? Are you sure? Not deleted. No such file exists.m. It must be 4 characters.  is the number (0-7) used internally by SK*DOS. For example, DEVICE SERIAL1 AS COM1 AT 4 would install the SERIAL1.DVR file under the name COM1 as device 4.Invalid file name for driver.Invalid com``ZDAH( IZ5(D,03( I`6(DB,"B8( IP6(DB,#B8( I@6<(D4LpNuH( I5`Read D-T-S Write D-T-S  -  - ; FCB @ 4&nF .> PSeҠ- ?gC QNugF$i"* ZDAg iNug,$i"* ZDAg iN `*n ?g  gh.g`..> Re(N#eT,  bH., DEFAf ., ULTgJ, f)|DVR BB-1  gn.gh  g Af-1 Sg Tg.`-I#eJ, f,g.,f`-0Jg b ` f fmand line arguments.Invalid entry for AS.Invalid entry for AT.Not enough memory to install driver.Is it OK to replace  ? This program requires a newer version of SK*DOS.(N!z$!I!Aa։!C a։!C!C8a։!Ca։!C!C3AP#AR3|DAdI5I5I5DAMON prints out the drive, track, and sector number for all disk reads and writes. The .. DEFAfn.. ULTfb.PA Ca:f l!i !i!i!i!i!i !i$$!i((!i88!i< If not specified, the extension defaults to .TXT. DIFFOUTRecord too long--truncated-------  Line : ----------: ---------------------------------------============================ 3`dI63`XI 6`N<$3B(<`>JfI`I6`*JgI`I{6`0 b"-  gȺ.g  g ,g-eZI- =fH*n $f-ACPgf48L33I6< (E c P(gXjJ ================================================== differences were foundNo more similarities found!gTg/e AOFg( I5(<B`8Iv5I5 SK*DOS PK`K^BKBIV#e<$I#ez<$I8fffb|1IffTfP|1KBUK :KD:KBa:agaa:fafaIؠI7 I5IGa~a(>,G9GIGada>,G9GNuG`2<Ag6g ,`4..g& g-e&0."bE9|"fI5Ap<a<.3<aI5(.zB8I5AB(B8<-3B(B8<-3B(B84I75, n( gIlBBBl B,#B,I'5,0eJg E|ME{I-5"ARAMETERS (COMMON TO ENTIRE SYSTEM): SK*DOS PARAMETERS FOR DEVICE NUMBER :BS Backspace = RBE BS echo = jDL Delete = EL Endline = TB Tab = ES Escape =  g2`J,g  fl`B,  fE` $LI=5(J lNu:) g:_ NuAtCf ( fNuKUK:K:2<zK:2<zK:KIGaI G aaLf.KB2: K:K|:z zKl:2:Kf:I) Ng Yfnnn(Nf4f< 3SfNuI5(N7I5DISKNAME allows you to display or assign a new name, number, or date to a disk. The correct syntax is DISKNAME Current name: New name: C#RP Repeat = MD Max drive no= "OF OFFSET = ME MEMEND = *SC SPACE COMP = BPL Print lines =  ZSL Skip lines =  rWD Width =  xaJ,f 2:h>:JGcNuI 2,>::Gdaa2g,gNu<Nu.+'G>+7G ,G2,7A>,"7G,1GNu>+9G"B,f(B,+G1>+9G+GNu4I15:fIGaIР5:03<.3IBEI68:<8I6Ia>:urreent number: New number: Current date: Change to today's date (Y or N)? INVALID DRIVE NUMBER.$NL Null wait =  PS Pause =  EF End of File =  BR Baud rate =  XF X-OFF Char =  XN X-ON Char =  DP ********** =  2EJ ********** =  JDOSPARAM is zz`gIa|IlJ,gI G aVIn5: 03<.3I BEIY68: p<8I_6I ba>: XzgIaI JJ,gIa5NuI5Nu ,g4 g3`Nu44B8:8I|6NuDIFF is used to compare two text files and display their differences. :`BB-d< ?g  g ,gJf4I5A B. PB(f<LIEGgjI޹fI503:b g < 3`4(J6 *C c.P*Jgjg`gn`HBB8`<$3:Jg&kz  dI6@used to change or display various DOS parameters. To display the current parameters, the syntax is DOSPARAM To change the parameters, the syntax is DOSPARAM In both cases, is optional, and defaults to 0. New parameters are entered as a two-letter abbreviation, an equal sign, and the new value, which may be decimal, hexa- decimal (preceded by $), or ON, OFF, N, or Y. For example, DOSPARAM 1 PL=56 SL=10 PS=NK||BB.:.;@A @&A'A"IA!n#n$n%I5:f .6-@C2"RAMDB:C<i."c@"C QNugF$i"* ZC!g iNug,$i"* ZC!g iNu g$i"* ZC!gxC" < g PdR  fRz c`4 $EI r5(B8I l6(N* Rz b"PA r`IJ i5.SGK :(N>: ga04<#3,B-.0  b `JAg z dbK \:1 Pfav` Sg Ffa` Cfan` Ifa` Gfa`z Dfa sets device 1 (usually the printer) for 56 print-lines, 10 skip-lines, and no pause at the end of a page.YESNO is invalid; command terminated.Syntax error; command terminated. = Control- (none) = DANGER: New address is OFFSET cannot be cha 'AC 8 DNugC8 DNugC03@PA^#HR3|RDdA<0<J0k fI5`(B:."cA"I503I<I<I6(03:f`-1 Ef-1 MfIĠ5)1 Yf`l Qfa<`^ ?faB`PI Р5`F>: fNu>  gl !f >: K :`" #f -0DK :`0>: ESGK :>: z ez c K >: ~:a>: rz tfNuK f>RG:`48: XB8<:3< 3B>: BPG R  g3`Nu>: (g(N , )|BAK g , nged. - ARE YOU SURE? lK2 RAMDgI|5*NRAMC QNugL$i"* ZC!g4 iNug2$i"* ZC!g iNu g$i"* ZC!f%|NRAM..6gI45B.;M.:Fކ-GI85`Iˠ5`IX5`I5`I5RAMDISK is used to set up an area o fn)@ *,)E4*,)E8)|BAK<g ,fD)@ f:p>PG   g`R>z cf`-  gA Ba  ggR`| JBgK xa *fK f: ^f0: Pz NgfR@` 0: @z >b2PK F,M  gA ."N.fS``ZC!J,HkNuH<,"aVM`:<,,,,QL`O<NuJ,HkNuH<,"a"M`:<****QL`O<Nu,zB:BG.;Bޅ*n6KxNuJ,HkNuO<<NuKJ*Nu4&nF .> P4eA kB-  gҺ.g ?g `4- ?g`-  g .g3`I5ECHO takes the remaining text on the command line and displays it on a new line on the screen. The syntax is ECHO Its primary purpose is to allow .BAT batch files to display f`R`Rz cNuK :a: f>: z g K RG:`NuH*nB-ML Nu-  8gK K *nB  f *ffK A Ba  ggR`| ..K b*JBgl.: T-G2: @PB: @SK H,M  gA ." 1 Rg . CACHg Nf:-1 Efn-1 Wfb-Ih5) YfA-0  d6A*n g ,g g.fK2 RAMDf4I5Ar A PRDgA PRDgA PRDg`KB*n  g ,gBB0  bmessages as they execute. For example, putting the text ECHO FINISHED into a batch file would cause the word FINISHED to be displayed when SK*DOS gets to that part of the batch file.N.fSf`@R`K : f Ka:g>:zg RGK:`NuG ^g` 2.:-Ga  gg`E 4( HDR  fK . PcIu5Nu2:tPK G  f:afaNuKUJg8HDRKD`>:2z*fIC ҆` e dA .@epej@I5(B8I6) Yf .B-@6< D;A:IP5A~ <<a M<BBBBf.;cF<0H.:cBF:fB.;aBU<<aBU+|RAM +|DIS O`N.z`RCOPYRIGHT (C) 1987 BY PETER A. STARK, STAR-K SOFTWARE SYSTEMS CORP.P>K-MK* ?g..APK v: GeK j:(N#e<$g, g7K DBUI 5`p"PABrg ,fРgr, f`b  g 5Nu<=3,> #fNu>:gzf6K>RG:>:PG *n~N| OQ>:K:`A"H>:,PO>:RGPGPgS`>:RGK:>:RGK:>:PG*n~N| OQ`0>1 Tf KT:Nu Bf >:FK@:Nu0JEgz2b !"#$ K(:NuIe5Nu>:fNu>:zf>:SGK:>:SGK:NuA"H>:RGP>:P)Pdz&c>:SGK:NuI5)1 YgNuI5NuIE57I5`I5EDLIN is a simple line editor for generating or modifying text files. It is ca/*.Not enough memory exists.Not enough memory for input file to be read. What???New line too long ... not  changed.Cannot insert a line - memory is full.That line doesn't exist.Are you sure? Error in writing output file; try another disk. < 3$CMֽfE BNuRMgAMf$H BNu< aL< aDNu/PLEASE BE A LITTLE BRIEFER!/&////******************************/* */* E L I Z A */* */* CO lled with EDLIN where is the name of an old file to be edited or of a new file to be generated; it defaults to .TXT if no extension is specified. If EDLIN is used to edit an existing file, it renames the old file to Line  longer than 79 characters; has been split.This is a new file; start by inserting text.!PYRIGHT 1981 BY TOM QUAY */* */******************************//I CAN HELP YOU SOLVE ALL SORTS OF PROBLEMS, BUT YOU MUST TALK TO ME IN COMPLETE SENTENCES SO THAT I CAN PROPERLY UNDERSTAND YOU. /TYPE 'EXIT' TO EXIT TO SK*D .BAK when it writes the new file to the disk. For specific help with editing commands once in EDLIN , type a question mark (?) for the command.The EDLIN commands, and some examples, are C - Change a string on the current line Example`4B. f<FM ,M!lBM ;E!I(aO pa:aaaaZ` /fa` ;g &gaR`aNu4A )1 fM gS< 3<3` f4`  fE M z 4NuM ĽfIna|``A X 'g RM fNuRM f`"OS.//WHAT'S THE PROBLEM?&/PLEASE DON'T REPEAT YOURSELF!& EXIT#//THANK YOU FOR LETTING ME HELP.//& ARE #9 AM #1 WERE #I WAS #@ YOU #_ I #Q ME #Q YOUR #o MY #f IVE #~ YOUVE #v IM # YOURE # QUIT # BYE #M CAN YOU # CANT YOU # YOU  : C/old string/new string/ D - Delete the current line Example: D F - Find a string bel ow the current line Example: F/string to be found/ G - Go to a line number Examples: G20 or GT (top) or GB (bottom) IA 2(ZgaNu f Ia4`RM gfA M [PZRfNuAMl,AMf,a:bfNuIaMPB"zB zB #g  gRf`M*M,RM,NuAM,AM,a:f* zR #fVM, fA4M,`"axMB z#CANT # YOU DONT # DO YOU # WHY DONT YOU # DONT YOU # ARE YOU #A YOU ARE # YOURE # SICK #a HEALTH #a JOB # SAD #UNHAPPY #DEPRESSED # CAN I #T WHY CANT I # CANT I #T I FEEL #nI HATE #I DONT LIKE #I CANT #I CAN NOT # - Insert a new line after the current line Example: I (type # on new line to exit insert mo de) P - Print Examples: P or P5 or P#22 or P! Q - Quit without saving the text Example: Q S - Save text and BO(AM,:R?MB(z:g R ;f *fRR g`aR *fIvaaNu"zJAe f< MRS<Sf;A erases the entire RAMDISK and reformats it. RAMDISK REMOVE removes the entire RAMDISK, deletes all traces of it, and recovers its memory, if possible. RAMDISK and CACHE may be used together, but on ;9"b$MvPHgL@ N N L@ |NuH,9"b*MT6P k,vPHgL@`N4NL@`|NuL@`|  NuaN$aN*,9"bM6PEHgNu<E Nu`CH,N ALSO ;*CAN YOU REALLY ;*HOW IS LOVE IMPORTANT TO YOU?;WRHAT DO YOU LOVE MOST?;IF YOU WERE RICH, WHAT WOULD YOU DO?;HOW IS MONEY IMPORTANT TO YOU?;WHY DO YOU THINK THAT NOBODY ;*WHO, FOR EXAMPLE?;EVERYONE? WHO FOR EXAMPLE AND WHY?;SURELY NOT E ly if RAMDISK is installed first.RAMDISK do>es not work with this version of SK*DOS.RAMdisk will leave K of memory free - OK to format? The specified RAM disk size is too big for your RAM.Are you sure you want to erase the RAM disk? Correc!<NZ,MJ.fHNaL@fTNZ :.g<:.g69E(|9E"N_f,:,`g<=E:.Eg.=EBLNua$fNb0LNu`a`BBn(oNYNuMD*|#.g*Gf|NuHB9,L&,(,., BM(|J9|`|VERYBODY?;SOMETIMES I DON'T LIKE MY JOB EITHER.;WHAT IF YOUL DIDN'T HAVE A JOB?;I'D SUGGEST YOU TAKE 2 ASPIRINS, GO TO BED AND DRINK PLENTY OF LIQUIDS.;WHEN WAS THE LAST TIME YOU TOOK A BATH?;WHAT ABOUT YOUR ;*OH MY, THIS SOUNDS SERIOUS.;WHAT IF  t syntax is: RAMDISK [NEW] [size in K]Reinstalling RAMDISK drive numberResetting the drive number from  to Your RAM disk was formatted earlierRAM disk doesn't exist ... can't be killed.RAMdisk memory cannot be recovered unless you  =;B,1NZf(J,g,f츬f*, BfLNb0Nu 9f`H (|NZ~NZfDB<*9㝻㝻㝻㝻9,E3+*<L0Nu*y+yNuBBB9Nu, g  f4, c& b B*|b I SAID MY ;*WHY ARE YOU SO UNHAPPY?;HOW CAN I CHEER YOU UP?;SFOMETIMES I GET DEPRESSED TOO.;REALLY? YOU WERE ;*MY GOODNESS.. HOW SERIOUS WERE YOU;SK*DOS IS A GREAT DOS, ISN'T IT?;WHY DO YOU THINK THAT ABOUT SK*DOS?;WHAT MAKES YOU THINK THAT SK*DO reboot.Formatting RAM diskFormatting completedCOPYRIGHT (C) 1986, 1987 BY PETER A. STARK STAR-K SOFTWARE SYSTEMS CORP.DEVICE FAKEADM AS ADM3 AT 0 ,Nf(<,9F"N_f|1:,blNfLNuGlb^afM+.>,NJ.gHB.Fg,N gM`..g, sets up a new RAM disk of the specified size (8K to 1 Meg). RAMDISK changes the RAMDISK to a ne:v9l"K`M+*<<?*Q<`<ELNuJ,f|NumN`J,gafNuB9 ,fH<,N3+$ FXb|9l"| =N_fR||=B,19lbNBNPf2<,Ny+$g N] f`NWfNWXf 9y+$N`LNuH, B9 PGikNik i`9 kB9 B9 ~PGN 9 L@NuN      NAM FAKEADM.DVR OPT PAGE PAG * FAKE ADM DRIVER FOR SK*DOS/68K * THIS VERSION IS CONFIGURED FOR THE PT-68K-2 COMPUTER * IT MAKES THE COLOR AND MONOCHROME VIDEO BOARDS THINK THAT * THEY ARE JUST ENOUGH OF AN ADM-3 TERMINAL TO RUN * RON ANDERSON'S WORD DEFINES * THE LENGTH OF THE DRIVER TO DEVICE.COM. THEEND IS A * LABEL WHICH IS PLACED AT THE VERY END OF THE DRIVER ********************************************************** LENGTH DC.L THEEND ************************************************** ICE DESCRIPTOR FOR THIS DRIVER DEVADD DC.L 0 ************************************************************* * PART 6. DEVICE INITIALIZATION. THIS CODE DOES NOTHING * SINCE WE'RE USING DEVICES ALREADY PREVIOUSLY USED. * ALL REGISTERS CAN BE CHANGED. **PAT AS CONFIGURED FOR AN ADM-3. * THIS DRIVER ACTUALLY VECTORS THROUGH THE NORMAL CONSOLE DEFAULT * DRIVER, EXCEPT FOR OUCHAR (OUTPUT CHARACTER) WHICH IMITATES * OUTPUT TO AN ADM-3 TERMINAL * COPYRIGHT (C) 1988 BY PETER A. STARK **************** IMP ******** * PART 3. ENTRY POINT POINTERS. THE FOLLOWING POINTERS * DEFINE THE ENTRY POINTS INTO THE DRIVER. ALL ARE * RELATIVE TO THE ORIGIN ********************************************************** DC.L INIPOR DRIVER INITIALIZATION DC.L INSTAT *********************************************************** INIPOR LEA ADFLAG(PC),A6 INITIALIZE ADM FLAG CLR.B (A6) RTS *********************************************************** * PART 7. INPUT PORT STATUS CHECK. THIS ROUTINE IS TO RETURN * TORTANT !! **************************** ** IF USING ASM.COM TO ASSEMBLE THIS FILE, MAKE SURE TO ** USE THE -F OPTION ********************************************************** * THE FORMAT OF A DEVICE DRIVER FOR SK*DOS IS VERY RIGID, * ESPECIALLY AT TH INPUT STATUS DC.L INCHAR INPUT CHARACTER WITH ECHO DC.L INCHAN INPUT CHAR WITHOUT ECHO DC.L ICNTRL INPUT CONTROL ENTRY DC.L OUSTAT OUTPUT STATUS DC.L OUCHAR OUTPUT A CHARACTER DC.L OCNTRL OUTPUT CONTROL ENTRY ************************WO THINGS: * 1. ZERO IF NO CHARACTER IS READY, NON-ZERO OTHERWISE * 2. D5=0 IF NO CHARACTER IS READY, ELSE THE NUMBER OF * CHARACTERS READY. IN NON-INTERRUPT SYSTEMS, D5 SHOULD * RETURN A 1; ONLY IN INTERRUPT-DRIVEN SYSTEMS WILL IT * INDICATE A REE BEGINNING AND VERY END. YOU MAY * SUBSTITUTE YOUR OWN DRIVER CODE, BUT MAKE SURE TO USE THE SAME * FORMAT FOR THE DRIVER AS THIS EXAMPLE. NOTE ESPECIALLY THAT * THIS DRIVER IS NOT EXECUTABLE; IT IS TO BE LOADED INTO MEMORY * BY THE 'DEVICE' UTILITY,  ************************************* * PART 4. THE FOLLOWING LINE DEFINES THE BEGINNING OF THE ACTUAL * CODE AS BEING AT $0000. IT SERVES TO BREAK UP THE OBJECT FILE * TO MAKE IT EASIER FOR 'DEVICE' TO LOAD INTO THE CORRECT PLACE. ********************AL NUMBER OF CHARACTERS IN INPUT BUFFER * PRESERVE ALL REGISTERS *********************************************************** * SINCE WE'RE USING SAME KEYBOARD AS BEFORE, JUST VECTOR * EVERYTHING TO DEFAULT CONSOLE INSTAT JMP.L $1186 USE CONS *****AND MUST BE POSITION-INDEPENDENT. DTBAUD EQU 51 BAUD RATE ENTRY IN DESCRIPTOR ********************************************************** * PART 1. BEGINNING, VERSION NUMBER, AND A 'DR' MARKER * WHICH IS CHECKED BY 'DEVICE' TO AVOID ERRORS. ******** ***************************************** ORG $0000 ************************************************************* * PART 5. DATA AREA USED BY THE DEVICE DRIVER FOR VARIOUS * PURPOSES. ************************************************************* ******************************************************* * PART 8. GET INPUT CHARACTER FROM PORT INTO D5 AND ECHO IT TO * THE OUTPUT PORT. IF NO CHARACTER IS READY, WAIT FOR IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS ************************************************************************ START BRA.S START NEVER EXECUTED DC.W $0002 VERSION NUMBER DC.W $4452 'DR' ID MARKER ********************************************************** * PART 2. LENGTH SPECIFICATION. THE NEXT LONG  BYTES 0-12: * NAME OF THIS DEVICE DRIVER DISK FILE - 12 CHARACTERS PLUS 04 DRNAME DC.B 'FAKEADM .DVR',4 * BYTE 13: * DEVICE NUMBER SO THIS DRIVER KNOWS WHICH DEVICE IT IS DEVNUM DC.B 0 DEVICE NUMBER FOR THIS DRIVER * BYTES 14-17: * ADDRESS OF DEV************************************* INCHAR JMP.L $1192 USE CONS *********************************************************** * PART 9. GET INPUT CHARACTER FROM PORT INTO D5 WITHOUT ECHOING TO * THE OUTPUT PORT. IF NO CHARACTER IS READY, WAIT FOR I !"#$T. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS *********************************************************** INCHAN JMP.L $1198 USE CONS *********************************************************** * PART 10. INPUT CHANNEL CONTROL. THIS DRIVSIZE MCURV EQU $FF0C80 MONO VERTICAL MCURH EQU $FF0C81 MONO HORIZ BNWRAM EQU $D60000 MONOCHROME RAM BNWADD EQU $FA0769 6845 ADDRESS REG BNWDAT EQU BNWADD+2 6845 DATA REG MCURSZ EQU $FF0C82 MONO CURSOR SIZE OUCHAR MOVEM.L D6-D7/A6,-(A7) 32 MOVE.B D6,CCURH COLOR HORIZ MOVE.B D6,MCURH MONO HORIZ LEA ADFLAG(PC),A6 CLEAR FLAG CLR.B (A6) MOVEM.L (A7)+,D6-D7/A6 PULL RTS * SINCE HUMBUG TOTALLY IGNORES THE NULL CHARACTER, WE NEED A * SPECIAL ROUTINE TO POSITION THE CURSOR ATER DOES NOT * IMPLEMENT CONTROL, SO SIGNAL ERROR AND RTS *********************************************************** ICNTRL JMP.L $11A4 USE CONS *********************************************************** * PART 11. OUTPUT STATUS. RETURN ZERO IF OU PUSH MOVE.B ADFLAG(PC),D6 CHECK FLAG BNE.S PROCES <>0 MEANS PROCESS XY COORD CMP.B #$1B,D5 LEADING ESC? BEQ.S INCFLG YES, SET FLAG = 1 TST.B D5 CHECK FOR NULL CHARACTER BEQ.L DONULL REQUIRES SPECIAL TREATMENT OUPRNT MOVEM.L (A7)+,D! THE RIGHT PLACE * (THIS WILL BE FIXED IN HUMBUG V 1.8, BUT MEANWHILE...) DONULL CLR.L D6 MONO BOARD, IF ANY MOVE.B MCURH,D6 CLR.L D7 MOVE.B MCURV,D7 NOW COMPUTE VIDRAM LOC MULU #80,D7 ADD.W D7,D6 POS ON SCREEN MOVE.B #15,BNWADD MOVTPUT IS NOT * READY, NON-ZERO IF READY TO OUTPUT NEXT. PRESERVE ALL * REGISTERS. IF NO HANDSHAKING IS USED, OR IF HARDWARE * HANDSHAKING IS USED, THEN SIMPLY CHECK BUSY BIT. *********************************************************** OUSTAT JMP.L $116-D7/A6 NO, PULL JMP.L $118C USE CONS * INCREMENT FLAG BY ONE INCFLG LEA ADFLAG(PC),A6 ADD.B #1,(A6) INCREMENT FLAG MOVEM.L (A7)+,D6-D7/A6 PULL RTS * WHEN FLAG NON-ZERO, PROCESS COMMAND PROCES MOVE.B ADFLAG(PC),D6 CMP.B #1,D6 BEQ.S DO"!E.B D6,BNWDAT LSB OF CURSOR ADDRESS LSR.W #8,D6 MOVE.B #14,BNWADD MOVE.B D6,BNWDAT MSB OF CURSOR ADDRESS MOVE.B #10,BNWADD MOVE.B MCURSZ,D6 MOVE.B D6,BNWDAT TURN ON CURSOR CLR.L D6 AND COLOR BOARD TOO, IF ANY MOVE.B CCURH,D6 CLR.LC8 USE CONS *********************************************************** * PART 12. OUTPUT CHARACTER FROM D5 TO OUTPUT PORT. IF NOT * READY, JUST WAIT FOR IT. PRESERVE ALL REGISTERS (INCLUDING D5) ******************************************************1 CMP.B #2,D6 BEQ.S DO2 CMP.B #3,D6 BEQ.S DO3 CLRFLG LEA ADFLAG(PC),A6 ELSE CLEAR FLAG CLR.B (A6) BRA.S OUPRNT AND PRINT CHARACTER * IF FLAG IS CURRENTLY 1, CHECK FOR EQUALS. IF NOT, PRINT; ELSE * SET FLAG TO 2 AND RETURN DO1 CMP.B #'='#" D7 MOVE.B CCURV,D7 NOW COMPUTE VIDRAM LOC MULU #80,D7 ADD.W D7,D6 POS ON SCREEN MOVE.B #15,COLADD MOVE.B D6,COLDAT LSB OF CURSOR ADDRESS LSR.W #8,D6 MOVE.B #14,COLADD MOVE.B D6,COLDAT MSB OF CURSOR ADDRESS MOVE.B #10,COLADD MOV***** * ADFLAG TELLS US WHAT'S GOING ON: * ADFLAG=1 = "ESC " RECEIVED SO FAR, WAITING FOR EQUALS * ADFLAG=2 = "ESC = " RECEIVED SO FAR, Y COORD IS NEXT * ADFLAG=3 = "ESC = Y" RECEIVED SO FAR, X COORD IS NEXT * ADFLAG=0 = NONE OF THE ABOVE ADFLA,D5 CHECK FOR EQUALS BNE.S CLRFLG PRINT IF NOT BRA.S INCFLG YES, INCREMENT FLAG AND RTS * IF FLAG IS CURRENTLY 2, SUBTRACT 32, STORE AS Y COORD IN * BOTH VIDEO BOARDS, INCREMENT FLAG, AND RETURN DO2 MOVE.B D5,D6 SUB.B #32,D6 SUBTRACT 32 MO$#E.B CCURSZ,D6 MOVE.B D6,COLDAT TURN ON CURSOR MOVEM.L (A7)+,D6-D7/A6 RTS AND RETURN ******************************************************* * PART 13. OUTPUT CHANNEL CONTROL. THIS DRIVER DOES NOT * IMPLEMENT CONTROL, SO SIGNAL ERROR AND RTS **G DC.B 0 ADM ACTION FLAG DC.B 0 UNUSED CCURV EQU $FF0C7E COLOR VERTICAL CCURH EQU $FF0C7F COLOR HORIZ COLRAM EQU $D70000 COLOR RAM COLADD EQU $FA07A9 6845 ADDRESS REG COLDAT EQU COLADD+2 6845 DATA REG CCURSZ EQU $FF0C83 COLOR CURSOR VE.B D6,CCURV COLOR VERTICAL MOVE.B D6,MCURV MONO VERTICAL BRA.S INCFLG INCREMENT FLAG AND RTS * IF FLAG IS CURRENTLY 3, SUBTRACT 32, STORE AS X COORD IN * BOTH VIDEO BOARDS, INCREMENT FLAG, AND RETURN DO3 MOVE.B D5,D6 SUB.B #32,D6 SUBTRACT $***************************************************** OCNTRL JMP.L $119E USE CONS ******************************************************* * THE END. LABEL THEEND IS USED TO CALCULATE LENGTH OF * DRIVER. NOTE THAT THERE IS NO TRANSFER ADDRESS. *****     %************************************************** THEEND EQU * END oot routine on these disks to slow down the step rate to an acceptable value. The syntax is FIXBOOT where specifies where the disk to be fixed is located. Note: the boot routine is placed on a disk by the FORMAAuM . 7gB9alf<90a <NuaNqaNqaNqaNqaNqNua9fNu,H M 6P MgJ,"fMg~#gzBgwJ9Qg9Q` ,#eB9gx`@gx9gxNu,#J9Qg9Qc9Q`4(N#ex$fBBA$H-  g 8g`C&I(NfZ  f<R. ,*b؞Rt(vR203@f RRd4(B8I6I6R`Rd`. g7. g74I"5(z84(NI(5IC5Number of occurrences  T program. To avoid this problem recurring again, make sure to use only FORMAT version 1.7 (dated 3-25-87) or later; do not use earlier versions.NOTHING DONE - This is not a valid PT-68K boot disk.NOTHING DONE - Specified disk is not a floppy.B9gNeZ9gg g,"9g^Bgyg9a<90aJ9gyg9aNua,<Nu@|. K`MIaff``ag ,ygzF(GNu@|K`.is The specified file does not exist.FIND is used to find a specified text string within a text file and print out the line number and text of each line which contains that string. The syntax is FIND where the The bootg sectors on this disk do not need fixing.Finished fixing the boot sectors to slow down the step rate.C MIa4ff``NeJg ,ygzF\(GNu@|aFNuB,M<6hgB<Nu<<Nug      PP**  file'-name defaults to a .TXT extension.:  >uP uP uPNuBINTXTCOMBASSYSBAKSCRDATBACDIRPRTOUTBATSRCPIPD   PP** ((  PP**""((""  PP** TT66*6**  `-0  b(NE9|"f,H f.,bB PTAf`.,x |gZ |fJ)||x., |f6)||f:9|"f0., |f)||fIv5Iؠ5I457I5I5Due to an error in the Western Digital spec sheet  ?cH~,Hff &<`DM . 7g gX|`JH~,Hff$<`M . 7g gN<`9PNdfNef Nfggr,HM Ne `9PNdfvNefNEi @*NgKCBBgb,  FOB) GgLGp#K#k#k#k#k B90i&Ei rpKCh fC4i)ifor the 1772 floppy disk controller, some SK*DOS/68K boot disks contain a boot routine which asks some drives to step faster than they are capable of, with the result that they do not boot at all, or boot unreliably. This program changes the b @ffJ9:ghNg6g`f4g.,HM Ne `9Mdp`9MdxeM`FL~Nu     B9gvgMghgvXNeZ9gggB<Nu<<Nu,Hf <FNFi:<<a37ei$NuJyi$fa 909i&fi a$fa9i i:< <a8EGK`@|a`jfFKa9 g f`9ig @f 9ig9i gT9i f0B) !"#$G)$i#j#j#j#j fa.0`9if<`< GL~NuL~NuJyi$fai af"aP9i i:< <aEGK`@|ajjg`FK[aR9 g fM:G|: GaPaf2K><A9C  fQA.:b&aH9Agq(J|NuaJEafBAaf6Aaf*AafAafAafANuJl"f< `a0fGvxJ9vrgGx|.:g `4-0."bAE(N#e|D |S |Kf|;I9|"f,,C,$nAB("A|#I Lfz("a<(#a6A`2<a*QA(#E#c("E"c`$ĵgNuC(Nf$fCIHNuGg$IC(NaH`9ig @f 9ig9ifp9i gT9i f0B))$i#j#j#j#j f a0`9if <` < `< GL~NuJ9:ga g9i9i f<`L~Nu9i:< <aENafK:g><?M`*QaL~Nuaf:dO:]OG:QG|:NGaaDf*K><A9C  f QAa9ANu.< g9CfNu<Nu< `< ` < `<!`7(NI5FTOH is used to save a mirror image of an entire disk (usually a floppy) as a file on another disk (usually a hard disk or RAMdisk). It can then be restored with HTOF. FTOH and HTOF are used to do mirror image backups of fIG@|a"`jfFKa 9 g f`9ig @f 9iNuKCB,H)gC<)g|Nu4aB,"ig<1Pi J)fj1P,#e@B9ii,#`-0."bIE9|"Cj$I(N#e<$(NfzBa0  g gl gB  f < `JgP(NfH`εf6I,#>,"  fG<9G" G(fIo5`fCNuI57(Ng7FROMSDOS reads a text file from a specially-formatted"loppy disks on systems with only one floppy drive, since they copy everything, including the boot sectors. The correct syntax is FTOH where is the drive being read from, and is tJiiiP ii.<Nuii,#1P `1P,#eFB9ii,#iiiP ii.<Nuii,#1P `Jyifa3iNuJyigByiNu9igJ) g MSDOS disk to SK*DOS. Before using, you must first format a disk with MSDOS's FORMAT A: /1 command. Then copy the desired text file to this fresh disk (only one file per disk is allowed). Finally, remove the disk from your MSDOS system, plhe file being written to.0 The file name always uses the extension .DSK.Ki)g2) fa\f>i:<<af(a9if9iGJ) g iBNuJ) g9ii<Nui9ii:<<a"faJf iB)Nui<Nu<<9g g9avQ<Nu9f9ga KHEace it into your SK*DOS system, and use FROMSDOS. The correct syntax is FROMSDOS where is the drive which holds the MSDOS disk, and is the name of the desire$ `99g CaI9|Ba a ~f9Ag"9| aa bf9AfA<0< QI 5) Ag Bf@II 5,0 b eA20I 5,0 bA0I ʠ5,0 b eA0I LaNQa@a2Nu><Gfa(9 ga9gNu<2fNua9jNu.< 'fNuafrGvxJ9vrgGx|.:ga.f:K:g><?M`,Q<L~NuafK|9vr:G>:O:OGd SK*DOS fCile.INVALID INPUT DRIVE NUMBERERROR - REACHED END OF MSDOS DISK.5,0 b eAI 5A"I 5,0 bAhI 5,0 bARBB:@:@>:(I O5B8I _6B@H@ @c<JgI K5BB8I 6I 5) Yg NfJfA1z1|a`zBB:F:G     1G<(, c <<`NF FbN`FGG F 1zj 1zbNu&@ f&@ AJI 5,0e b I'I !5"<BB:BG: ǂ6zNc6:HB8B8I `5BE: E8<8:&Ek Dd I 5`~Ae8B8I 5$< <(WQ<LNua*I|::  G>:O:OG:G|:hGaaf4I ><A9C  fQAI.:~(a:9Ag|NuaIT| ::HG>:>O:7OG:+G|allowed in any one partition is 5. Decide how you would like to split up the TOTAL number of cylinders and enter the counts:Cylinders for Partition H? Partition too big ... Try it again.Partition too small ... Try it again.TOTAL CylinderA BG: 02G$|I 558 3I C6,0cI 85` dI L5`1J1EJ4EfEg I L5`A <A9C  f QAa9ANu.<g9CfNuaEaHfAa f&@: BG Gg<0JGfN4I&`F$@an0<a~K LHD:: @ P:( Enter desired interleave (6 if unsure): How many heads on the drive? (There are 34 sectors per track/side.) Enter the required code (0-7) for drive step rate - consult the controller manual for the required value, or use 5 if unsure:  Total dis 0BBBBB< >O< >O>O  aRfI 0<aazfJf0`aa*fC N,)6)0j,)&) j,))j,)>HFFC d2Baa&faC E Z<$f4 8af^`I *nFK<: g k capacity is  K. THIS EXCEEDS THE MAXIMUM LOGICAL DRIVE CAPACITY; you must therefore partition the disk into  to 4 partitions.Would you like to partition the disk (Y/N)? How many partitions would you like?  You will now partition the disk by `I5You may get help with most SK*DOS commands simply by typing in the command name, followed by a question mark, as in LIST ? In the help messages, the term applies to the file-specification of a file, which includes @*f@ -- -0 I5I ^5HI <@BfLNu<NB( GBG>(hM <(WQaLNuH.: 6 4ga*f"M .: #g> Cylinders (Tracks). The TOTAL number of usable cylinders on this drive is  The MAXIMUM number of cylinders allowed in any one partition is  Oops ... not enough cylinders for this many partitions - try again. The MINIMUM number of cylinders   A. an optional drive number, followed by a period, B. an optional directory letter, followed by a slash, C. a required 8-character file name, D. an optional 3-character extensions, preceded by a period. For example, a typical fi !"#$le-spec might be 1.A/HELP.COM. Names and extensions must start with a letter A-Z; the remaining characters must be either letters, digits 0-9, or the underline _ or asterisk * characters. The drive number, directory, and extension often defaOF completed; data checksum =  Reading from drive  Writing to drive  Verifying drive Error in reading system information recordError in reading drive-track-sector CHECKSUM IS INCORRECT; checksum written was = E yDOES NOT EXIST OR CANNOT BE READERROR IN READING OR WRITING BOOT SECTORREQUESTED DISK IS NOT A FLOPPY DISK OR RAMDISK.ult to standard& values and are not always required.OFL~NuG8B,H G0fZ zvrB,"B+ GB,#G>+k3vtB+vvHFvw<Nu<Nu.<g9C  fNu<Nu.<g9C fNu.<g9C  fNu.<g9!`4B N(N#d `N7aB<$f(Hg ,fa&  f   g3  f< 3`(HNuI5LIST is used to display the contents of a text file. The correct syntax is LIST If not specified, the current work drive and `4(N#e|D |S |K-0."bp*nF-:B-:KAE(H9|"f,Hf((Nf |;..$$G"GBBa<E"a6E#g2<G`a$QI fK`<<B>ևQ`µeNuJfrCVI.6BB(N,8f@KePC  fNuByi$K6:<*QJ9Rg,*9Kp# 9UH f 9fCa^KJ;| BaaNfnAa@dAa4Aa(AaAaAaAaAa9Af^K-an% extension of .TXT will be assumed.2""><""""QB,1dECI6BB:8` ,f><EC`K**nF:uG:Iؠ6(NBB(8h9|"gIˠ5(H7*nF:=G:2,6<B=C">Gf.# e >.`gNGfH(Ng(I5.03<-3an*nF:G:A`>Q G  grCaM4<aK(< a09R gMP< aKD<$a MK`;| BJkzaa^fAaNAaBAa6Aa*AaAaAaAa9AflMJkK- #`4&<&|$| N(N#dI5<$"n. -g- -f "|I5(Nf|;aj g g g gI;5 aD gR g g g gR gr g g g g`&|`a$g$(Sa&<<B0ԀQcC<.HgB<N>OcvI5(B<,:g:IY5(B<`,B8L*<8<-3*<8Nu LI85(H7(N*nF:GG:I45*nF:3G:I5HTOF is used to restore a disk saved with FTOH. The correct syntax is RG  gdNuafDK|E+|aZaf$><>A9C  fQACapNu -f*- -f$- - f- -0f-0Nu||| |0NuH Nuvxx|z ,yt#M#$$|a(aIg6a"aRSf&`b(Sat& where is the file being read from, and is the drive being written to. The file name always uses the extension .DSK.Destination disk error.Destination disk may not be a hard disk.HT`I#eHfL,, B,*nFK<5 g f09|"fBeCffI5I5I5IӠ5LINK is used to link SK*DOS.SYS to the boot routine to make a bootable floppy disk. The correct syntax is LINK SK*DOS.SYSFILfS(a`(Sa&<$|. gPI15aa|``(Sar&<$|. gJI 5ax$HBar4(aN`2(SaD&<$|Ià5aNa.`(Sa$&<$|I5a.$HBa(4(a` g> g؉ b;Nu gI<5NuI!5     Nu( f (Sa. gIs57 LOCATE prints out the load and execution addresses of binary files. The correct syntax is LOCATE The extension defaults to .BIN if not given.The specified file is not binary.AddressH DOES NOT SUPPORT * ANY OF THE ICNTRL AND OCNTRL FEATURES. * THE CABLE SHOULD BE A DB-25 MALE TO A 36 PIN DELTA MALE * PINS 1 - 13 ON DB-25 GO TO PINS 1 - 13 ON 36 PIN DELTA * PINS 14 - 17 ARE NOT CONNECTED ON THE DB-25 * PINS 18 - 25 ON DB-25 GO TO ***** START BRA.S START NEVER EXECUTED DC.W $0003 VERSION NUMBER >>B<< DC.W $444E 'DN' ID MARKER >>B<< ********************************************************** * PART 2. LENGTH SPECIFICATION. THE NEXT LONG WORD DEFINES * THE LENGTH OF THE es, as saved on disk without offset:Absolute Address: Including offset: Absolute execution address = Execution adddress, including offset =  - This file contains relocation information. PINS 22 - 29 ON DELTA * COPYRIGHT (C) 1987 BY PETER A. STARK * MODIFIED BY PERIPHERAL TECHNOLOGY FOR MONO CARD PORT * MOD. >>B<< 6-4-88 FOR NEW DRIVER FORMAT **************** NOTE ************************************ * DEVICE DRIVER FORMAT WAS CHANG DRIVER TO DEVICE.COM. THEEND IS A * LABEL WHICH IS PLACED AT THE VERY END OF THE DRIVER ********************************************************** LENGTH DC.L THEEND ********************************************************** * PART 3. ENTRY POINT PO`(N#eP<$fBfg7 , fI5) YfI5) Yf(Nf`I5MAKEMPTY is used to create an empty file; that is, a file which exists (i.e., is in the directory), but which contains no data and is totally empt ED 6-4-88 TO CONFORM TO * SK*DOS VERSIONS 2.4 AND LATER. THE "DEVICE.COM" PROGRAM * VERSION 1.0 AND LATER, WILL, HOWEVER, WORK WITH EITHER OLD * OR NEW VERSION DRIVERS. CHANGES ARE IDENTIFIED WITH >>B<< * NOTE ESPECIALLY THE CHANGE OF THE DRIVER MARKER INTERS. THE FOLLOWING POINTERS * DEFINE THE ENTRY POINTS INTO THE DRIVER. ALL ARE * RELATIVE TO THE ORIGIN ********************************************************** DC.L INIPOR DRIVER INITIALIZATION DC.L INSTAT INPUT STATUS DC.L INCHAR INPUTy. This is useful for creating files which are later updated. The syntax is MAKEMPTY If not specified, the defaults to the work drive and a .DAT extension.File exists ... delete it?Are you sure?  FROM "DR" * TO "DN" AND THE ADDITION OF THREE NEW CALLS. ********************************************************** * THE FORMAT OF A DEVICE DRIVER FOR SK*DOS IS VERY RIGID, * ESPECIALLY AT THE BEGINNING AND VERY END. YOU MAY * SUBSTITUTE YOUR OWN DR CHARACTER WITH ECHO DC.L INCHAN INPUT CHAR WITHOUT ECHO DC.L ICNTRL INPUT CONTROL ENTRY DC.L OUSTAT OUTPUT STATUS DC.L OUCHAR OUTPUT A CHARACTER DC.L OCNTRL OUTPUT CONTROL ENTRY DC.L INSTA1 INPUT STATUS (1 CHAR ONLY) >>B<< DC.L INC6`DNt"(.4Fl(rtMONOPAR.DVR  }Nu<Nu<Nu<Nu<NuH9{L@Nu9{gy }NqNq }Nu<NuNu IVER CODE, BUT MAKE SURE TO USE THE SAME * FORMAT FOR THE DRIVER AS THIS EXAMPLE. NOTE ESPECIALLY THAT * THIS DRIVER IS NOT EXECUTABLE; IT IS TO BE LOADED INTO MEMORY * BY THE 'DEVICE' UTILITY, AND MUST BE POSITION-INDEPENDENT. *********************** HN1 INPUT 1 CHAR ONLY, NO ECHO >>B<< DC.L BFLUSH FLUSH TYPEAHEAD BUFFER >>B<< ************************************************************* * PART 4. THE FOLLOWING LINE DEFINES THE BEGINNING OF THE ACTUAL * CODE AS BEING AT $0000. IT SERVES TO BRE NAM MONOPAR.DVR OPT PAG PAG * PARALLEL DEVICE DRIVER FOR SK*DOS/68K * This driver uses the parallel printer port on the * IBM compatible MONO-GRAPHICS card. * THIS VERSION IS CONFIGURED FOR THE PT-68K-2 COMPUTER * AND IS A BARE-BONES DRIVER WHIC *********************************** ********************************************************** * PART 1. BEGINNING, VERSION NUMBER, AND A 'DR' MARKER * WHICH IS CHECKED BY 'DEVICE' TO AVOID ERRORS. ***************************************************** AK UP THE OBJECT FILE * TO MAKE IT EASIER FOR 'DEVICE' TO LOAD INTO THE CORRECT PLACE. ************************************************************* ORG $0000 ************************************************************* * PART 5. DATA AREA USED BY !"#$ THE DEVICE DRIVER FOR VARIOUS * PURPOSES. ************************************************************* * BYTES 0-12: * NAME OF THIS DEVICE DRIVER DISK FILE - 12 CHARACTERS PLUS 04 DRNAME DC.B 'MONOPAR.DVR ',4 * BYTE 13: * DEVICE NUMBER SO THIS DRI ONLY TO SEE * WHETHER THERE IS A 'LAST' CHARACTER AT THE END OF THE BUFFER * WHICH HAS NOT YET BEEN INPUT WITH THE INCHN1 ENTRY *********************************************************** INSTAT MOVE.B #0,D5 NO CHARACTER READYREG RTS INSTA1 EQU  EQU INCHAN >>B<< *********************************************************** * PART 10. INPUT CHANNEL CONTROL. THIS DRIVER DOES NOT * IMPLEMENT INPUT CONTROL, SO SIGNAL ERROR AND RTS *********************************************************** ICNTRLVER KNOWS WHICH DEVICE IT IS DEVNUM DC.B 0 WILL BE FILLED IN BY 'DEVICE' * BYTES 14-17: * ADDRESS OF DEVICE DESCRIPTOR FOR THIS DRIVER DEVADD DC.L 0 WILL BE FILLED IN BY 'DEVICE' ************************************************************* * ParINSTAT >>B<< *********************************************************** * PART 8. GET INPUT CHARACTER FROM PORT INTO D5 AND ECHO IT TO * THE OUTPUT PORT. IF NO CHARACTER IS READY, WAIT FOR IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS * O! AND.B #$FB,CCR RETURN NON-ZERO ERROR RTS *********************************************************** * PART 11. OUTPUT STATUS. RETURN ZERO IF OUTPUT IS NOT * READY, NON-ZERO IF READY TO OUTPUT NEXT. PRESERVE ALL * REGISTERS. IF NO HANDSHAKING IS t 6. Device Initialization.  ************************************************************* DATAREG EQU 2*$3BC+$FA0001 STATREG EQU 2*$3BD+$FA0001 CTRLREG EQU 2*$3BE+$FA0001 INIPOR MOVE.B #$C,CTRLREG TURN OFF STROBE RTS ***************************N THE PRINTER PORT, HOWEVER, THERE IS NO INPUT SO ZERO * THIS ENTRY USES THE TYPEAHEAD BUFFER, IF ANY >>B<< *********************************************************** INCHAR MOVE.B #0,D5 RETURN NOTHING RTS ***************************************"USED, OR IF HARDWARE * HANDSHAKING IS USED, THEN SIMPLY CHECK BUSY BIT. *********************************************************** OUSTAT MOVEM.L A6/D7,-(A7) BTST #7,STATREG CHECK BUSY BIT STATEX MOVEM.L (A7)+,A6/D7 RTS ****************************************************** * PART 7. INPUT PORT STATUS CHECK. THIS ROUTINE IS TO RETURN * TWO THINGS: * 1. ZERO IF NO CHARACTER IS READY, NON-ZERO OTHERWISE * 2. D5=0 IF NO CHARACTER IS READY, ELSE THE NUMBER OF * CHARACTERS READY. IN NON-INTE******************** * PART 9. GET INPUT CHARACTER FROM PORT INTO D5 WITHOUT ECHOING TO * THE OUTPUT PORT. IF NO CHARACTER IS READY, WAIT FOR IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS * ON THE PRINTER PORT, HOWEVER, THERE IS NO INPUT SO#************************************* * PART 12. OUTPUT CHARACTER FROM D5 TO OUTPUT PORT. IF NOT * READY, JUST WAIT FOR IT. PRESERVE ALL REGISTERS (INCLUDING D5) *********************************************************** OUCHAR BTST.B #7,STATREG CHRRUPT SYSTEMS, D5 SHOULD * RETURN A 1; ONLY IN INTERRUPT-DRIVEN SYSTEMS WILL IT * INDICATE A REAL NUMBER OF CHARACTERS IN INPUT BUFFER * PRESERVE ALL REGISTERS * ON THE PRINTER PORT, HOWEVER, THERE IS NO INPUT SO ZERO * NOTE CHANGES INTRODUCED IN VER ZERO * NOTE CHANGES INTRODUCED IN VERSION 0003 : >>B<< * THERE ARE NOW TWO INCH-- ENTRIES, ALTHOUGH BOTH DEFAULT >>B<< * TO THE SAME ROUTINE IF THERE IS NO TYPEAHEAD BUFFER ON THE * INPUT PORT: INCHAN TAKES THE NEXT CHARACTER FROM THE TYPEAHEAD * BUF$ECK IF BUSY BEQ.S OUCHAR WAIT UNTIL READY MOVE.B D5,DATAREG OUTPUT THE CHARACTER MOVE.B #$D,CTRLREG ACTIVATE STROBE LINE NOP NOP MOVE.B #$C,CTRLREG CLEAR STROBE LINE RTS ******************************************************* * PART SION 0003 : >>B<< * THERE ARE NOW TWO INSTA- ENTRIES, ALTHOUGH BOTH DEFAULT * TO THE SAME ROUTINE IF THERE IS NO TYPEAHEAD BUFFER ON THE * INPUT PORT: INSTAT CHECKS TO SEE WHETHER THERE IS ANY CHARACTER * IN THE TYPEAHEAD BUFFER, WHEREAS INSTA1 CHECKSFER (AND CLEARS THE INSTA1 FLAG), WHEREAS INCHN1 TAKES ONLY * THE CHARACTER FROM THE END OF THE TYPEAHEAD BUFFER, AND CLEARS * BOTH FLAGS. *********************************************************** INCHAN MOVE.B #0,D5 RETURN NOTHING RTS INCHN1 13. OUTPUT CHANNEL CONTROL. THIS DRIVER DOES NOT * IMPLEMENT CONTROL, SO SIGNAL ERROR AND RTS ******************************************************* OCNTRL AND.B #$FB,CCR RETURN NON-ZERO ERROR RTS ************************************************      ***** * PART 14. NEW IN REV. >>B<<. WHEN A TYPEAHEAD BUFFER * EXISTS, THIS FLUSHES IT AND CLEARS BOTH INSTAT AND * INSTA1 FLAGS TO INDICATE THAT ALL IS EMPTY. ***************************************************** BFLUSH RTS IN THIS CASE DOES NOTHINGETER A. STARK * THE FORMAT OF A DEVICE DRIVER FOR SK*DOS IS VERY RIGID, * ESPECIALLY AT THE BEGINNING AND VERY END. YOU MAY * SUBSTITUTE YOUR OWN DRIVER CODE, BUT MAKE SURE TO USE THE SAME * FORMAT FOR THE DRIVER AS THIS EXAMPLE. NOTE ESPECIALLY THAT ***************************************************** * PART 2. LENGTH SPECIFICATION. THE NEXT LONG WORD DEFINES * THE LENGTH OF THE DRIVER TO DEVICE.COM. THEEND IS A * LABEL WHICH IS PLACED AT THE VERY END OF THE DRIVER *******************************! >>B<< ******************************************************* * THE END. LABEL THEEND IS USED TO CALCULATE LENGTH OF * DRIVER. NOTE THAT THERE IS NO TRANSFER ADDRESS. ******************************************************* THEEND EQU * END  * THIS DRIVER IS NOT EXECUTABLE; IT IS TO BE LOADED INTO MEMORY * BY THE 'DEVICE' UTILITY, AND MUST BE POSITION-INDEPENDENT. * MOD. >>A<< 3-28-87 TO WORK WITH CSC 68K ASSEMBLER * FIXED BY FREDERIC BROWN >>B<< 6-16-87 FOR PT-2 COMPUTER * MOD. >>C<< 6-4 *************************** LENGTH DC.L THEEND ********************************************************** * PART 3. ENTRY POINT POINTERS. THE FOLLOWING POINTERS * DEFINE THE ENTRY POINTS INTO THE DRIVER. ALL ARE * RELATIVE TO THE ORIGIN ************` N*n ?gRC$H&I f* f& f" f f f f f| Ik5RfIx5I5NOBEEP cancels the effects of BEEP. The correct syntax is NOBEEPSK*DOS: aaaah ... peace and quiet.Sorry ... can't use NOBEEP now. -88 FOR NEW DRIVER FORMAT **************** NOTE ************************************ * DEVICE DRIVER FORMAT WAS CHANGED 6-4-88 TO CONFORM TO * SK*DOS VERSIONS 2.4 AND LATER. THE "DEVICE.COM" PROGRAM * VERSION 1.0 AND LATER, WILL, HOWEVER, WORK WITH EI ********************************************** DC.L INIPOR DRIVER INITIALIZATION DC.L INSTAT INPUT STATUS DC.L INCHAR INPUT CHARACTER WITH ECHO DC.L INCHAN INPUT CHAR WITHOUT ECHO DC.L ICNTRL INPUT CONTROL ENTRY DC.L OUSTAT OUTPUT ST THER OLD * OR NEW VERSION DRIVERS. CHANGES ARE IDENTIFIED WITH >>C<< * NOTE ESPECIALLY THE CHANGE OF THE DRIVER MARKER FROM "DR" * TO "DN" AND THE ADDITION OF THREE NEW CALLS. **************** IMPORTANT !! **************************** ** IF USING ASM ATUS DC.L OUCHAR OUTPUT A CHARACTER DC.L OCNTRL OUTPUT CONTROL ENTRY DC.L INSTA1 INPUT STATUS (1 CHAR ONLY) >>C<< DC.L INCHN1 INPUT 1 CHAR ONLY, NO ECHO >>C<< DC.L BFLUSH FLUSH TYPEAHEAD BUFFER >>C<< ************************************6`DNx4:@FL^p4@vxPARALLEL.DVRxNu<Nu<Nu<Nu<NuH9L@Nu9gNu<NuNu .COM TO ASSEMBLE THIS FILE, CHANGE "PAG" ** TO "PAGE" IN LINES 2 AND 3, AND MAKE SURE TO ** USE THE -F OPTION ********************************************************** ********************************************************** * PART 1. BEGINNING, VE ************************* * PART 4. THE FOLLOWING LINE DEFINES THE BEGINNING OF THE ACTUAL * CODE AS BEING AT $0000. IT SERVES TO BREAK UP THE OBJECT FILE * TO MAKE IT EASIER FOR 'DEVICE' TO LOAD INTO THE CORRECT PLACE. ******************************** NAM PARALLEL.DVR OPT PAGE PAGE * PARALLEL DEVICE DRIVER FOR SK*DOS/68K * THIS VERSION IS CONFIGURED FOR THE PT-68K-2 COMPUTER * AND IS A BARE-BONES DRIVER WHICH DOES NOT SUPPORT * ANY OF THE ICNTRL AND OCNTRL FEATURES. * COPYRIGHT (C) 1987 BY P RSION NUMBER, AND A 'DR' MARKER * WHICH IS CHECKED BY 'DEVICE' TO AVOID ERRORS. ********************************************************** START BRA.S START NEVER EXECUTED DC.W $0004 VERSION NUMBER >>C<< DC.W $444E 'DN' ID MARKER >>C<< ***** ***************************** ORG $0000 ************************************************************* * PART 5. DATA AREA USED BY THE DEVICE DRIVER FOR VARIOUS * PURPOSES. ************************************************************* * BYTES 0-12: !"#$ * NAME OF THIS DEVICE DRIVER DISK FILE - 12 CHARACTERS PLUS 04 DRNAME DC.B 'PARALLEL.DVR',4 * BYTE 13: * DEVICE NUMBER SO THIS DRIVER KNOWS WHICH DEVICE IT IS DEVNUM DC.B 0 WILL BE FILLED IN BY 'DEVICE' * BYTES 14-17: * ADDRESS OF DEVICE DESCRIPTHOULD * RETURN A 1; ONLY IN INTERRUPT-DRIVEN SYSTEMS WILL IT * INDICATE A REAL NUMBER OF CHARACTERS IN INPUT BUFFER * PRESERVE ALL REGISTERS * ON THE PRINTER PORT, HOWEVER, THERE IS NO INPUT SO ZERO * NOTE CHANGES INTRODUCED IN VERSION 0004 : >>C<< * NTRODUCED IN VERSION 0004 : >>C<< * THERE ARE NOW TWO INCH-- ENTRIES, ALTHOUGH BOTH DEFAULT >>C<< * TO THE SAME ROUTINE IF THERE IS NO TYPEAHEAD BUFFER ON THE * INPUT PORT: INCHAN TAKES THE NEXT CHARACTER FROM THE TYPEAHEAD * BUFFER (AND CLEARS THE INOR FOR THIS DRIVER DEVADD DC.L 0 WILL BE FILLED IN BY 'DEVICE' ************************************************************* * PART 6. DEVICE INITIALIZATION. THIS CODE INITIALIZES PORT A * OF THE 68230 PI/T AT $FE0080 IN THE PT68K-2 COMPUTER. IT IS  THERE ARE NOW TWO INSTA- ENTRIES, ALTHOUGH BOTH DEFAULT * TO THE SAME ROUTINE IF THERE IS NO TYPEAHEAD BUFFER ON THE * INPUT PORT: INSTAT CHECKS TO SEE WHETHER THERE IS ANY CHARACTER * IN THE TYPEAHEAD BUFFER, WHEREAS INSTA1 CHECKS ONLY TO SEE * WHET!STA1 FLAG), WHEREAS INCHN1 TAKES ONLY * THE CHARACTER FROM THE END OF THE TYPEAHEAD BUFFER, AND CLEARS * BOTH FLAGS. *********************************************************** INCHAN MOVE.B #0,D5 RETURN NOTHING RTS INCHN1 EQU INCHAN >>C<< **** ONLY EXECUTED WHEN LOADED BY 'DEVICE'. ALL REGISTERS CAN BE * CHANGED. * THIS ENTIRE PART REVISED >>B<< ************************************************************* * HARDWARE EQUATES FOR THE PORT PIT EQU $FE0081 PIT ADDRESS GENCON EQU PIT GENHER THERE IS A 'LAST' CHARACTER AT THE END OF THE BUFFER * WHICH HAS NOT YET BEEN INPUT WITH THE INCHN1 ENTRY *********************************************************** INSTAT MOVE.B #0,D5 NO CHARACTER READY RTS INSTA1 EQU INSTAT >>C<< ********"******************************************************** * PART 10. INPUT CHANNEL CONTROL. THIS DRIVER DOES NOT * IMPLEMENT INPUT CONTROL, SO SIGNAL ERROR AND RTS *********************************************************** ICNTRL AND.B #$FB,CCR RETUERAL CONTROL REG PADIR EQU PIT+4 DIRECTION REG PACONT EQU PIT+12 CONTROL REGISTER DATREG EQU PIT+16 DATA REGISTER STAREG EQU PIT+26 PORT STATUS REGISTER * INITIALIZE PORT - SETS UP PORT A FOR UNIDIRECTIONAL OUTPUT, * H2 PULSED OUTPUT MODE, H1*************************************************** * PART 8. GET INPUT CHARACTER FROM PORT INTO D5 AND ECHO IT TO * THE OUTPUT PORT. IF NO CHARACTER IS READY, WAIT FOR IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS * ON THE PRINTER PORT, HO#RN NON-ZERO ERROR RTS *********************************************************** * PART 11. OUTPUT STATUS. RETURN ZERO IF OUTPUT IS NOT * READY, NON-ZERO IF READY TO OUTPUT NEXT. PRESERVE ALL * REGISTERS. IF NO HANDSHAKING IS USED, OR IF HARDWARE * TO DETECT RISING EDGE INIPOR MOVE.B #0,GENCON START WITH GENERAL CTRL =0 MOVE.B #$FF,PADIR 8 OUTPUT BITS UTPUT MOVE.B #$78,PACONT PORT A,SUBMODE 01,PULSED MOVE.B #$10,GENCON ENABLE PORT RTS **********************************************WEVER, THERE IS NO INPUT SO ZERO * THIS ENTRY USES THE TYPEAHEAD BUFFER, IF ANY >>C<< *********************************************************** INCHAR MOVE.B #0,D5 RETURN NOTHING RTS *********************************************************** *$ HANDSHAKING IS USED, THEN SIMPLY CHECK BUSY BIT. * THIS ENTIRE PART REVISED >>B<< *********************************************************** OUSTAT MOVEM.L A6/D7,-(A7) >>A<< BTST #0,STAREG CHECK H1 STATUS BIT STATEX MOVEM.L (A7)+,A6/D7 >>A<< ************* * PART 7. INPUT PORT STATUS CHECK. THIS ROUTINE IS TO RETURN * TWO THINGS: * 1. ZERO IF NO CHARACTER IS READY, NON-ZERO OTHERWISE * 2. D5=0 IF NO CHARACTER IS READY, ELSE THE NUMBER OF * CHARACTERS READY. IN NON-INTERRUPT SYSTEMS, D5 S PART 9. GET INPUT CHARACTER FROM PORT INTO D5 WITHOUT ECHOING TO * THE OUTPUT PORT. IF NO CHARACTER IS READY, WAIT FOR IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS * ON THE PRINTER PORT, HOWEVER, THERE IS NO INPUT SO ZERO * NOTE CHANGES I RTS >>A<< *********************************************************** * PART 12. OUTPUT CHARACTER FROM D5 TO OUTPUT PORT. IF NOT * READY, JUST WAIT FOR IT. PRESERVE ALL REGISTERS (INCLUDING D5) * THIS ENTIRE PART REVISED >>B<< *********************      ************************************** OUCHAR BTST.B #0,STAREG CHECK IF READY BEQ.S OUCHAR WAIT UNTIL READY MOVE.B D5,DATREG OUTPUT THE CHARACTER RTS ******************************************************* * PART 13. OUTPUT CHANNEL CONTROL.a good idea at other times as well, as it moves the heads to a part of the disk which does not normally hold any data and which would therefore not be damaged by the head landing on it when power is shut off. The syntax is simply PARK with no s a prompted delete utility which allows you to quickly and easily delete files from a disk. The syntax is PDELETE The drive and directory must be provided, and must be specified as either just a drive number, o! THIS DRIVER DOES NOT * IMPLEMENT CONTROL, SO SIGNAL ERROR AND RTS ******************************************************* OCNTRL AND.B #$FB,CCR RETURN NON-ZERO ERROR RTS ***************************************************** * PART 14. NEW IN REVother arguments.Parking drive Hardware problem - BUSY too long - parking aborted.r as both a drive number and directory letter, such as just 1, or as 1.A/. The is optional and works like that in CAT - only those files matching the names and/or extensions listed in the match list (if provided) will be prompted for.". >>C<<. WHEN A TYPEAHEAD BUFFER * EXISTS, THIS FLUSHES IT AND CLEARS BOTH INSTAT AND * INSTA1 FLAGS TO INDICATE THAT ALL IS EMPTY. ***************************************************** BFLUSH RTS IN THIS CASE DOES NOTHING >>C<< ******************* ` N|UK*h- 0e."bE.gK^B--  gf.g`  gZ ,gT .ft- *g Aed zb\.!eK-  g ,g /g  g .g`(4I5*h E$EKBBB*h  gn(gh  f-` Already deleted. Delete  (Yes/No/Quit) ? Incorrect drive numberError in reading directory.Prompted file delete  Not enough memory for directory.#************************************ * THE END. LABEL THEEND IS USED TO CALCULATE LENGTH OF * DRIVER. NOTE THAT THERE IS NO TRANSFER ADDRESS. ******************************************************* THEEND EQU * END  .fR--d *fLI.!e1E-d *f2Ij.!e1E -d *fIP.!e1E `I:#K9:4 g jK`(H f:(H f2,kgKM< : *g:g" g& *g g-fKQ`2J-k`J-j`g -`4/e Jg E:I5PEEK is used to print out the hex contents of a memory location. The correct syntax is PEEK

where the
is a hexadecimal number of 1 through 8 digits specifying an absolute address. NOTE: PeekH`*n ?gD nFA"H<< <AaC@< <$<Ba)fNI| @<) FNF|iaHaf89Af,It53aNu.<g9CfNuIW5aEaHfAa where
is a hexadecimal number of 1 to 8 digits, and  !"#$ is a 2-digit hexadecimal number (byte). CAUTION: Poking into I/O locations or non-existent locations may cause a bus error or may cause the system to crash. to Data invalid or missingChanging StByByB9 B9 Nu9 zf(H>9yLNu9 zfJ9 NuH,y .L@Nu9NuE9 {gaD9 {gaR9 {ga.EJyigy7ijByiNuH,y .gDL@NuH gJ  gn  gv g YL@NuJyigByi`r DgB<Nu9 zf9 {ga(9 {ga$J9 g:9 B9 B9 NuH`"H`*9 g@9 fZHB9gHJ9ag9 gaLJFg 9 g3  gL NsL J9Ns9` N*n ?gC$H&I f f f f f f f gRfI 5< CM-  g.gSfI5JgBS`<CSfI5I5PROMPT allows you to change the SK*DOS prompt. The correct syntax is PROMPT gf`g\B9 ?9 P_,G9 }G9 9 OoB9 9 gV9 B9 B9 PGikNik i9 kLNuM><,@,@,@,@,@,@,@,@!Z ga` >: $z G? Gg$>: K pGG?K: NuJ9 g <  ><QQNukP Fg Sg 7gK Jmg9 ff9 gJm jb9 f9 g,- ae" zew prompt> where the may be 1 to 8 characters.SK*DOS: The new prompt is now enabled.Sorry, PROMPT only works once.The new prompt must be less than 9 characters.UQ.<O/ K,< 9 }*QB9  *_`RJ9 g9 `<`Q`H g  g  g g g"[b`&9 g- ae zb ,--Nu<--Nu,--Nu<- - NuJg4 g& *g8 6g2 8g" :g EegNu BBFNu ` `9 g>9 GNfJ9f*y>/<F Fe<<  f g`I&L#e<$ n g.g(Nk fz g ,gz`jACf䳈fHfܳf,- Cg Dg Wg Xg  g .g`&`@```Cf7I5I5I5PROTECT is used to display or change a filV  g  g` g`g~B9 ?9 ~P_,G9 |9 {f`9g9gG9 9  OoB9 9 ~ gV9 ~B9 B9 ~PGN 9 LNuM><9 {#\ FN9 fx y `d9 fX y `D9 g`9 gTJ9f"NO9 g The is one or more of the following letters: C - Catalog protection. May not be listed in catalog. D - Delete protection -Wf ,@Q`9g,.@9g,Q.<O/ K,< 9 |9 {f*Q`9g*QB9  ~*_`(J9 gf9 `J9 ~gP9 ~`B9 `.</ K,< 9 |9 {f*Q`9g*QB9 B9 ~*_`]g4 g. g g. g4`t `h `\ `P `D `811!!122@@33##344$$455%%566^^77&&788**899((900))0--__==+ cannot be deleted. W - Write protection - cannot be written into. X - Remove any prior protection. In case of conflict, later option letters supersede earlier ones.Missing or invalid parameter.Specified file does not exist.X U><`Q`aZ`F9 zf9 {ga(9 {ga$J9 g9 B9 B9 NuH`H`9 zfP9 {ga9 {gaH<: |z vgM t6`FF?M b,`gd#Bf3G9G",_fCc,<Kd  f-  gf. ? - PRINT THIS HELP MESSAGE NUMBER AND RETURN - GO TO SPECIFIED LINE NUMBER COMMAND: READ allows you to browse through a text file forward and backward. The correct syntax is READ where the defaults toTO MOVE CURSOR TO MIDDLE OF * SCREEN WITHOUT ERASING IT MOVMID MOVE.B #$1B,D4 ESCAPE DC PUTCH MOVE.B #$3D,D4 = DC PUTCH MOVE.B #12,D4 ROW 12 DC PUTCH CLR.L D0 MOVE.B #$20,D4 COLUMN 0 DC PUTCH RTS * ERALIN - SUBROUTINE TO ERASE R !"#$EMAINDER OF LINE FROM * CURRENT CURSOR POSITION TO END OF LINE ERALIN MOVE.L CURPOS(PC),D3 GET CURRENT POSITION ON LINE EL1 ADD.L #1,D3 ADD 1 TO IT CMP.L #WIDTH,D3 COMPARE WITH WIDTH BCC.S EL2 STOP WHEN DONE MOVE.B #$20,D4 ELSE OUTPUT A  MOVE.B D3,FCBDAT+3(A4) PUT JUST BEFORE CURRENT DATA MOVE.L #252,D6 READY TO COUNT LEA FCBDAT+4(A4),A5 POINT TO FIRST DATA BYTE LOOP2 MOVE.B 0(A5)+,D7 GET NEXT BYTE CMP.B #$0D,D7 IS IT CR? BNE.S NOCR NO MOVE.B -2(A5),D7 YES, BUT CHEC PC),D4 ADD.L #1,D4 FIX IT UP MOVE.L #0,D5 DC OUT5D PRINT CURRENT LINE NUMBER LEA PROMP1(PC),A4 PRINT "-----" AGAIN DC PNSTRN CLR.L D4 MOVE.B #$0D,D4 DC PUTCH DO CR AGAIN NEXT1 DC INNOEC GET COMMAND CHARACTER WITHOUT ECHO AND.B #SPACE DC PUTCH BRA.S EL1 AND REPEAT EL2 RTS * START OF ACTUAL PROGRAM START DC VPOINT MOVE.L A6,A4 POINT TO SYSTEM FCB DC GETNAM GET FILE SPEC INTO FCB BCC.S NAMEOK IF FILE NAME WAS OK BRA.L HELP2 * ERROR ROUTINE ERROR DC PERROR  K PREVIOUS CMP.B #9,D7 WAS IT SPACE COMPRESSION? BEQ.S NOCR YES, SO IT'S $D SPACES! ADD.L #1,D2 NO, ADD 1 TO COUNTER NOCR SUB.B #01,D6 DECREMENT COUNTER BNE.S LOOP2 REPEAT UNTIL DONE ADD.L #6,A1 POINT TO NEXT TABLE ENTRY MOVE.L A1,D7!$7F,D5 MASK PARITY CMP.B #$30,D5 BCS.S ISCOMD <$30 IS COMMAND CMP.B #$39,D5 BLS.S ISNUMB 30-39 IS NUMBER ISCOMD AND.B #$1F,D5 MASK PARITY CMP.B #$14,D5 T BEQ.L GOTOP GO TO TOP OF FILE CMP.B #$02,D5 B BEQ.L GOBOT GO TO BOTTOM OFPRINT ERROR CODE DC FCSCLS CLOSE THE FILE WARMSS DC WARMST AND RETURN TO SK*DOS * FILE SPEC WAS OK; DEFAULT TO .TXT NAMEOK MOVE.L #1,D4 DEFAULT EXTENSION CODE DC DEFEXT DEFAULT TO .TXT * NOW OPEN THE FILE DC FOPENR GO OPEN THE FILE BNE ADD.L #10,D7 CMP.L MEMEND(A6),D7 CHECK IF CLOSE TO MEMEND BCS.S LOOP1 OK TO CONTINUE LEA MEMMSG(PC),A4 DC PSTRNG PRINT "TOO CLOSE TO MEMEND" DC WARMST AND QUIT * AT END OF SCAN DON1 SUB.L #1,D2 LEA LINES(PC),A5 MOVE.L D2,(A5) N" FILE CMP.B #$12,D5 R BEQ.L GOBAK BACK ONE SCREEN CMP.B #$16,D5 V BEQ.L GOFOR FORWARD ONE SCREEN CMP.B #$11,D5 Q BEQ.L USETOP GO USE TOP OF SCREEN CMP.B #$1A,D5 Z BEQ.L USEBOT GO USE BOTTOM OF SCREEN CMP.B #$01,D5 A BEQ.L U .S ERROR IF NOT ZERO (Z = 0) * NOW CLOSE THE FILE AGAIN DC FCLOSE GO CLOSE THE FILE BNE.S ERROR IF NOT ZERO (Z = 0) * NOW LOOP THROUGH FILE TO MAKE A TABLE OF SECTORS * AND NUMBER OF LINES IN EACH MOVE.L #0,D2 FIRST LINE IN FIRST SECTOR UMBER OF LINES MOVE.L #$FFFFFFFF,(A1)+ MARK END OF TABLE MOVE.L A1,A3 STORE END OF TABLE ADDRESS LEA TOPLIN(PC),A5 MOVE.L #1,(A5) LINE 1 IS TOP OF DISPLAY AREA LEA MODE(PC),A5 MOVE.B #1,(A5) SET MODE TO ALL MOVE.L #HEIGHT,D7 SUB.L ##SEALL GO USE ALL OF SCREEN CMP.B #$0D,D5 CR? BEQ.L GOFOR FORWARD ONE SCREEN CMP.B #$13,D5 S? BEQ.L WARMSS YES, QUIT CMP.B #$1F,D5 NEED HELP? BEQ HELP ISNUMB LEA NUMBER(PC),A3 CLR.L (A3) CLEAR DESIRED LINE NUMBER BRA.S DIGIT1 CH LEA TABLE(PC),A1 POINT TO TABLE MOVE.L FCBFTR(A4),FCBDAT(A4) BEGINNING OF FILE IS HERE CLR.B FCBDAT+255(A4) CLEAR LAST BYTE OF 'PREV' SCTR LOOP1 MOVE.W FCBDAT(A4),D7 GET POINTER TO NEXT BEQ.S DON1 WHEN FINISHED MOVE.L D2,0(A1) FIRST LINE1,D7 LEA LONSCR(PC),A5 MOVE.L D7,(A5) KEEP AN EMPTY LINE AT BOTTOM OF SCREEN LEA CURLIN(PC),A5 MOVE.L #0,(A5) DISPLAY STARTS WITH FIRST BRA.L HELP SHOW SIGNON AND HELP MESSAGE * WHEN ENTIRE FILE IS SCANNED, NOW ACCEPT COMMANDS NXTCOM MO$ECK FOR DIGITS DIGIT DC INNOEC GET NEXT DIGIT AND.B #$7F,D5 MASK PARITY CMP.B #$0D,D5 END OF NUMBER? BNE.S DIGIT1 NO CLR.L D1 MOVE.L NUMBER(PC),D1 YES; FIX NUMBER SO IT STARTS WITH 0 SUB.L #1,D1 LEA NUMBER(PC),A3 MOVE.L D1,(A3)  NUMBER BNE.S LOOP1A FIRST LINE IS PROBLEM ADD.L #1,D2 SO FIX IT LOOP1A MOVE.W D7,4(A1) PUT INTO TABLE MOVE.W D7,FCBCTR(A4) MAKE IT CURRENT TRACK MOVE.B FCBDAT+255(A4),D3 SAVE AS PREVIOUS BYTE DC SREAD GO READ THIS SECTOR BNE.S ERROR VE.B #$0D,D4 DC PUTCH DO CR LEA PROMP1(PC),A4 DC PNSTRN PRINT "------ " MOVE.L LINES(PC),D4 CLR.L D5 NO SPACES DC OUT5D PRINT NUMBER OF LINES LEA #PROMP2(PC),A4 PRINT " LINES, NOW STARTING AT " DC PNSTRN CLR.L D1 MOVE.L CURLIN( BRA.L GOTOLI GO TO SPECIFIED LINE DIGIT1 CLR.L D4 MOVE.B D5,D4 DC PUTCH ECHO IT SUB.B #$30,D4 CHECK FOR DIGITS BCS.L NXTCOM NO GOOD CMP.B #9,D4 BHI.L NXTCOM STILL NO GOOD MOVEM.W D4-D4,-(A7) SAVE VALID DIGIT CLR.L D1 MOVE.L NU     MBER(PC),D1 NUMBER GET DESIRED LINE NUMBER MULU #10,D1 MULT BY 10 ADD.W 0(A7)+,D1 ADD IN CURRENT DIGIT LEA NUMBER(PC),A3 MOVE.L D1,(A3) BRA.S DIGIT GO GET NEXT DIGIT * COMMAND PROCESSING ROUTINES * GOTO TOP OF FILE GOTOP CLR.L D1 LEA) MOVE.L #HEIGHT,D0 BRA.S UT1 * GOTOLI - ROUTINE TO DISPLAY TEXT BEGINNING AT NUMBER GOTOLI MOVE.L NUMBER(PC),D1 CMP.L LINES(PC),D1 CHECK FOR VALID NUMBER BCS.S GOTOK IF OK GNOG MOVE.B #7,D0 ELSE RING BELL DC PUTCH BRA.L NXTCOM AND $EXPANSIONS? BEQ.S GFNO YES, SO $D WAS 13 SPACES! CMP.L NUMBER(PC),D7 CHECK IF SAME AS DESIRED BEQ.S GOPRIN YES, GO START PRINTING ADD.L #1,D7 INCREMENT LINE COUNTER BRA.S GFL1 NO, LOOK FOR MORE * NOW SET UP EVERYTHING TO PRINT GOPRIN  NUMBER(PC),A3 MOVE.L D1,(A3) DESIRE LINE 1 BRA.L GOTOLI * GO TO BOTTOM OF FILE GOBOT MOVE.L LINES(PC),D1 NUMBER OF LINES IN FILE SUB.L LONSCR(PC),D1 CALCULATE NEW TOP LINE LEA NUMBER(PC),A3 MOVE.L D1,(A3) BRA.L GOTOLI * GO UP ONE SCREE REPEAT COMMAND LOOP * ON VALID LINE NUMBER, FIND IN TABLE GOTOK LEA TABLE(PC),A1 POINT TO TABLE GLOOP1 CMP.L 0(A1),D1 CHECK AGAINST TABLE BEQ.S GFOUND FOUND SECTOR BCS.S GPREV JUST STEPPED PAST SECTOR ADD.L #6,A1 POINT TO NEXT TABLE ENTRY %MOVE.L A0,D0 POINTER TO FIRST CHAR TO PRINT SUB.L A4,D0 SUB.L #FCBDAT,D0 CONVERT TO FCBDPT MOVE.B D0,FCBDPT(A4) SET UP CORRECT DATA POINTER MOVE.L NUMBER(PC),D1 LEA CURLIN(PC),A3 MOVE.L D1,(A3) SET CURRENT LINE NUMBER MOVE.L TOPLIN(PCN GOBAK MOVE.L CURLIN(PC),D1 SUB.L LONSCR(PC),D1 CALCULATE NEW TOP LINE LEA NUMBER(PC),A3 MOVE.L D1,(A3) BRA.S GOTOLI * GO DOWN ONE SCREEN GOFOR MOVE.L CURLIN(PC),D1 ADD.L LONSCR(PC),D1 ADD NUMBER OF LINES ON SCREEN LEA NUMBER(PC),A3  CMP.L TABEND(PC),A1, AT END OF TABLE? BEQ.S GNOG YES, NO GOOD BRA.S GLOOP1 NO, LOOK FOR MORE * JUST STEPPED PAST SECTOR GPREV SUB.L #6,A1 POINT BACK TO PREV SECTOR * FOUND THE SECTOR, READ IT GFOUND MOVE.L A6,A4 MOVE.W 4(A1),D1 GET TRA&),D0 CHECK WHERE WE ARE TO START PRINTING CMP.L #1,D0 IS IT TOP? BEQ.S YESTOP YES BSR.L MOVMID NO, MOVE TO MIDDLE BRA.S GP2 YESTOP BSR.L MOVTOP MOVE TO TOP OF SCREEN GP2 MOVE.L LONSCR(PC),D2 LINES ON SCREEN = COUNTER MOVE.B #1,FCBRW(AMOVE.L D1,(A3) BRA.S GOTOLI * USE TOP OF SCREEN USETOP LEA MODE(PC),A3 MOVE.B #2,(A3) MODE IS NOT 1 MOVE.L #1,D0 LEA TOPLIN(PC),A3 MOVE.L D0,(A3) LINE 1 IS AT TOP MOVE.L #HEIGHT,D0 HEIGHT OF SCREEN ASR.L #1,D0 DIVIDE BY 2 UT1 SUB.L  !CK AND SECTOR MOVE.W D1,FCBCTR(A4) PUT INTO FCB DC SREAD GO READ THE SECTOR BNE.L ERROR LEA FCBDAT+4(A4),A0 POINT X TO DATA AREA CLR.B -1(A0) CLEAR BYTE BEFORE THE DATA MOVE.L NUMBER(PC),D1 CHECK LINE NUMBER BEQ.S GOPRIN START AT BE'4) FOOL DOS INTO THINKING IT'S OPEN LEA CURPOS(PC),A3 CLR.L (A3) CURRENT POSITION IS AT 0 * MAIN LOOP TO READ AND PRINT EACH CHARACTER PLOOP DC FREAD GO READ NEXT CHARACTER BEQ.S CHAROK GO ON IF NO ERROR * IF THERE WAS AN ERROR, SEE IF EN#1,D0 SUBTRACT 1 LEA LONSCR(PC),A3 MOVE.L D0,(A3) MOVE.L CURLIN(PC),D1 LEA NUMBER(PC),A3 MOVE.L D1,(A3) START WITH THIS LINE BRA.S GOTOLI GO DISPLAY * USE BOTTOM OF SCREEN USEBOT LEA MODE(PC),A3 MOVE.B #2,(A3) MODE IS NOT 1 MOVE.L  "GINNING FOR LINE 0 MOVE.L #252,D1 COUNT UP TO 252 DATA BYTES MOVE.L 0(A1),D7 GET STARTING LINE NUMBER IN SECTOR BNE.S GFL1 CONTINUE IF NOT ZERO MOVE.L #1,D7 ELSE FORCE IT TO BE 1 * LOOP TO LOOK FOR FIRST CR IN LINE GFL1 MOVE.B 0(A0)+,D0 G(D OF FILE MOVE.B 1(A4),D0 GET ERROR CODE CMP.B #8,D0 COMPARE WITH END OF FILE ERROR BNE.L ERROR NOT END OF FILE, SO REAL ERROR BRA.L NXTCOM ON E-O-F, JUST RETURN TO COMMAND MODE * CONTINUE IF CHARACTER IS OK CHAROK CMP.B #$0A,D5 IS IT LI#HEIGHT,D0 HEIGHT OF SCREEN ASR.L #1,D0 DIVIDE BY 2 LEA TOPLIN(PC),A3 MOVE.L D0,(A3) MIDDLE OF SCREEN IS TOP BRA.S UT1 * USE ALL OF SCREEN USEALL LEA MODE(PC),A3 MOVE.B #1,(A3) MODE IS 1 MOVE.L #1,D0 LEA TOPLIN(PC),A3 MOVE.L D0,(A3 #ET A BYTE CMP.B #$0D,D0 WAS IT CR? BEQ.S GFYES YES GFNO SUB.B #01,D1 DECREMENT COUNTER BNE.S GFL1 CONTINUE LOOKING FOR CR BRA.S GNOG NO GOOD IF NO CR WAS FOUND GFYES MOVE.B -2(A0),D0 CHECK THE BYTE BEFORE IT CMP.B #9,D0 WAS IT SPACE )NE FEED? BEQ.S PLOOP YES, IGNORE IT CMP.B #$0D,D5 IS IT CR? BEQ.S ERASE YES, ERASE TO END OF LINE FIRST MOVE.L CURPOS(PC),D1 CHECK CURRENT POSITION CMP.L #WIDTH-1,D1 AGAINST WIDTH BEQ.S PLOOP IGNORE IF ALREADY AT END OF LINE MOVE.B  !"#$*D5,D4 DC PUTCH NO, PRINT IT LEA CURPOS(PC),A3 ADD.L #1,(A3) INCREMENT CURRENT POSITION BRA.S PLOOP AND CONTINUE ERASE MOVE.B MODE(PC),D0 CHECK MODE CMP.B #1,D0 IS IT MODE 1? BEQ.S NOERAS YES, DON'T NEED TO ERASE BSR.L ERALIN NO, E0B 'READ allows you to browse through a text file forward' DC.B $D,$A DC.B 'and backward. The correct syntax is DC.B $D,$A DC.B ' READ DC.B $D,$A DC.B 'where the defaults to a .TXT extension.',4 * DATA AREA MODE D E ADDRESSES CHOOSE 1 OR 2: NOT COMPLETED - SPECIFIED ADDRESS IS BELOW OFFSET.@HB*y-  g9g#  fgL ` 0e$ 9c Ae Zc ae zb<Nu<NuHB*y-L Nu*|`#+RASE REST OF LINE FIRST NOERAS MOVE.B #$0D,D4 DC PUTCH FOLLOW WITH CR MOVE.B #$0A,D4 DC PUTCH FOLLOW WITH LF LEA CURPOS(PC),A3 CLR.L (A3) CLEAR CURRENT POSITION ON LINE SUB.B #1,D2 DECREMENT COUNTER BNE.S PLOOP CONTINUE UNTIL DONE 1S.B 1 MODE 1 = ALL, NO ERASE TO END OF LINE CURPOS DS.L 1 CURRENT POSITION ON LINE TOPLIN DS.L 1 TOP LINE OF DISPLAY AREA LONSCR DS.L 2 NUMBER OF LINES DISPLAYED ON SCREEN TABEND DS.L 1 POINTS JUST PAST END OF TABLE CURLIN DS.L 1 CURRENT LINNI9f(`g<a< a<a`غ9f2`f < a` 9f< ap9ah`  gT9g,  e|g `h<a6<a0`X  gNa f`8E< aNuJ9 gaNua*L ga`Nu< , BRA.L NXTCOM ELSE GO LOOK FOR NEXT COMMAND * HELP MESSAGES HELP LEA HLPMSG(PC),A4 DC PSTRNG PRINT HELP MESSAGE BRA.L NEXT1 GET COMMAND HELP2 LEA HL2MSG(PC),A4 DC PSTRNG PRINT HELP MESSAGE DC WARMST * STRINGS MEMMSG DC.B 'FILE IS TOO2E AT TOP OF SCREEN NUMBER DS.L 1 DESIRED LINE NUMBER LINES DS.L 1 LINES OF TEXT IN FILE TABLE DS.L 1 MUST BE LAST ITEM IN DATA END READ "`- ?gIJ5If59 gIB5gI+5gI5gI5gIŠ5gI5gIx5I/59 zgI5gI5I,59 {gIݠ5gI5gI5gI#5gI059 g 7g`- LONG',4 PROMP1 DC.B " ---------- ",4 PROMP2 DC.B " LINES, NOW STARTING AT LINE ",4 HLPMSG DC.B $D,$A DC.B 'FILE READ PROGRAM. ALLOWABLE COMMANDS ARE:' DC.B $D,$A DC.B $D,$A DC.B ' T - TOP OF FILE' DC.B $D,$A DC.B ' B - BOTTOM OF Fin drive  Number: |  Free sectors(|#+B9NE~eBNbTNBJg ENBJg"EBNBeJg<$EB(|?NBNI 1g 2f<* eN(|#+NU0f|;c<$ gd c4<<a&aa6a#If5A BC(I2<( Q|F|OI g 7fz)|37C6|5`)|1772| 0G(0D)EH֊,C)V8n<)| B)| FJf)| <--B)|BOOTF5A ff4I5IOSTAT gives information on the I/O.ILE' DC.B $D,$A DC.B ' R - GO UP ONE SCREEN' DC.B $D,$A DC.B ' V (OR CR) - GO DOWN ONE SCREEN' DC.B $D,$A DC.B ' Q - USE TOP HALF OF SCREEN' DC.B $D,$A DC.B ' Z - USE BOTTOM HALF OF SCREEN' DC.B $D,$A DC.B ' A - USE ALarBf`$ g( c<<aL&afaRaBa>f`Jg"c<a$& a>a4` <a& a0aNWfN0:NPfNu8La`HCaHC`JgeNu(|@TNB``, fP(|?a`f(|?aVf(|,N[hf*B`<NCN0:(|$ devices and hardware that is currently active on the PT-68K-2/4 system. The syntax is just IOSTATPT-68K-2/4 COMPUTER STATUS REPORT INSTALLED HARDWARE DETECTED BY HUMBUG: CURRENTLY ACTIVE INPUT DEVICES CURRENTLY ACTIVE OUTPUT DEVICES Mo/L OF SCREEN' DC.B $D,$A DC.B ' S - STOP AND RETURN TO DOS' DC.B $D,$A DC.B ' ? - PRINT THIS HELP MESSAGE' DC.B $D,$A DC.B 'NUMBER AND RETURN - GO TO SPECIFIED LINE NUMBER' DC.B $D,$A DC.B $D,$A DC.B ' COMMAND: ',4 HL2MSG DC.?NBN0:NC(|NWN0:NBNI YNuINVALID FILE NAMEMISSING/INVALID ADDRESSFILE EXISTS - SHOULD? I DELETE IT? ARE YOU SURE? SAVE OPTIONS: 1. USE ABOVE ADDRESSES (IGNORING OFFSET), OR 2. SUBTRACT OFFSET FROM ABOVnochrome video board Color (CGA) video board WX hard disk controller PC-style expansion slots DUART 2 DUART 1 68230 Parallel Interface IC Serial printer on DUART 1 port B Serial terminal output on DUART 1 port A Monochrome vi     deo board Color (CGA) video board Pause mode in effect PC-style keyboard Serial keyboard on DUART 1 port A FLOPPY DRIVES SET UP BY HUMBUG LOGICAL DRIVE CONTROLLER PHYSICAL DRIVE DRIVE TYPE $NONE 360K 720K 1.2M 1.dt<aIB*az*ar * c("$"*%A <I` *&a4aPa,Sf:ff`l<aIRBa*a*a*a * c$"$"*%ApI` *&Haa`xag:g|"fI5IpBEI6B((z<84I54"(*h Ev$EvK^BBB*h  gn(gh  f-` .fR--d *fLI&.!e1E-d *f2I .!e1E -d *fI.!e1E `Iܠ#K: g j44M 1M 8"  ^:g E.$>:f<a|:at:al`*<a`:aX:aP:aH:ya@ I~fVCrInf  fWK@*<Nu, f&<Nua 0aNu0  c_Nu z gaK*<Nuaf2: AS1g AS2g& AS3g, AS7g2 AK`(H f(H f,kgKM< : *g:g" g& *g g-fKQ`2J-k`J-j`g -fKQ`4$$$ bV`V*h  g(g  g ,f-`&JMgBEBE` N(N#e@I0#e4B, f 9h h(Hg, f I .G7I5RENAME is used to rename a disk file. The correct syntax is RENAME The old-file-spec must have both a name and an extension S8gF AS9g``AK*`AK*`AK*`: gAahK`: gAK|aF@`:~ ghAtKZ|a@a@K:`:IfNugNuI5`7 I5S1TOCOM is used to convert a binary ,ke C$"JEf:gr4I<EIM<ap8)<8I7<aZIf (HDal(LaZ(HDLaPJgzI<a(B<8`b44(<8I< a4Jf< 3fNu<-3B 00 0f:֠3H@3, and may have an optional drive number (if no drive number is given, then the current default work drive will be used.) If the new-file-spec does not have an extension, then the old extension will be kept. file in Motorola S1/S9 format (used for the object code of many assemblers) into a binary file suitable for use by SK*DOS. The syntax is S1TOCOM The drive and directory are optional and default t`4I#e, f)|MXT GB*n -ffpAC h#h#h3|CO |MI Ƞg, f6f0`|;E af2:: AS1g AS2g( AS3gF`A&Baaaaaa`.ABaaaaaaa` Aa`Bthe file, prepare an output file with the same name but having a .COM extension (deleting any previous .COM file if it already exists), and then delete the original file when finished.Too much data; memory exceeded.o the current work drive and work directory. They may be specified as either just a drive number, or as both a drive number and directory letter, such as just 1, or as 1.A/. The is also optional and may consist of one or more fgTR`Baa0Haa|`jBaranajafaba^aZaVIf`E >"JKn*IhBJfJgB"Rg":Pg"""ID(ҪK6*`X"$Һ(I$(Ժ"I(`"BBIfI(KBKBE P:g.$Jg"  ` NhK*h- ?g .g  g.g 0e Ad 9bE.gKRB--  gf.g`  gZ ,gT .fp- *g Ae` zbX.!eK-  g ,g /g  g .g`$4I&5(03I6(H9ull or partial file names and/or extensions to be searched for. For example, SCAT 1.A/ TX.COM would list all files in directory A of drive 1 whose names begin with TX and whose extensions are .COM. The symbol * is a wild-card character i !"#$nside file names.Incorrect drive number.Error in reading directoryDisk Name: Catalog of disk in drive  Number:  Name Ext Sectors Date Sequence Free sectors Not enough memory for directory, latest file first NAM SERIAL.DVR OPT PAG PAG * SERIAL DEVICE DRIVER #1 FOR SK*DOS/68K * THIS VERSION IS CONFIGURED FOR THE PT-68K COMPUTER (-1A, * -1B, AND -2 VERSIONS) AND IS A BARE-BONES DRIVER WHICH * DOES NOT SUPPORT ANY OF THE ICNTRL AND OCNTRL FEATURES. *  ********************************* * PART 1. BEGINNING, VERSION NUMBER, AND A 'DN' MARKER >>B<< * WHICH IS CHECKED BY 'DEVICE' TO AVOID ERRORS. ********************************************************** START BRA.S START NEVER EXECUTED DC.W $0003   COPYRIGHT (C) 1987 BY PETER A. STARK * MOD. >>A<< 6-12-87 FOR PT-2 COMPUTER * MOD. >>B<< 6-4-88 FOR NEW DRIVER FORMAT **************** NOTE ************************************ * DEVICE DRIVER FORMAT WAS CHANGED 6-4-88 TO CONFORM TO * SK*DOS VERSIONS!VERSION NUMBER >>B<< DC.W $444E 'DN' ID MARKER >>B<< ********************************************************** * PART 2. LENGTH SPECIFICATION. THE NEXT LONG WORD DEFINES * THE LENGTH OF THE DRIVER TO DEVICE.COM. THEEND IS A * LABEL WHICH IS PLACE`*n ?g^0eFJgB d:Jg6&IS5B.&B8< 3<T3<O3< 3C&(B8I5B.&B8I5SEQUENCE is used only in systems which do not have a clock/calendar IC interfaced to SK*DOS to time-stamp files. If this is th 2.4 AND LATER. THE "DEVICE.COM" PROGRAM * VERSION 1.0 AND LATER, WILL, HOWEVER, WORK WITH EITHER OLD * OR NEW VERSION DRIVERS. CHANGES ARE IDENTIFIED WITH >>B<< * NOTE ESPECIALLY THE CHANGE OF THE DRIVER MARKER FROM "DR" * TO "DN" AND THE ADDITION OF " D AT THE VERY END OF THE DRIVER ********************************************************** LENGTH DC.L THEEND ********************************************************** * PART 3. ENTRY POINT POINTERS. THE FOLLOWING POINTERS * DEFINE THE ENTRY POINTSe case, then new files are assigned a date and sequence number (rather than date and time), and SEQUENCE is used to display or change the next sequence number. The command SEQUENCE displays the next number to be used, while the command THREE NEW CALLS. ********************************************************** **************** IMPORTANT !! **************************** ** IF USING ASM.COM TO ASSEMBLE THIS FILE, CHANGE "PAG" ** TO "PAGE" IN LINES 2 AND 3, AND MAKE SURE TO ** USE THE -# INTO THE DRIVER. ALL ARE * RELATIVE TO THE ORIGIN ********************************************************** DC.L INIPOR DRIVER INITIALIZATION DC.L INSTAT INPUT STATUS DC.L INCHAR INPUT CHARACTER WITH ECHO DC.L INCHAN INPUT CHAR WITHOUT ESEQUENCE changes the next number to the specified (which must be between 0 and 255).Retaining the old sequence number of Changing sequence number from F OPTION ********************************************************** * THE FORMAT OF A DEVICE DRIVER FOR SK*DOS IS VERY RIGID, * ESPECIALLY AT THE BEGINNING AND VERY END. YOU MAY * SUBSTITUTE YOUR OWN DRIVER CODE, BUT MAKE SURE TO USE THE SAME * FORMAT$ CHO DC.L ICNTRL INPUT CONTROL ENTRY DC.L OUSTAT OUTPUT STATUS DC.L OUCHAR OUTPUT A CHARACTER DC.L OCNTRL OUTPUT CONTROL ENTRY DC.L INSTA1 INPUT STATUS (1 CHAR ONLY) >>B<< DC.L INCHN1 INPUT 1 CHAR ONLY, NO ECHO >>B<< DC.L BFLUSH FLU6`DNvvSERIAL .DVR z(3AH<gfN`<f |||||'F|(((NuDUf 0`9Nua`ag9Nu<Nu9NuagNu<NuNu FOR THE DRIVER AS THIS EXAMPLE. NOTE ESPECIALLY THAT * THIS DRIVER IS NOT EXECUTABLE; IT IS TO BE LOADED INTO MEMORY * BY THE 'DEVICE' UTILITY, AND MUST BE POSITION-INDEPENDENT. DTBAUD EQU 51 BAUD RATE ENTRY IN DESCRIPTOR ************************* SH TYPEAHEAD BUFFER >>B<< ************************************************************* * PART 4. THE FOLLOWING LINE DEFINES THE BEGINNING OF THE ACTUAL * CODE AS BEING AT $0000. IT SERVES TO BREAK UP THE OBJECT FILE * TO MAKE IT EASIER FOR 'DEVICE' T      O LOAD INTO THE CORRECT PLACE. ************************************************************* ORG $0000 ************************************************************* * PART 5. DATA AREA USED BY THE DEVICE DRIVER FOR VARIOUS * PURPOSES. *************WITH DESIRED BNE.S BAULOO LOOK MORE IF NO MATCH LSR.W #8,D6 WHEN FOUND, MOVE CODE RIGHT BRA.S GOTBAU AND CONTINUE BNOTFD MOVE.B #$66,D6 DEFAULT TO 1200 IF NOT FOUND GOTBAU MOVE.L #DUART,A0 POINT TO DUART MOVE.B #$15,DCOMMB(A0) CRB: MODELT * TO THE SAME ROUTINE IF THERE IS NO TYPEAHEAD BUFFER ON THE * INPUT PORT: INSTAT CHECKS TO SEE WHETHER THERE IS ANY CHARACTER * IN THE TYPEAHEAD BUFFER, WHEREAS INSTA1 CHECKS ONLY TO SEE * WHETHER THERE IS A 'LAST' CHARACTER AT THE END OF THE BUFFE************************************************ * BYTES 0-12: * NAME OF THIS DEVICE DRIVER DISK FILE - 12 CHARACTERS PLUS 04 DRNAME DC.B 'SERIAL .DVR',4 * BYTE 13: * DEVICE NUMBER SO THIS DRIVER KNOWS WHICH DEVICE IT IS DEVNUM DC.B 0 DEVICE NUMB =1, ENABLE RX&TX MOVE.B #$5,DCOMMB(A0) CRB: ENABLE RX & TX MOVE.B #$13,DMODEB(A0) MRB1: NO RTS, NO PARITY, 8 BITS MOVE.B #$27,DMODEB(A0) MRB2: RTS,1 STOP BIT MOVE.B D6,DCLOCB(A0) CSRB: SET BAUD RATE MOVE.B #$80,DAUXB(A0) AUX CONTROL REG R * WHICH HAS NOT YET BEEN INPUT WITH THE INCHN1 ENTRY *********************************************************** INSTAT MOVE.B DUART+DSTATB,D5 GET PORT B STATUS REG AND.L #1,D5 CHECK STATUS BIT RTS INSTA1 EQU INSTAT >>B<< ******************ER FOR THIS DRIVER * BYTES 14-17: * ADDRESS OF DEVICE DESCRIPTOR FOR THIS DRIVER DEVADD DC.L 0 ************************************************************* * PART 6. DEVICE INITIALIZATION. THIS CODE INITIALIZES PORT B * OF THE 68681 DUART AT $FE000 = SET 2 MOVE.B DDATAB(A0),D0 MOVE.B DDATAB(A0),D0 EMPTY RCVR BUFFER 3 TIMES MOVE.B DDATAB(A0),D0 RTS * BAUD RATE LOOKUP TABLE, CONSISTS OF BYTE FOR CLOCK SELECT * REGISTER, AND CORRESPONDING BAUD RATE CODE (EQUAL TO BAUD RATE * * DIVIDED BY 1***************************************** * PART 8. GET INPUT CHARACTER FROM PORT INTO D5 AND ECHO IT TO * THE OUTPUT PORT. IF NO CHARACTER IS READY, WAIT FOR IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS * THIS ENTRY USES THE TYPEAHEAD BUF0 IN THE PT-68K COMPUTER. IT IS * ONLY EXECUTED WHEN LOADED BY 'DEVICE'. ALL REGISTERS CAN BE * CHANGED. ************************************************************* * HARDWARE EQUATES FOR THE PORT DUART EQU $FE0000 DUART ADDRESS >>A<< DMODEB EQU 00). BAUTAB DC.B $11,01 110 BAUD DC.B $44,03 300 DC.B $55,06 600 DC.B $66,12 1200 DC.B $88,24 2400 DC.B $99,48 4800 DC.B $BB,96 9600 DC.B $CC,192 19,200 DC.B 0,0 MARKS END OF TABLE *******************************************FER, IF ANY >>B<< *********************************************************** INCHAR BSR.S INCHAN GET THE CHARACTER W/O ECHO BRA.S OUCHAR AND THEN ECHO *********************************************************** * PART 9. GET INPUT CHARACTER FRO 17 PORT B MODE REG DCLOCB EQU 19 PORT B CLOCK REG DSTATB EQU 19 PORT B STATUS REG DCOMMB EQU 21 PORT B COMMAND REGISTER DDATAB EQU 23 PORT B DATA REGISTERS DAUXB EQU 25 PORT B AUXILIARY CONTROL REG * INITIALIZE PORT AND SET BAUD RATE INIP **************** * PART 7. INPUT PORT STATUS CHECK. THIS ROUTINE IS TO RETURN * TWO THINGS: * 1. ZERO IF NO CHARACTER IS READY, NON-ZERO OTHERWISE * 2. D5=0 IF NO CHARACTER IS READY, ELSE THE NUMBER OF * CHARACTERS READY. IN NON-INTERRUPT SYSTEMS, DM PORT INTO D5 WITHOUT ECHOING TO * THE OUTPUT PORT. IF NO CHARACTER IS READY, WAIT FOR IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS * NOTE CHANGES INTRODUCED IN VERSION 0003 : >>B<< * THERE ARE NOW TWO INCH-- ENTRIES, ALTHOUGH BOTH DEFAUOR MOVE.L DEVADD(PC),A0 GET ADDRESS OF DEVICE DESCRIPTOR MOVE.B DTBAUD(A0),D7 DESIRED BAUD RATE LEA BAUTAB(PC),A0 POINT TO BAUD RATE LOOKUP TABLE BAULOO MOVE.W (A0)+,D6 GET NEXT ENTRY BEQ.S BNOTFD IF AT END OF TABLE CMP.B D6,D7 COMPARE  5 SHOULD * RETURN A 1; ONLY IN INTERRUPT-DRIVEN SYSTEMS WILL IT * INDICATE A REAL NUMBER OF CHARACTERS IN INPUT BUFFER * PRESERVE ALL REGISTERS * NOTE CHANGES INTRODUCED IN VERSION 0003 : >>B<< * THERE ARE NOW TWO INSTA- ENTRIES, ALTHOUGH BOTH DEFAULT >>B<< * TO THE SAME ROUTINE IF THERE IS NO TYPEAHEAD BUFFER ON THE * INPUT PORT: INCHAN TAKES THE NEXT CHARACTER FROM THE TYPEAHEAD * BUFFER (AND CLEARS THE INSTA1 FLAG), WHEREAS INCHN1 TAKES ONLY * THE CHARACTER FROM THE END OF THE TYPEAHEAD BUFFER !"#$, AND CLEARS * BOTH FLAGS. *********************************************************** INCHAN BSR.S INSTAT CHECK STATUS BEQ.S INCHAN WAIT IF NOTHING MOVE.B DUART+DDATAB,D5 ELSE GET CHARACTER RTS INCHN1 EQU INCHAN >>B<< *******************%ERROR RTS ******************************************************* * PART 14. NEW IN REV. >>B<<. WHEN A TYPEAHEAD BUFFER * EXISTS, THIS FLUSHES IT AND CLEARS BOTH INSTAT AND * INSTA1 FLAGS TO INDICATE THAT ALL IS EMPTY. ****************************** NS 2.4 AND LATER. THE "DEVICE.COM" PROGRAM * VERSION 1.0 AND LATER, WILL, HOWEVER, WORK WITH EITHER OLD * OR NEW VERSION DRIVERS. CHANGES ARE IDENTIFIED WITH >>B<< * NOTE ESPECIALLY THE CHANGE OF THE DRIVER MARKER FROM "DR" * TO "DN" AND THE ADDITION O **************************************** * PART 10. INPUT CHANNEL CONTROL. THIS DRIVER DOES NOT * IMPLEMENT CONTROL, SO SIGNAL ERROR AND RTS *********************************************************** ICNTRL AND.B #$FB,CCR RETURN NON-ZERO ERROR RT&************************* BFLUSH RTS IN THIS CASE DOES NOTHING >>B<< ******************************************************* * THE END. LABEL THEEND IS USED TO CALCULATE LENGTH OF * DRIVER. NOTE THAT THERE IS NO TRANSFER ADDRESS. ******************!F THREE NEW CALLS. **************** IMPORTANT !! **************************** ** IF USING ASM.COM TO ASSEMBLE THIS FILE, CHANGE "PAG" ** TO "PAGE" IN LINES 2 AND 3, AND MAKE SURE TO ** USE THE -F OPTION ***********************************************!S *********************************************************** * PART 11. OUTPUT STATUS. RETURN ZERO IF OUTPUT IS NOT * READY, NON-ZERO IF READY TO OUTPUT NEXT. PRESERVE ALL * REGISTERS. IF NO HANDSHAKING IS USED, OR IF HARDWARE * HANDSHAKING IS USED, '************************************* THEEND EQU * END "*********** * THE FORMAT OF A DEVICE DRIVER FOR SK*DOS IS VERY RIGID, * ESPECIALLY AT THE BEGINNING AND VERY END. YOU MAY * SUBSTITUTE YOUR OWN DRIVER CODE, BUT MAKE SURE TO USE THE SAME * FORMAT FOR THE DRIVER AS THIS EXAMPLE. NOTE ESPECIALLY THAT * "THEN SIMPLY CHECK BUSY BIT. *********************************************************** OUSTAT BTST #2,DUART+DSTATB CHECK TX READY BUT RTS *********************************************************** * PART 12. OUTPUT CHARACTER FROM D5 TO OUTPUT P6`DNvvSERIAL .DVR z(3AH<gfN`<f |@||||'F| (((NuDUf 0`9CNua`ag9GNu<Nu9CNuagGNu<NuNu#THIS DRIVER IS NOT EXECUTABLE; IT IS TO BE LOADED INTO MEMORY * BY THE 'DEVICE' UTILITY, AND MUST BE POSITION-INDEPENDENT. DTBAUD EQU 51 BAUD RATE ENTRY IN DESCRIPTOR ********************************************************** * PART 1. BEGINNING, V#ORT. IF NOT * READY, JUST WAIT FOR IT. PRESERVE ALL REGISTERS (INCLUDING D5) *********************************************************** OUCHAR BSR.S OUSTAT CHECK IF READY BEQ.S OUCHAR WAIT UNTIL READY MOVE.B D5,DUART+DDATAB PRINT IT RTS ** NAM SERIAL.DVR OPT PAGE PAGE * SERIAL DEVICE DRIVER #2 FOR SK*DOS/68K * THIS VERSION IS CONFIGURED FOR THE PT-68K COMPUTER (-1A, * -1B, AND -2 VERSIONS) AND IS A BARE-BONES DRIVER WHICH * DOES NOT SUPPORT ANY OF THE ICNTRL AND OCNTRL FEATURES. $ERSION NUMBER, AND A 'DN' MARKER * WHICH IS CHECKED BY 'DEVICE' TO AVOID ERRORS. ********************************************************** START BRA.S START NEVER EXECUTED DC.W $0003 VERSION NUMBER >>B<< DC.W $444E 'DN' ID MARKER >>B<< ****$***************************************************** * PART 13. OUTPUT CHANNEL CONTROL. THIS DRIVER DOES NOT * IMPLEMENT CONTROL, SO SIGNAL ERROR AND RTS ******************************************************* OCNTRL AND.B #$FB,CCR RETURN NON-ZERO * COPYRIGHT (C) 1987 BY PETER A. STARK * MOD. >>A<< 6-12-87 FOR PT-2 COMPUTER * MOD. >>B<< 6-4-88 FOR NEW DRIVER FORMAT **************** NOTE ************************************ * DEVICE DRIVER FORMAT WAS CHANGED 6-4-88 TO CONFORM TO * SK*DOS VERSIO****************************************************** * PART 2. LENGTH SPECIFICATION. THE NEXT LONG WORD DEFINES * THE LENGTH OF THE DRIVER TO DEVICE.COM. THEEND IS A * LABEL WHICH IS PLACED AT THE VERY END OF THE DRIVER ******************************      **************************** LENGTH DC.L THEEND ********************************************************** * PART 3. ENTRY POINT POINTERS. THE FOLLOWING POINTERS * DEFINE THE ENTRY POINTS INTO THE DRIVER. ALL ARE * RELATIVE TO THE ORIGIN ***********TOR FOR THIS DRIVER DEVADD DC.L 0 ************************************************************* * PART 6. DEVICE INITIALIZATION. THIS CODE INITIALIZES PORT B * OF THE 68681 DUART AT $FE0040 IN THE PT-68K COMPUTER. IT IS * ONLY EXECUTED WHEN LOADED BYFFER 3 TIMES MOVE.B DDATAB(A0),D0 RTS * BAUD RATE LOOKUP TABLE, CONSISTS OF BYTE FOR CLOCK SELECT * REGISTER, AND CORRESPONDING BAUD RATE CODE (EQUAL TO BAUD RATE * * DIVIDED BY 100). BAUTAB DC.B $11,01 110 BAUD DC.B $44,03 300 DC.B $55,06 *********************************************** DC.L INIPOR DRIVER INITIALIZATION DC.L INSTAT INPUT STATUS DC.L INCHAR INPUT CHARACTER WITH ECHO DC.L INCHAN INPUT CHAR WITHOUT ECHO DC.L ICNTRL INPUT CONTROL ENTRY DC.L OUSTAT OUTPUT S  'DEVICE'. ALL REGISTERS CAN BE * CHANGED. ************************************************************* * HARDWARE EQUATES FOR THE PORT DUART EQU $FE0040 DUART ADDRESS >>A<< DMODEB EQU 1 PORT A MODE REG DCLOCB EQU 3 PORT A CLOCK REG DSTATB EQ 600 DC.B $66,12 1200 DC.B $88,24 2400 DC.B $99,48 4800 DC.B $BB,96 9600 DC.B $CC,192 19,200 DC.B 0,0 MARKS END OF TABLE *********************************************************** * PART 7. INPUT PORT STATUS CHECK. THIS ROUTINE IS  TATUS DC.L OUCHAR OUTPUT A CHARACTER DC.L OCNTRL OUTPUT CONTROL ENTRY DC.L INSTA1 INPUT STATUS (1 CHAR ONLY) >>B<< DC.L INCHN1 INPUT 1 CHAR ONLY, NO ECHO >>B<< DC.L BFLUSH FLUSH TYPEAHEAD BUFFER >>B<< *********************************** U 3 PORT A STATUS REG DCOMMB EQU 5 PORT A COMMAND REGISTER DDATAB EQU 7 PORT A DATA REGISTERS DAUXB EQU 9 PORT A AUXILIARY CONTROL REG * INITIALIZE PORT AND SET BAUD RATE INIPOR MOVE.L DEVADD(PC),A0 GET ADDRESS OF DEVICE DESCRIPTOR MOVE.B TO RETURN * TWO THINGS: * 1. ZERO IF NO CHARACTER IS READY, NON-ZERO OTHERWISE * 2. D5=0 IF NO CHARACTER IS READY, ELSE THE NUMBER OF * CHARACTERS READY. IN NON-INTERRUPT SYSTEMS, D5 SHOULD * RETURN A 1; ONLY IN INTERRUPT-DRIVEN SYSTEMS WILL IT *  ************************** * PART 4. THE FOLLOWING LINE DEFINES THE BEGINNING OF THE ACTUAL * CODE AS BEING AT $0000. IT SERVES TO BREAK UP THE OBJECT FILE * TO MAKE IT EASIER FOR 'DEVICE' TO LOAD INTO THE CORRECT PLACE. ******************************* DTBAUD(A0),D7 DESIRED BAUD RATE LEA BAUTAB(PC),A0 POINT TO BAUD RATE LOOKUP TABLE BAULOO MOVE.W (A0)+,D6 GET NEXT ENTRY BEQ.S BNOTFD IF AT END OF TABLE CMP.B D6,D7 COMPARE WITH DESIRED BNE.S BAULOO LOOK MORE IF NO MATCH LSR.W #8,D6 WHINDICATE A REAL NUMBER OF CHARACTERS IN INPUT BUFFER * PRESERVE ALL REGISTERS * NOTE CHANGES INTRODUCED IN VERSION 0003 : >>B<< * THERE ARE NOW TWO INSTA- ENTRIES, ALTHOUGH BOTH DEFAULT * TO THE SAME ROUTINE IF THERE IS NO TYPEAHEAD BUFFER ON THE * IN ****************************** ORG $0000 ************************************************************* * PART 5. DATA AREA USED BY THE DEVICE DRIVER FOR VARIOUS * PURPOSES. ************************************************************* * BYTES 0-12 EN FOUND, MOVE CODE RIGHT BRA.S GOTBAU AND CONTINUE BNOTFD MOVE.B #$66,D6 DEFAULT TO 1200 IF NOT FOUND GOTBAU MOVE.L #DUART,A0 POINT TO DUART MOVE.B #$15,DCOMMB(A0) CRB: MODE=1, ENABLE RX&TX MOVE.B #$5,DCOMMB(A0) CRB: ENABLE RX & TX MOVEPUT PORT: INSTAT CHECKS TO SEE WHETHER THERE IS ANY CHARACTER * IN THE TYPEAHEAD BUFFER, WHEREAS INSTA1 CHECKS ONLY TO SEE * WHETHER THERE IS A 'LAST' CHARACTER AT THE END OF THE BUFFER * WHICH HAS NOT YET BEEN INPUT WITH THE INCHN1 ENTRY *************: * NAME OF THIS DEVICE DRIVER DISK FILE - 12 CHARACTERS PLUS 04 DRNAME DC.B 'SERIAL .DVR',4 * BYTE 13: * DEVICE NUMBER SO THIS DRIVER KNOWS WHICH DEVICE IT IS DEVNUM DC.B 0 DEVICE NUMBER FOR THIS DRIVER * BYTES 14-17: * ADDRESS OF DEVICE DESCRIP .B #$13,DMODEB(A0) MRB1: NO RTS, NO PARITY, 8 BITS MOVE.B #$27,DMODEB(A0) MRB2: RTS,1 STOP BIT MOVE.B D6,DCLOCB(A0) CSRB: SET BAUD RATE MOVE.B #$80,DAUXB(A0) AUX CONTROL REG = SET 2 MOVE.B DDATAB(A0),D0 MOVE.B DDATAB(A0),D0 EMPTY RCVR BU********************************************** INSTAT MOVE.B DUART+DSTATB,D5 GET PORT B STATUS REG AND.L #1,D5 CHECK STATUS BIT RTS INSTA1 EQU INSTAT >>B<< *********************************************************** * PART 8. GET INPUT CHARAC !"#$TER FROM PORT INTO D5 AND ECHO IT TO * THE OUTPUT PORT. IF NO CHARACTER IS READY, WAIT FOR IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS * THIS ENTRY USES THE TYPEAHEAD BUFFER, IF ANY >>B<< **************************************************!RT 11. OUTPUT STATUS. RETURN ZERO IF OUTPUT IS NOT * READY, NON-ZERO IF READY TO OUTPUT NEXT. PRESERVE ALL * REGISTERS. IF NO HANDSHAKING IS USED, OR IF HARDWARE * HANDSHAKING IS USED, THEN SIMPLY CHECK BUSY BIT. ***************************************6`DNvvSERIAL .DVR z(3AH<gfN`<f |@||||'F|(((NuDUf 0`9SNua`ag9WNu<Nu9SNuagWNu<NuNu********* INCHAR BSR.S INCHAN GET THE CHARACTER W/O ECHO BRA.S OUCHAR AND THEN ECHO *********************************************************** * PART 9. GET INPUT CHARACTER FROM PORT INTO D5 WITHOUT ECHOING TO * THE OUTPUT PORT. IF NO CHARACTER"******************** OUSTAT BTST #2,DUART+DSTATB CHECK TX READY BUT RTS *********************************************************** * PART 12. OUTPUT CHARACTER FROM D5 TO OUTPUT PORT. IF NOT * READY, JUST WAIT FOR IT. PRESERVE ALL REGISTERS (INCL! NAM SERIAL.DVR OPT PAG PAG * SERIAL DEVICE DRIVER #3 FOR SK*DOS/68K * THIS VERSION IS CONFIGURED FOR THE PT-68K COMPUTER (-1A, * -1B, AND -2 VERSIONS) AND IS A BARE-BONES DRIVER WHICH * DOES NOT SUPPORT ANY OF THE ICNTRL AND OCNTRL FEATURES. *  IS READY, WAIT FOR IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS * NOTE CHANGES INTRODUCED IN VERSION 0003 : >>B<< * THERE ARE NOW TWO INCH-- ENTRIES, ALTHOUGH BOTH DEFAULT >>B<< * TO THE SAME ROUTINE IF THERE IS NO TYPEAHEAD BUFFER ON TH#UDING D5) *********************************************************** OUCHAR BSR.S OUSTAT CHECK IF READY BEQ.S OUCHAR WAIT UNTIL READY MOVE.B D5,DUART+DDATAB PRINT IT RTS ******************************************************* * PART 13. OU"COPYRIGHT (C) 1987 BY PETER A. STARK * MOD. >>A<< 6-12-87 FOR PT-2 COMPUTER * MOD. >>B<< 6-4-88 FOR NEW DRIVER FORMAT **************** NOTE ************************************ * DEVICE DRIVER FORMAT WAS CHANGED 6-4-88 TO CONFORM TO * SK*DOS VERSIONSE * INPUT PORT: INCHAN TAKES THE NEXT CHARACTER FROM THE TYPEAHEAD * BUFFER (AND CLEARS THE INSTA1 FLAG), WHEREAS INCHN1 TAKES ONLY * THE CHARACTER FROM THE END OF THE TYPEAHEAD BUFFER, AND CLEARS * BOTH FLAGS. ****************************************$TPUT CHANNEL CONTROL. THIS DRIVER DOES NOT * IMPLEMENT CONTROL, SO SIGNAL ERROR AND RTS ******************************************************* OCNTRL AND.B #$FB,CCR RETURN NON-ZERO ERROR RTS ******************************************************# 2.4 AND LATER. THE "DEVICE.COM" PROGRAM * VERSION 1.0 AND LATER, WILL, HOWEVER, WORK WITH EITHER OLD * OR NEW VERSION DRIVERS. CHANGES ARE IDENTIFIED WITH >>B<< * NOTE ESPECIALLY THE CHANGE OF THE DRIVER MARKER FROM "DR" * TO "DN" AND THE ADDITION OF ******************* INCHAN BSR.S INSTAT CHECK STATUS BEQ.S INCHAN WAIT IF NOTHING MOVE.B DUART+DDATAB,D5 ELSE GET CHARACTER RTS INCHN1 EQU INCHAN >>B<< *********************************************************** * PART 10. INPUT CHANNEL C%* * PART 14. NEW IN REV. >>B<<. WHEN A TYPEAHEAD BUFFER * EXISTS, THIS FLUSHES IT AND CLEARS BOTH INSTAT AND * INSTA1 FLAGS TO INDICATE THAT ALL IS EMPTY. ******************************************************* BFLUSH RTS IN THIS CASE DOES NOTHING >$THREE NEW CALLS. ********************************************************** **************** IMPORTANT !! **************************** ** IF USING ASM.COM TO ASSEMBLE THIS FILE, MAKE SURE TO ** USE THE -F OPTION *************************************** ONTROL. THIS DRIVER DOES NOT * IMPLEMENT CONTROL, SO SIGNAL ERROR AND RTS *********************************************************** ICNTRL AND.B #$FB,CCR RETURN NON-ZERO ERROR RTS *********************************************************** * PA&>B<< ******************************************************* * THE END. LABEL THEEND IS USED TO CALCULATE LENGTH OF * DRIVER. NOTE THAT THERE IS NO TRANSFER ADDRESS. ******************************************************* THEEND EQU * END ******************* * THE FORMAT OF A DEVICE DRIVER FOR SK*DOS IS VERY RIGID, * ESPECIALLY AT THE BEGINNING AND VERY END. YOU MAY * SUBSTITUTE YOUR OWN DRIVER CODE, BUT MAKE SURE TO USE THE SAME * FORMAT FOR THE DRIVER AS THIS EXAMPLE. NOTE ESPECIALLY      THAT * THIS DRIVER IS NOT EXECUTABLE; IT IS TO BE LOADED INTO MEMORY * BY THE 'DEVICE' UTILITY, AND MUST BE POSITION-INDEPENDENT. DTBAUD EQU 51 BAUD RATE ENTRY IN DESCRIPTOR ********************************************************** * PART 1. BEGI **************************************** * PART 4. THE FOLLOWING LINE DEFINES THE BEGINNING OF THE ACTUAL * CODE AS BEING AT $0000. IT SERVES TO BREAK UP THE OBJECT FILE * TO MAKE IT EASIER FOR 'DEVICE' TO LOAD INTO THE CORRECT PLACE. *****************DESCRIPTOR MOVE.B DTBAUD(A0),D7 DESIRED BAUD RATE LEA BAUTAB(PC),A0 POINT TO BAUD RATE LOOKUP TABLE BAULOO MOVE.W (A0)+,D6 GET NEXT ENTRY BEQ.S BNOTFD IF AT END OF TABLE CMP.B D6,D7 COMPARE WITH DESIRED BNE.S BAULOO LOOK MORE IF NO MATNNING, VERSION NUMBER, AND A 'DN' MARKER >>B<< * WHICH IS CHECKED BY 'DEVICE' TO AVOID ERRORS. ********************************************************** START BRA.S START NEVER EXECUTED DC.W $0003 VERSION NUMBER >>B<< DC.W $444E 'DN' ID MARK ******************************************** ORG $0000 ************************************************************* * PART 5. DATA AREA USED BY THE DEVICE DRIVER FOR VARIOUS * PURPOSES. *************************************************************CH LSR.W #8,D6 WHEN FOUND, MOVE CODE RIGHT BRA.S GOTBAU AND CONTINUE BNOTFD MOVE.B #$66,D6 DEFAULT TO 1200 IF NOT FOUND GOTBAU MOVE.L #DUART,A0 POINT TO DUART MOVE.B #$15,DCOMMB(A0) CRB: MODE=1, ENABLE RX&TX MOVE.B #$5,DCOMMB(A0) CRB: EER >>B<< ********************************************************** * PART 2. LENGTH SPECIFICATION. THE NEXT LONG WORD DEFINES * THE LENGTH OF THE DRIVER TO DEVICE.COM. THEEND IS A * LABEL WHICH IS PLACED AT THE VERY END OF THE DRIVER ****************  * BYTES 0-12: * NAME OF THIS DEVICE DRIVER DISK FILE - 12 CHARACTERS PLUS 04 DRNAME DC.B 'SERIAL .DVR',4 * BYTE 13: * DEVICE NUMBER SO THIS DRIVER KNOWS WHICH DEVICE IT IS DEVNUM DC.B 0 DEVICE NUMBER FOR THIS DRIVER * BYTES 14-17: * ADDRESS OF NABLE RX & TX MOVE.B #$13,DMODEB(A0) MRB1: NO RTS, NO PARITY, 8 BITS MOVE.B #$27,DMODEB(A0) MRB2: RTS,1 STOP BIT MOVE.B D6,DCLOCB(A0) CSRB: SET BAUD RATE MOVE.B #$80,DAUXB(A0) AUX CONTROL REG = SET 2 MOVE.B DDATAB(A0),D0 MOVE.B DDATAB(A ****************************************** LENGTH DC.L THEEND ********************************************************** * PART 3. ENTRY POINT POINTERS. THE FOLLOWING POINTERS * DEFINE THE ENTRY POINTS INTO THE DRIVER. ALL ARE * RELATIVE TO THE ORIG DEVICE DESCRIPTOR FOR THIS DRIVER DEVADD DC.L 0 ************************************************************* * PART 6. DEVICE INITIALIZATION. THIS CODE INITIALIZES PORT B * OF THE 68681 DUART AT $FE0040 IN THE PT-68K COMPUTER. IT IS * ONLY EXECUTED 0),D0 EMPTY RCVR BUFFER 3 TIMES MOVE.B DDATAB(A0),D0 RTS * BAUD RATE LOOKUP TABLE, CONSISTS OF BYTE FOR CLOCK SELECT * REGISTER, AND CORRESPONDING BAUD RATE CODE (EQUAL TO BAUD RATE * * DIVIDED BY 100). BAUTAB DC.B $11,01 110 BAUD DC.B $44,0 IN ********************************************************** DC.L INIPOR DRIVER INITIALIZATION DC.L INSTAT INPUT STATUS DC.L INCHAR INPUT CHARACTER WITH ECHO DC.L INCHAN INPUT CHAR WITHOUT ECHO DC.L ICNTRL INPUT CONTROL ENTRY DC.L OU WHEN LOADED BY 'DEVICE'. ALL REGISTERS CAN BE * CHANGED. ************************************************************* * HARDWARE EQUATES FOR THE PORT DUART EQU $FE0040 DUART ADDRESS >>A<< DMODEB EQU 17 PORT B MODE REG DCLOCB EQU 19 PORT B CLOC3 300 DC.B $55,06 600 DC.B $66,12 1200 DC.B $88,24 2400 DC.B $99,48 4800 DC.B $BB,96 9600 DC.B $CC,192 19,200 DC.B 0,0 MARKS END OF TABLE *********************************************************** * PART 7. INPUT PORT STATUS CHE STAT OUTPUT STATUS DC.L OUCHAR OUTPUT A CHARACTER DC.L OCNTRL OUTPUT CONTROL ENTRY DC.L INSTA1 INPUT STATUS (1 CHAR ONLY) >>B<< DC.L INCHN1 INPUT 1 CHAR ONLY, NO ECHO >>B<< DC.L BFLUSH FLUSH TYPEAHEAD BUFFER >>B<< ********************* K REG DSTATB EQU 19 PORT B STATUS REG DCOMMB EQU 21 PORT B COMMAND REGISTER DDATAB EQU 23 PORT B DATA REGISTERS DAUXB EQU 25 PORT B AUXILIARY CONTROL REG * INITIALIZE PORT AND SET BAUD RATE INIPOR MOVE.L DEVADD(PC),A0 GET ADDRESS OF DEVICE CK. THIS ROUTINE IS TO RETURN * TWO THINGS: * 1. ZERO IF NO CHARACTER IS READY, NON-ZERO OTHERWISE * 2. D5=0 IF NO CHARACTER IS READY, ELSE THE NUMBER OF * CHARACTERS READY. IN NON-INTERRUPT SYSTEMS, D5 SHOULD * RETURN A 1; ONLY IN INTERRUPT-DRIVEN !"#$ SYSTEMS WILL IT * INDICATE A REAL NUMBER OF CHARACTERS IN INPUT BUFFER * PRESERVE ALL REGISTERS * NOTE CHANGES INTRODUCED IN VERSION 0003 : >>B<< * THERE ARE NOW TWO INSTA- ENTRIES, ALTHOUGH BOTH DEFAULT * TO THE SAME ROUTINE IF THERE IS NO TYPEAHEAPEAHEAD BUFFER ON THE * INPUT PORT: INCHAN TAKES THE NEXT CHARACTER FROM THE TYPEAHEAD * BUFFER (AND CLEARS THE INSTA1 FLAG), WHEREAS INCHN1 TAKES ONLY * THE CHARACTER FROM THE END OF THE TYPEAHEAD BUFFER, AND CLEARS * BOTH FLAGS. ********************* $***** * PART 13. OUTPUT CHANNEL CONTROL. THIS DRIVER DOES NOT * IMPLEMENT CONTROL, SO SIGNAL ERROR AND RTS ******************************************************* OCNTRL AND.B #$FB,CCR RETURN NON-ZERO ERROR RTS ***********************************D BUFFER ON THE * INPUT PORT: INSTAT CHECKS TO SEE WHETHER THERE IS ANY CHARACTER * IN THE TYPEAHEAD BUFFER, WHEREAS INSTA1 CHECKS ONLY TO SEE * WHETHER THERE IS A 'LAST' CHARACTER AT THE END OF THE BUFFER * WHICH HAS NOT YET BEEN INPUT WITH THE INCHN1************************************** INCHAN BSR.S INSTAT CHECK STATUS BEQ.S INCHAN WAIT IF NOTHING MOVE.B DUART+DDATAB,D5 ELSE GET CHARACTER RTS INCHN1 EQU INCHAN >>B<< *********************************************************** * PART !%******************** * PART 14. NEW IN REV. >>B<<. WHEN A TYPEAHEAD BUFFER * EXISTS, THIS FLUSHES IT AND CLEARS BOTH INSTAT AND * INSTA1 FLAGS TO INDICATE THAT ALL IS EMPTY. ******************************************************* BFLUSH RTS IN THIS  ENTRY *********************************************************** INSTAT MOVE.B DUART+DSTATB,D5 GET PORT B STATUS REG AND.L #1,D5 CHECK STATUS BIT RTS INSTA1 EQU INSTAT >>B<< *********************************************************** * PART 10. INPUT CHANNEL CONTROL. THIS DRIVER DOES NOT * IMPLEMENT CONTROL, SO SIGNAL ERROR AND RTS *********************************************************** ICNTRL AND.B #$FB,CCR RETURN NON-ZERO ERROR RTS *********************************************"&CASE DOES NOTHING >>B<< ******************************************************* * THE END. LABEL THEEND IS USED TO CALCULATE LENGTH OF * DRIVER. NOTE THAT THERE IS NO TRANSFER ADDRESS. ******************************************************* THEEND E 8. GET INPUT CHARACTER FROM PORT INTO D5 AND ECHO IT TO * THE OUTPUT PORT. IF NO CHARACTER IS READY, WAIT FOR IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS * THIS ENTRY USES THE TYPEAHEAD BUFFER, IF ANY >>B<< ******************************!************** * PART 11. OUTPUT STATUS. RETURN ZERO IF OUTPUT IS NOT * READY, NON-ZERO IF READY TO OUTPUT NEXT. PRESERVE ALL * REGISTERS. IF NO HANDSHAKING IS USED, OR IF HARDWARE * HANDSHAKING IS USED, THEN SIMPLY CHECK BUSY BIT. ********************'QU * END ***************************** INCHAR BSR.S INCHAN GET THE CHARACTER W/O ECHO BRA.S OUCHAR AND THEN ECHO *********************************************************** * PART 9. GET INPUT CHARACTER FROM PORT INTO D5 WITHOUT ECHOING TO * THE OUTPUT P"*************************************** OUSTAT BTST #2,DUART+DSTATB CHECK TX READY BUT RTS *********************************************************** * PART 12. OUTPUT CHARACTER FROM D5 TO OUTPUT PORT. IF NOT * READY, JUST WAIT FOR IT. PRESERVE $E ADDRESSES CHOOSE 1 OR 2: NOT COMPLETED - SPECIFIED ADDRESS IS BELOW OFFSET.@HB*y-  g9g#  fgL ` 0e$ 9c Ae Zc ae zb<Nu<NuHB*y-L Nu*|`#ORT. IF NO CHARACTER IS READY, WAIT FOR IT. * PRESERVE THE PARITY BIT, AND PRESERVE ALL REGISTERS * NOTE CHANGES INTRODUCED IN VERSION 0003 : >>B<< * THERE ARE NOW TWO INCH-- ENTRIES, ALTHOUGH BOTH DEFAULT >>B<< * TO THE SAME ROUTINE IF THERE IS NO TY#ALL REGISTERS (INCLUDING D5) *********************************************************** OUCHAR BSR.S OUSTAT CHECK IF READY BEQ.S OUCHAR WAIT UNTIL READY MOVE.B D5,DUART+DDATAB PRINT IT RTS ************************************************** NI9f(`g<a< a<a`غ9f2`f < a` 9f< ap9ah`  gT9g,  e|g `h<a6<a0`X  gNa f`8E< aNuJ9 gaNua*L ga`Nu<        a< aNuH0&*|B`H0B6*|BB$BEe`֕0 0fJfBg Jg< NJBfL Nu;B@'d HB`H<&<,<N@eT 9cJg6NG Fb*0  c(Jfք # aJaH`aD</a>*L<<f< Jga&Q<.a<<f< Jga QL `NuHaL @NuHl BJDg& Dg, Dg> DdL9 PM>,vPN9 <Nu9 PM*6P<Nu9 PM,vPN <NuBJDg Dg& Dd89 PM,vP(N )"g@"^g@"g@"g@|Nu|`6|`.|`&|`|`|`|`|B9B,NuB9 PM^,vP@NNxH @HNN\`TH B9*9#g<(ED#+B9B,af`/LB#< NC @H,| `օ<`N@d*L<Nu*L<NuHDaHDaNu\a\aNu aaNu0 9c~NJHx((|E<9 * NB$9+9BNBD`Hx,g^(|E<9 * NB$9+9BNBD g g $9 <Nu9 PMװ*6P<Nu <NuJ9+fB9 PM~,vPNB9 PMh,vP8NB9 PMR,vP NJ9+f,B9 PM4B.1B9 PM,vPNB9 PMB.1B9 PM,vPGHDGD00BINOBfDAfNOBf6  g0H9 * L NJ %* gJPMֺ#*,y*,nJ9+g ,y*,n /NBo,|NfN ,< `D=,;g, f< ` < af,;B,;a f,=`H:,NgE EfB,NN`f<,9F9F"J,gjNafyafM+.JVgJ.fJ.g`... g:,f,?f.`6-&e|9l>"Nu:,>EM "fN@Nu  f#NuJ9gBK/M<-,f<,f<,f,|-*y*Nu>3G>,|Ns>9G<FF>,|Ns ae {dNu*9BNuHKB<<JjQ*JfJg< (NuJf B9 `H(/9#  d#(y&y+#+NPH+f L8L NuBNCN0:KfMM-nPf+|NULL0M4+NP+NT+NX    NqNqNu<Nu, fJ.,fD., g@!g@!ng@!g@ .|,*e,K,*,y+`<+(B^<<>,Q(y+`(K+*,y+`<<?,Q(y+9l"N_f9l>"BNu,,Q(y  !"#$ /+BNu d*PI#*NJ`T HJ,j"N]fNT g ,9"fLNuNMgNa.fBlNMB<<SBQM#K,,,NaRfMKN,,,,,,,,g  `V9l`B,1B,;B9<aHJ,g6, 5af<,aH:y+f.,|'K(|N_gNu<NCN0:F -**F#+Nu:+;y;y;yNuH ,g ` NWgNb0LNu9|`|;B,1Nu9|``|B,NOBfX,1 ,1f|19l ;9"b$MvPHgL@ N N L@ |NuH,9"b*MT6P k,vPHgL@`N4NL@`|NuL@`|  NuaN$aN*,9"bM6PEHgNu<E Nu`CH, 0;H0<NOBfQNafyM$K,,,MK4,,,NaRgh9 "=;B,1NZf(J,g,f츬f*, BfLNb0Nu 9f`H (|NZ~NZfDB<*9㝻㝻㝻㝻9,E3+*<L0Nu*y+yNuBBB9Nu, g  f4, c& b B*|b 2BQy;9yyNW.NE|1<NUK,|N,,,,,,,(|JNZfrBLNu y4+g&34+9&9&NuNT gBNuJ,f|Nu|NOBf,1BNuH,B, cF,gg 8 fPB9B,,I ENaRf2(WK4MN,,<IJNZ(WK$M4,,<Nb0LNu`H,g&f, ,1gBB,1NPf,1`BB,1NOBf,1`B,34P`BNu, fB,3``<FF=BNu|Nu>uP uP uPNuBINTXTCOMBASSYSBAKSCRDATBACDIRPRTOUTBATSRCPIP 3f(y+,|#ID.gg,G`,B(WJ,fB,Nb0LNu+f#+B9+&abfJ,=gNT fNWf9lJ"N_fB,MM``yyyNW.NEN_`vJ,jl=,N_NuBNu(W`J,|#ID.g 9,9"b&EM6PgEHaf<Nu|<NuNpNJ,gHazf(>,Nf(<,9F"N_f|1:,blNfLNuGlb^afM+.>,NJ.gHB.Fg,N gM`..g, /NBo,|NfNsB9,y+ #,y*Nf.y*L9NuL@*< NLD  fPB..!     !'f.,g4.1.1d(|1./gH< NLD/fNuJ.5gT,nHNL L@*gafM+&JVgJ.fJ.g`... g:,f,?f.`6-e|9l>"Nu:,>EM|,"e,K,",y+`<+ B^<<>,Q(y+`(K+",y+`<<?,Q!3abfJ,=gNSfNW>f9lJ"N_8fB,MM``yyyNVNEN_`vJ,jl=,N_NuBNu(W`J,|#ID.g侌g,G`(W,;g*k(< NP:f,;NP:fBNP:fJlf N[f`TBl`N!(f L8L NuBNCN02KӲM.M-nPf+|NULL0M4+NP+NT+NX    NqNqNu<Nu, fJ.,fD., g@!g@!ng@!g@"g@"^g@"g@"g@|Nu|`6|`.|`&|`|`|! .(y+9l"N_f9l>"BNu,,Q(y+BNu d*PI$#*NJ`SHJ,j"N]HfN!4_f9lJ"N_8ftB,MKM`kKKN_fNWNazf<,aH:y*f.,|'K(|N_gNu<NC>N02F!)`|`|B9B,NuB9 PMҪ,vP@NN,H @HNN\`TH B9*9#g<(ED#+B9B,af`/LB#< NC> @H,|-":<BQ#+By+L DL0NuH,  d, g( g" Sg! /Sg ,9"fLNuNMtgN`fBlNMB<<SBQM#K,,,N`fMKN,,,,,,,,g  `V9l`B,1B,;B9<aHJ,g6,;H0<NNfQNazfygNaLNu9|`|;B,1Nu9|``|B,NNfX,1 ,1f|19l"JB,1FM,1MK``,,,BB^BNuNaNuZ<,Jl"g*9!*`lH,  dB9*,;g k,;`(J,1g\B,1B4``,1J9*gE;B< `  fJ,;f*`NafJf (WJ,;jBLNuJ,gJ,j,N_f<,`g9F"N_8f9lbN|1`j` d8*PI#! 0#9yJyMNuHJ,j"N]HfNUg ,9"fLNuNMtg4N`f,,9"c `N`fNaLNu 9fMB<<SBQB9B,Nazf,NY&M:gy*g NYNYJkf `(|JNZNZ2!6F"N_8fXylfM`K<@,fB,MM``K,,,KKN_NuHM$K,,,N`f(|J,g  `|aHf*W;l;l;lg|,NY<\ fNazf`NY<-;y`:9!+*NI(y*κ,4gNa`rH,  dv, g( g" Sg`fH,  dDJ,g|;J,;kr  f6,; ,;dBLNu< aLf,;B,;a@g< `< `D=,;g, f< ` < af,;B,;a f,=`H:,NgE EfB,NN! 1f,gg` 9fdB,B9<+f `H9F`N_f8NZ2f07l`kK`<<?BQN_fNY^f`` 9 g <NC>NUL(y+KB<<BQ9yyNVNE|1<NTK,|N,,,,,,,(|!7bmJFgL(|9F"N_8f.9y\`N_f(|NY^fJ9\ f*y+BUNaLNu;y\`HJ,M$K,,,MK4,,,N`gh9 fPB9B,,I EN`f2(WK4MN,,<IJNZ(WK$M4,,<Na!,`,f<,9F9F"J,gjNazfy,Nf(<,9F"N_8f|1:,blNfLNuGlb^afM+&>,NJ.gHB.Fg,N gM`..g,A$0_"3k.&+c%%A%!0;$.&/OA%+$ .'r%bF51b0_"$$5$_'-' *' I%ߧZ&~JoZ&\r9 &!:afNuB9 ,fH<,N3+ FXb|9l"| =N_8fR||=B,19lbNBNP:f2<,Ny+g N\f`NW>fNWf 9y+N`LNuH,9"b$MvPHgL@ N N L@ |NuH,9"b*M!TXTTHANK YOU.: +4I`^999~b~}~~Җ~Җ~Ң~Ң~k~Ҫ~ϓ~~r~'~J~~Ѽ~~:9~<~~~Б~~Ќ~~Ҧ~Ѩ~~O9nO_ (6 2׶& 0!! 9}#&}&'4&r'e&ғ5 : 459nn4}!&! $) |)')$ &'5}"&}$'4$r&5$~}4V &2mY'S'J'' Z&oJZ D' &5Vn & &S'lJJ$JX' 4 j&2a5}"&~!;6P k,vPHgL@`N4NL@`|NuL@`|  NuaN$aN*,9"bM:6PEHgNu<E Nu`,CH,NY,MJ.fHNazL@fTNY:.g<:.g69E(|9E"N_8f,:,`g<=E:.E! I}('(E nCwO_-J/ ]= Ǡϓ ' ' SK*DOS: |(CE a & }O@Ѽ%''Μ'O ) CD'&M&9L'M' 0 L9W ] 9& W}'Έ !" n~p09P;9199293949pwzzz{Ӏӄӈ ~6~=~r INVALID FCS CODECONTINUE? 294 &4 '0"'bO_  4fZoZ&B546  o'"m* #u X0U56nU46 bO!<g.=EBLNua$fNaLNu`a`BBn(oNY^NuMD*|#.g*Gf|NuHB9,L&,(,., BM(|J9|`|;B,1NZ2f(J,g,f츬f*, BfLNaNu 9f`H (|NZ*N!A'}~} GETίMON`XEQ{W@Ѽ%wWr&h4v@;Z''9 ?Gm"&>Z'Ȁb:|bZ'}b& ٍ| r&r&9r'&2br54LĶ '' 0 &'50%9#A%Z#!# 40<2b߁Y&5֚"Q"`{ٔJDJڑԢٍWZԢ!]`c!&r'&$_&546Z'Z'Z' &?  sX;'+j; m"'>"1@Ol"}X' J;  & m;&X н& m&bm;*O WE&@'D&B " =Z2fDB<*9㝻㝻㝻㝻9,E3**<L0Nu*y+yNuBBB9Nu, g  f4, c& b B*|bBuP uP uPNuBINTXTCOMBASSYSBAKSCRDATBACDIRPRTOUTBATSRCPIP!a%z"994k&'Q MI0 && 7 0& ($ '2 ' %'0  ~Ҫ '0& Ċ54'0 54 І ̾00&547o섎Ђ%1 4 00&mb& Њ'md' jbҪlb50!$  mH'պ~p;+C &l;;$O  ,& ;o;"5;'&  &o;& 46 'L&Go &:K&,1@_oZ&  B"l"0@:䧄 "&&@J&"N 1~#0 Ѯd]9Oo\& o946?&!O #5(C) 1984 - 1986 BY PETER A. STARK. ALL RIGHTS RESERVED.ɲ ERRORǠڍe0Q˼DѨ@ ֚' '. )@r& &=& &ս=o@&~}̥& 0+#0+95!Ќ&2a5'd G GN_J%A9# }G'2F".0 #4NXIXI}G&NXI XIXIĉN J$9N900945DDDD09#~Ҫ46 46'|"ɲ ɦ ɨ0<-&ѝčb r&5"&0ol0L *.:ɪO" Y' &Lo H1ɄѮb ' /@*m' j;&1?&ýܙ&<5o?o 1 ɯ/ɱ194v?&ñ_# ]&  B5 &֌ܙ&<' Y'~4K& ʎɀ{ٔ& ']L'Z &o B&"     " @J&-ٔ&(@BFF0@_oZ&ɀJ& &t1 '~A 05oZ& OW"0ɄѮɀ&O546Z'Z'IZX&<  Q0Q''Q'Q QbTo5b ;'+ &ݦ;&"~Ԣ;ճD&DJܙ44'|5 9999999999D59J 5v699 SK*D09: 39Җ49t YOU ARE NOW IN SK*DOS / 6809 (C) 1984-1986 BY PETER A. STARK STAR-K SOFTWARE SYSTEMS CORP. 9" ` ` ` ,` :` H` V` n` ` ` ` ` ` ` ` .` ` `` ` ` ` ` `` ` ``` ` `v` ` ` ` ` `^` ` `R` ` `F`B` ` `6` ` ` ` ` `` *` >`` L` P``` P` X`"O&&& 0O_@J&/D&A1O@14 01+Į5J&&/& c '&[ c~0 ~eܙ&+0Y& ]_a!J' 9~}4XXXf:[9Y946' "'&54@;" ` Nq`.. e I$eI 5BB&<(C C"H$H&|K-M( I*L߿,|ܻf(D    "_BOMzNpI 5B:I 68 ;"` `` n` z` ` `` ` ` ` ` ``` ` `` ` ` ` ` (`` <` T` j` p` x` |` ` ` ` ` `n` ` ``.`4`<`V`N`j`r`z```````*`N`d`n`~```````"o"54َ 46o&1j""&"/"14"510@:Ѯ554v/'D&10@:0Ѯb~L54v|&wÎɀ' b&Z'R<ڐ&ܙ&AKɓRĕ1'0D&ɑ@J&& }ڐ&" *M*ENu**ENu.<>9&G``g g g * ` *`* `* JkHOHG*ENu,GOMNp`~```,`j`j`p`Z`r``N``\`h`>`:`6`t`.`|`~`~`~``z`z``v`v`v``r*E`g g" `6`N`d`z````````:`B`J`n````````4`>`N`d`````````n``&`F`X`\`V`t`N`````````0`H`l`````````"[O_턽5ɑ 46m=& =?1$0Ѩb105Ѩb]': &. o0 ]&b05ɄѨɀخb150$Ѩ5 46oJ' J&^"'o"&d"h" 4L_" &5  54v 4vOJH2JL_"qMJ%"  g. G(GNu.G GNu. G"GNu. G$GNu*E`g g g. G(GNu.G GNu. G"GNu. G$GNu`g g g$. G(G*LNu.G G*HNu. G"G*INu. G$G*JNu`g g g$. G(G*LNu.G G*HNu. G"G*INu. G$G*JNu*ENuHG*ENu`"<`V`l``````` `*`J `j`````````0`H`l``````````$`*`0`6`<`B`H`N```r```8````*`h`2`.`*`&`"````Z`Z`"J0@}H''Gŀ'1!& & }5'3'.@&zM&zL'J ' X%1! 椮b 5   4Vý<m&ܙ&7KF''B'#bD&@' BF'FO5֍& 5ֆ  BDFd9404 ' &  2b54vɀC{" * EHG*ENu* OG*ENuO`a* M*ENuan`*E`a`a`a`a`a`a`a`*M*E` *`h)``+g`T`L99f99fB. 3`"9"f| ˠ3B. `( (Nhh"h#@l" ````````H``L`````T`````````H``T`t````````~`z`v`r`n`z`f```Z`V`R``J`F`B`>`:`6`2`.``&``````"ɀٔ& Ʉm'1D&Z&5 &A 542ܞٍٔ& YO5YI1?&9 94 ~ !oZ&54f ' & "H 1"5BINTXTCMDBASSYSBAKSCRDATBACDIRPRTOUT@6%%9O99O9O9~Ԣ9~Ԣ~Ԣ~Ԣ~"  (DK`M@Bf`( (Nhh"h#K`M@Bf@l (D```````v``````^```*`0`8`b`|`|`:`6``p`*``````` ` ` ` ` ` ` `"` ```````````````````````````````````~`z`v`r`n`j`f```Z`V`R`N`J`F`B`>`:`6`2`.`*`&`````" !"#$" `````````````````````````````````````~`z`v`r`n`j``b`^`Z`V`R`N``F`B`>`:`6`2`.`*`pYOU DON'T HAVE"&JaXJ`JaJ`.O&G`Bވ G```BFBG0HJGg ```D@`F@`@`@`@`@`@`@Ggv`n@Gg^`VJ@GgH`@B@@`8D@`0F@`" ,Gg4`,ax@` al@`a`f<<@`<@`a8ONF@O`a@Gg`a@Gg`a@Gg`~a@Ggl`da@GgP`Ha"! ENOUGH FREE RAMBAD INSTRUCTION  AT LOCATION aD@`aF@`a@`a@`a@`a@`a@`na@GgZ`Ra@Gg>`6ajJ@Gg$`aP&M`aF"'( @` @`@` @`@`@Gg`@Gg`J@Gg`BA@`aD@`aF@`a@`a@`ta@`da@`Ta@`Ba@Gg."!-f<<@`,<@` al@Gg`aR@`aD,N@`a0> &MGO`a.O GJG@G g`a<@FNGg`a謐@`xa蠰@`laf<<@`P<""B@`B!e ebeOMNpOM^NpBe >dOMNp``. GOa. E&G`<<@`|`t`lH@HGgZ`Ra?aa|>ar`,Jg:g>g<g:"(`&ar@Gg` aVJ@Gg`a<&M`a2B@`aD@`aF@`a@`a@`a@`a@`a@`na@GgZ`Raz@Gg>`6a^J"".@`DalONF@O`&aN@Gg` a4@Gg`a@Gg`a@Gg`a@Gg`af<<@`<@`xa砀@Ggf`^a@`P"#g8g6g4g2g0g.`.ONu.Nu. Nu. Nu. Nu. Nu.Nu.Nu.Nu.ONuJg:g<g:g8g6g4g2g0g.g,`ONu GNu"GNu$GNu(GNu&GNu Nu"Nu$NuO6Nuaa`<H. E&G`.`$g")@Gg$`aD&M`a:B@`@`@`f<<@`<@`aOM@O`@Gg`@Gg`@Gg~`v@Ggf`^f<<@`F<@`:@"#/ax,N@` &MGO`"aJ.O GJG@Gg`a&<@FNGg`ܒ@`Բ@`f<<@`<@`aOM@O`@Gg`z@Ggj`b@GgT"$`f`g`f`g`f`g~`fl`gZ`fH`x g4  g,`\ ,<f`@,<f`$,<"*Gg,`$@`aB@`HH. ޅϋGO`a M> @Gg`a@`a@`af<<@`<@`aONF@O`va@Ggd`\a@GgH`@at@"$0`L@Gg<`4f<<@`<@`@Gg`@`a< @NGg`a$M> @Gg`a@`a޲@`af<<@`<@`vaONF@O`X"%g`aT M> g`aB"M> f`a0(M`a&$M`a`j> Oj> Oj> Oj>Oj>OjjjNua`v.ddddKdO GdO"GdO$GdO&GNu"+Gg.`&aZ@Gg` a@@Gg`a$f<<@`<@`a@Gg`a@`a.O@`a. GO&M`ra.O GJG@GgV`Na<@FN#1a@GgF`>ar@Gg*`"aV@Gg`a<@Gg`a"@Gg`af<<@`<@`aނ@Gg`a@`aOJG@Ggh``a#     #2OJG@GgD` @Gg`a0.O(GJG@Gg`a < @FNGgݾ`ݶa.O(GJG@Ggݚ`ݒa< @FNG#N\CONS*#PROMPT=SK*DOS: ' Nu' #3@GgP`Ha@Gg6`.az@Gg`a^f<<@`<@`a6@Gg`a@`aOJG@Gg`aOJG@Gg`|a.O$GJG@G9gx`paݘ.O(GJG@GgT`Lat< @FNGg2`*`4aN@`aB@`aB,N@`a.,N@`a2,N@`a,N@`ܾa,N@`ܪa,N@`ܖ# *TDefault driver-& ZB9*&.9C&#B9NzNz#.C(y&K( 9*@,`6a^@`*aR@`aFf<<@`<@`aONF@O`a@Gg`a@Gg`a@Gg`a@Ggv`naginning of data buffer (256 bytes) LIST #f*f*c(, #IlNBN I #+)yN)yR9yV yXyNT g, g8N5.NWf|N4I"NBNA |aaaIYNBNB$NuNBd` cbNu #5@GgZ`Razf<<@`6<@`*aR@Gg`a8@`a,OJG@Gg`aOJG@Gg`a.O$GJG@G $g`a< @FNGg~`v# ``[ګ+j;{Zk.L(C) 1986, 1990 BY PETER A. STARK. ALL RIGHTS RESERVEDN/N0N NuNuNubNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNu# Welcome to SK*DOS (R) Version 3.3 Copyright (C) 1986 - 1990 by Peter A. Stark Star-K Software Systems Corp.  Please enter today's date (MM,DD,YY): STARTUPBATThank you.-3 B9#6`lg`f`g`f`g`f`g`f`gv`fl` g`  gX`z ,<fB`d,<f,`N,<g`8`߶aOM@`ߖa߾@`ߊa߲"M> @Gg#  N NB('SNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNufNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNGNNNuNuNu#B,o.g d#+ Eb",|.,vpN@G,|B9Ns(||nNCN0:/OPT--T U0WXWNZ@ZlZ~ZZ[h\`] M-^^]V]d--]Nx__0:1b@G.6RE~#7v`naߢONF@`Vaߊ,N@`Bav.O"GJG@Gg&`aR< @FNGg`aHONF@`a0,N@`a.O"GJG@Gg޴`ެa< @FNGgޒ`ފa޲ON# Q: `SK*DOS: >  ## bT1`6`>HlIII:A @@BBGHJB$BBCBDB6CdCZCPInA GGIXINbGNua`a^a\aZaXaVaTaRaPaNaLaJaHaFaDaBa@a>aBB9 PM.-f<# 99f*9E#`J9g,B9,y+#,y*Nf.y*L9Nu.|NN\,9#B9B9++ + NN 3 J9*gN 9 f*<N{P*<N{P(|'NB#N{PH`((|B9#+|;B9av gn g gX g@ g g g8 g\ g g !gR "g: 0g 1g`a$A`a$A 9-ga$gj`8aHA$Aa`aHA$Aa 9-ga$g0J,#!P.2dNB$` I=_NB $@A`fP>9`f&NB$NB$8<NBDA< aFNB$J/g~I NB(ONBO NB$N0:Subdirectories used: f< NJfNu<NCN0:(|NCN0:Disk Name: Catalog of disk # IpK:<*QNA IKT:<*Q*y  g  g`,HNn#*#*,y#+#B9*yNG  g9f `:#+ y g  g9g`#INE~e<NbT,b$#+B#1f*aJ9+febBg91MP`J9+fe7 bBf 1`Jf1`aHA$Aa Ҋ`*a`$aHA$AaҊ`a 9-gҹ#`laHA$Aa`aHA$Aa 9-gaHA#"in drive  Number: |  Free sectors(|#+B9NE~eBNbTNBJg ENBJg"EBNBeJg<$EB(|?NBNI 1g 2f<* eN(|#+NU0f|;c<$ gd c4<<a&aa6a# 9NT f# ` ʑ`g ( g (,fA"yٳf#+`H#I"NE~e<NbT,d(#+B9NU0f# `r `h#+(|NE~e*9g*Ea"g*<5*Eag #+`#$aԁg,J9+feĵbBf`a\HA$AaT"ҹ$`$|`a2HA$Aa,Ҋҹ#'`aHA$AaҊҹ#'`BNOBf"INOBf ҅NuNOBg, f6B9NWLB9+NuI9VNBB9N0:LOAD##arBf`$ g( c<<aL&afaRaBa>f`Jg"c<a$& a>a4` <a& a0aNWfN0:NPfNu8La`HCaHC`JgeNu(|@TNB``, fP(|?a`f(|?aVf(|,N[hf*B`<NCN0:(|#V*UN`,|Bg<fJf* *EBNu gJg`a`Nu++ + B9B9+a$flB9+J9g@N/y>9 y$G>Bo,|Nf,|B9NsIߪyalN0:AߔIh# ERROR - Load address below OFFSET or above MEMEND.I9NBNuGET loads a binary file into memory. The syntax is GET to load with offset and check load limits GETX to load with offset but not check load limits GET <#?NBN0:NC(|NWN0:NBNI YNuINVALID FILE NAMEMISSING/INVALID ADDRESSFILE EXISTS - SHOULD? I DELETE IT? ARE YOU SURE? SAVE OPTIONS: 1. USE ABOVE ADDRESSES (IGNORING OFFSET), OR 2. SUBTRACT OFFSET FROM ABOV#)h)h)|BAT #+B9NT fNWf|I#+A#B9NOBf  g<  dINBN0:ERROR - .BAT file is not a text file.IDf JfNN`I&NBI:(uaN0:B, `.BAT file execution error -#file-spec>- to load without offset and check load limits GETX - to load without offset and not check limits*y  g0  b9"bB9I.NB0NJ><,< /QB/(|#+B93"N_$>`(N n ?g#ex(<$flI#ed(<$fXIb#eP(<$fD0eJg <"fI5`,g:(NfI f  g` ,g7II(N(NfIf`I5SPLIT is used to split one large 'source' text file i$     $nto two smaller 'destination' text files. The syntax is SPLIT where describes the file to be split, and are the two destination files, ./ to change to a different directory. Use / alone (no letter$< 3fNu<-3B 00 0f:Ƞ3H@3NuI5( gI5(H7If`I5TCAT prints a disk directory with all files in order by their date and time. The syntax is TCAT Theine num> is the line number at which to split.Illegal line number specified) to change to the root directory. Use SYSTEM ALL to have SK*DOS search your active drives, beginning with drive 0.SYNTAX ERROR.The current system drive is , directory ALL$ drive and directory are optional and default to the current work drive and work directory. They may be specified as either just a drive number, or as both a drive number and directory letter, such as just 1, or as 1.A/. The is $`*n ?g&nF+0 dx0eNJgJ Eg Eg Eg Eg Eg E g`$p`<` <`<@0@1@2@3I5B+0AB80z8I6I5I5STEPRATE is used to display or change floppy drive step rates. The correct sy$ ` NhK*h- ?g .g  g.g 0e Ad 9bE.gK~B--  gf.g`  gZ ,gT .f- *g Ae zb.!eK2-  g ,g /g  g .g`^4IU5(03Iʠ6(H9$also optional and may consist of one or more full or partial file names and/or extensions to be searched for. For example, TCAT 1.A/ TX.COM would list all files in directory A of drive 1 whose names begin with TX and whose extensions are$ntax is STEPRATE to display the current value, or STEPRATE n to change the steprate. The value of n may be 0 or 6 for 6 milliseconds/track 1 or 12 for 12 milliseconds/track 2 for 2 milliseconds/track 3 for 3 mill$ |"fI%5IpBEI=6B((z<84I354"(*h E$EKBBB*h  gn(gh  f-` .fR--d *fLIR.!e1E-d *f2I8.!e1E -d *fI.!e1E `I#K: g j$ .COM. The symbol * is a wild-card character inside file names.Incorrect drive number.Error in reading directoryDisk Name: Catalog of disk in drive  Number:  Name Ext Sectors Date Time Free sectors Not enough memorisecYonds/trackThe current step rate for all drives is  ms.Sorry - wrong version of SK*DOSN $ K`(H f (H f,kgKM< : *g:g" g& *g g-fKQ`2J-k`J-j`g -fKQ`(g e<4$$$ 2b~`D*h  g(g  g ,fp-`&JM y for directory, latest file first$`- ?g1 Af$-1 Lf-1 Lf|B.`D0."b:E- .f*-1- /f Ae Zb.!e@`B.I5.k03.gI63</3I6I5I5SYSTEM is used to display or change the current default$ gBEBE,ke C$"JEf:g4I<EIh<a8)<8IR<aI (HDa(La(HDLaxJgzI <aPB ab<:3HC<I00aHI& `:44(<8I< a4Jf$`aB9 eB IZ5< 39aX<-39aH<-39a8<,3< 39a <:39a<:39a< aV39 d<a`<p3<m34 n ?gt SgIz54I5aKI5a $ !"#$$KI5a?KI5aKI5a  fBK?I5aKI5aKlI5) Ag Pf:L ?K@I5) Ng* Yf990<Q9o lower case except after a space or control character. The correct syntax is TOLOWER If not specified, the current work drive and an extension of .TXT will be assumed.$ `(N#e:., HUMBf.., UGf".8$ g# ^I&5IB5I5TRACENAB allows SK*DOS to work with HUMBUG to trace through user programs; it obviously only works with systems which use HUMBUG as the system ROM. To use it, first giv$:a:a:a:a:a:a:wa9a.f `  c  `a 03HD03Nu/ D HD/DHD/D(Nu9@Nu/$`B(N#e<$-0."bIE9|"f.,dfIK5) YgI9|"CE(Nf(Ng, f<  f  `a gj  f< a` gf>IfD(NAC`R(#>("  fG<1G" G(fIנ5`Nu(N$!e the command TRACENAB HUMBUG to enable HUMBUG to work with SK*DOS; this need only be done once. Then give the command TRACE*** just before calling the program to be traced. SK*DOS will then load the program, enter it (via its regular e$9*Nu)0  bB )0  bNu H@NuI5TIME is used to display or set the current date and time in the clock/calendar IC. The syntax is TIME to display the current date and time, or TIME S to $NuI 57aTOMSDOS writes a text file to a specially-formatted MSDOS disk. Before using, you must first format a transfer disk with MSDOS's FORMAT A: /1 command. Then run the following Basic program using the PC's Basic (it takes a few min$"ntry point) in the trace mode, execute one instruction, and transfer control to HUMBUG for further tracing.Tracing with HUMBUG is now enabled.Tracing is not possible; reset HUMBUG with !!, reboot, and make sure to use TRACENAB before TRACE***.$set a new date and time. If setting the clock, make sure to answer all questions with two-digit numbers.Input the following data as 2-digit numbers:Enter day of week as 01-07 (01=Sunday): Enter month as 01-12: Enter day as 01-31: Enter year a$utes): 10 OPEN "A:TEXT.TXT" FOR OUTPUT AS 1 20 PRINT #1, "EMPTY" 30 GOTO 20 Now take the disk to your SK*DOS system and run TOMSDOS to copy the desired file to the disk (only one file can be copied to this disk; if you have more than ons 85-99: Enter hour as 01-12: Enter minute as 00-59: Enter second as 00-59: Enter A for AM or P for PM Enter Y when ready to start clock, or N to cancel: *NOT SET*SundayMondayTuesdayWednesdayThursdayFridaySaturday$e, you must start with another formatted disk.) The syntax for using TOMSDOS is TOMSDOS where is the name of the text file to convert, and is the drive containi^IR50<<|a*</a$<-a<\aBg< a< 3< 3<33@g8NqQNuSK*DOS: $`4<B N(N#d `~7ar<$f(Hg ,faV  f   ga  f< 3`  b<3NuJgB3Nu Ae Zb 3 Nu(HNuI5TOLOWER is used to display the contents of a text file, with upper case letters converted tng the MSDOS disk. The disk can now be read on your MSDOS system. If you wish to copy the file to another disk, you must use the /A option of MS/PC-DOS's COPY command.OUTPUT DISK IS PROBABLY NOT A MSDOS DISK - CONTINUE? MSDOS DISK IS FULL.%`D` ` TOSTEPRUNLLIST8LIST@NEW LOAD0SAVEGOSUBGOTOON`THENDLPRINTFPRINTNLETINPUTTIFREADDATARESTORE4END RETURNDIMFORNEXT REMMERGE4STOP2POKEfDOSRND%     %(jTAB(ZINT(CHR$(PEEK( ABS(`SGN(6 Ready DELETERE-ENTERERROR: in line ZEa<` <?aa&E*a\ g gN f$Kg/ < a<a$_`K4f<!` ae zb`<@K*:%E`' aH<<*@fK < $[LNua*@Nu*****GGGGFFNu*****GG%B>*ENB. KiBOvKhHa Ea GA GAE,aK :ReE}a$zta a`6Variable >255Error in INPUTIllegal/missing charMissing quoteError in DIMIllegal arithmet%gNuG*GgGg Gg`a0` a,a*`a aa`*a"a *aa< ahNu*a`0Vo 9cJ`Ba` g.**(G`(j<$zf@B*a$[Nua/ Kg$@" fEa&a KB$_` < aNuaae>"*ae8a@' $z\a8K% $[Nu$z<** @@f$zNu$z~K< Nu' a barae<`vD*a^aVa< BaJ*jaraalaBa>a*A$zafaa*EFNa~$z:ONu<NuaRd (g < E' $z <g*f*f<K2HL<NuH* (Lga&`****$G`aa.hNuHefK*$z (g8EK*$zmmmmaL% (K** h<xdDK Nu' aaK*aaa < $zv*a(Jg a`$zdaarfala:8@aLa:"ja$[Nu2:ze8$z2:G*Ge(g2* ff$zK*<NuK*Nu*%BBBf`| `B. :g~$za g>aK*aKz*$za g aKqa~$zP`$zRKR*$zPHg>g a~``aaEN$zaadx` < `$zaaJgKazB>*EzK>g>Kg`KB$z`a"$zKƵf< `$DK*`K\B$z.aKNka~ ,fl`ad<``K% !"#$%*`$z6KBf<`BEK*$j`EaVa<$z`|STOP IN LINEp :f<`aEK *$zaeTK*$zafd gEaaE`aa ,fK*$zDa ,gK:B f`<`xatK, %aa`' $z(aX ,g )f,K*$[<NuaK*$[<Nu$zapie<`@ (fK*$zA@ada:``BAa. @a$za ,g`X' *a&aK*. $[GGGGNuJf<`*b*b% `R:Egk"j3Nu g(Ng7 <$`Nu:g`)`(Ng, fҠf`$Nuavg ,f(Nf`K$zK*$zgg a`f~` LaPa$fnKK0aE.ap`$zߤa "fE(N-J#d "<%-g KBBKK KaK* <a.ad .fK`l<Nu*aeb0f:f:gK`K' $zZJg:f *`@KpFK4*:cfK[$[`:Qf .f KE`zB Ef*%*KaJgg:Qaf`afazNu$zaRd`K*$z&E****E bgg^`K f<`$K*$za =fHaa>anKvf2$zvaKn*$zaaK*$zVa*`$zlan<@@ab$zXaa|KL*$z aj fK*$z*$K"*`$za,d`ta2 fZK*a ****$zK ,gK*K gE찪fK*$ja\$zE <J*j%""MERGE NEW NEXT ON POKE PRINT READ REM RESTORE RETURN RUN SAVE STOP. Functions: ABS CHR$ INT PEEK RND SGN "B TAB All of the above are fairly standard, and he%*K댰fE`aK*$zaN ,g| f`$zK*$z`| h`B. $za "f" "g f<`4a` fb ;g aKtBK\*`,`$zJa aO KH`"$z.a漣:6c%Kwa*ENa  =f<Nu f <Nu<N%##re are some examples: LOAD file-name loads a program from disk SAVE file-name saves program to disk MERGE file-name loads a program over an existing one#A DOS returns to SK*DOS L%af`aHaan ,f: "gaf` ;f `2 gV<`|<.` B0da: Gc Og fa.BKNu' aBKJ*fa$[`J*j <-aa* nP mJJnaaxK_J*j0an*%u >g<` =f <Nu NuaJj`aada`EanE:afa a%$$ET is optional LLIST and LPRINT list and print to device 2 PEEK(decimal address) returns contents of address POKE dec.address, byte stores byte into address$@ Decimal addresses in the above can be 0 %`:Gf*aZa*fapda<Ea.*j <-aDB j ab a`Bad*aa`Nu*z. gJfJfJ-f<NuJfJmg<Nu$zhad<`a =g<`at f%aT**@@B*aaE`7%AiH a* o<`BBJ*c e/eҟe҇ea*`$[NuH a*AB$za| dDaHDP *DaHD*DaaFaLNualda (aN*A$zK*&%through 16777215. Although UBASIC allows string constants (as in PRINT "HI"), it does not allow string variables (such as A$). Only one statement per line is allowed, the arithmetic is floating point BCD %<with nine significant digits, and n&     &o ^ is allowed. Variable names can be A through Z, and A0 through Z9, but array names can only be A() through Z(); one or two dimensions of 1 through 255 are allowed, but subscripts start with 1, not 0.or fatal read error! DON'T USE THIS DISK ANY MORE!System Information Sector fatal write error! DON'T USE THIS DISK ANY MORE!Please wait ... ot g=iven.ERROR READING INPUT FILESPECIFIED FILE DOES NOT EXIST&`(N#ez<$fvfp9|"ft(,| D(,~"DI5BBB(N9H`9|"2,"9l`"f0R<,b Ff 0H@0,"&S>,`gRDJf< g<3B`Jg.g9G9@9I9lJ"fB,MKM`klKK& `*n Of>- Ng Fg`&*nFK:I5*nFK:BI5I,5*nFK:fI6Id6I^6IV6VERIFY is used to turn floppy disk verification on or off. The correct syntax is VERIFY ON to turn ve&`- ?gn10."b:E- .f*-1- /f Ae Zb.!e@`B.I5.03.gI63</3I5IL5WORK is used to display or change the current default WORK drive. the correct syntax is WORK to displ&ݠf9|"gggg gfzJCfBH@>GOG.GOGJCf |}|~gggg gf89@"f"Bl`fI25 ,fIݠ57I5Ia5I5UNDELETE is used to restore a file which has been acci& rification on, or VERIFY OFF to turn verification off. Turning verification off causes faster floppy disk operation, but we recommend that you leave it on (the default) for the best data integrity. ()Verification is now ON.Veri&ay the current drive, or WORK to change to a new drive, or WORK ./ to change to a different directory. Use / alone (no letter) to change to the root directory.SYNTAX ERROR.The current &dentally deleted. It will restore only the last file deleted, but it can be used repeatedly, each time bringing back the next previously deleted file. The correct syntax is UNDELETE The restored file will be given the fication is now OFF.work drive is , directory ALL&specified file-spec regardless of what its name had previously been. The default work drive will be used if you do not specify a drive number, and the default extension is .SCR. NOTE: UNDELETE will not work correctly & `(N#e<$f|;an g g g faRaPaNaLaJaHaF  g `gI`IB`I<5(NaaB8Jg<<.3a 03`*f NuIĠ5`B, fIg`IH5(N7 I`The file specified is not binary. PossibleYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY &if REDOFREE has been run on the disk after the file was deleted. In any case, check the file after undeleting it to make sure it is what you want.That file already exists. Nothing undeleted.Can't find a file to UNDELETE.System Information Sect&  defective version number  6809 file, Version number  68K file, Version number VERSION prints out the version number of binary files. The correct syntax is VERSION The extension defaults to .COM if n& ` A <0. g.g- ?g0."bEA B-  g1 Df(N9|"fI5*<(.$8I5 Db*<8I6`B&*<8<.3BCHC<0 Ccb C b33(*<8I6I5(.& !"#$&|&DL*<:<-38 *<:I5(.~&L*<:<-3*<:I5.*<8I5.I .Hg*<8B> ނރg> gJBg JCgIavfj: gI Q5C 2(N9K`9l`"f4: \gDHA& you wish to have the free chain table printed? Do you wish to have the table sorted? Sorting free chain link tableDo you wish to have the disk's free chain relinked? Segments relinked = REDOFREE is finished. to Can't fix free links - disk is co& ` nFA,`gvl" Gg8,#: f<,`," f.,a,Hf g eR`Jg`gF`Vg8.  bZ2"2``0H: gI U6A 8D84LBf0,"2"@gI5I& rrupted.Disk is corrupted - a link points to sec 8tor 0.The System Information Sector says there are fewer free sectors than there really are.The System Information Sector says there are more free sectors than there really are.Sector read er&!<@`<`-0  bA- Pg`A`A`$|A <0g$@IH503IC60ff"f&f*Iq6<`$I=63`I=63`I=63`I=60 jIM6GJ&<gJjJ30j`30f Ià&Ƞ5( I Z&B8Ia*faH gIafI 5EA KBgb,(!P <`JfIafaIafA(N9h"gggg gf>9l`b9h`gggg gf AfI5(B8(N9|"gggg& ror while relinkingSector write error while relinking ***** DO NOT USE THIS DISK ANY MORE *****System Information Sector read error after disk relinkedSystem Information Sector write error after disk relinkedDisk is too segmented ... not e&"6<  c cFJg nFA:ZG~OG}>)GOGgggg gfIq55D) Yg Ng<3`<NNuA4aN<-3aDIG6a:<-3a0g*< 38(Pe<^3`8h Df<,3`NuB:NuI`I `II`I` I`I5I#& nough memory to relink.REDOFREE reads all the sectors in the free space on the disk, checks that the free space agrees with the System Information Sector, and then allows you to relink the disk, if desired, so as to recombine fragmented blocks of f&#BI|KI g 7fz)|37C6|5`)|1772| 0G(0D(E֊,C)V8n<)| B)| FJf)| <--B)|BOOTF5A ff44I5`Logical  =  *** ERROR - DUPLICATE PHYSICAL DRIVE *** Floppy F Har&5IN`I`I5I5I5I5Iܠ5I6 N(":<-3(#: at track-sector:  Total free sectors =  Total free space =  Kilobytes Megabytes Beginning address of free chain =  Ending add& ree space. The correct syntax is REDOFREE [D] The D at the end is an optional parameter. If you type the D, then REDOFREE will print out the beginning track and sector, and the size, of all deleted files it finds.Invalid drive &$d H Other  RAMdisk  *** INVALID ***  (WP)MAXDRV doesn't match last active drive. ... being corrected. Available hard drives: H: Drive  partition  is  K. Command error - nothing done. Example of correct command syntax: &ress of free chain =  Number of data tracks on disk =  Number of sectors per track = Continue with analysis of segments in free chain? WARNING - end of chain doesn't match but we can probably fix it.Free chain read; number of blocks = Do number.Error in reading System Information Sector.Free chain read error  Length = Uncommitted space - Deleted file at  B' DRIVE L0=F0 L1=H0P L2=N L3=F1U L4=RP LD=MD Log dr. 0 = Floppy dr 0--' | | | | | Log dr. 1 = hard dr 0 wr prot -' | | | | Log dr. 2 = Non-existent drive -------' | | | Log dr. 3 = Floppy dr 1 '     'not write prot'ed -' | | Log dr. 4 = RAMdisk and write protected ----------' | Set MAXDRV to last drive -------------------------------' Available floppy drives:_ F Controller: Drive Select: Drive Type: 'CEPTION: illegal instruction :5 - EXCEPTION: zero divide :6 - EXCEPTION: CHK intruction :7 - EXCEPTION: TRAPV instruction :8 - EXCEPTION: privilege violation :9 - EXCEPTION: trace ;0 - EXCEPTION: invalid $1010 call ;1 - EXCEPTION: line 1111 emulator ;2 DISK NOT LINKED  ERROR - TRY AGAIN?  $ ? 360K 720K 1.2M 1.44M 1M 8" '  - EXCEPTION: vector 12 ;3 - EXCEPTION: vector 13 ;4 - EXCEPTION: format error ;5 - EXCEPTION: vector 15 ;6 - EXCEPTION: vector 16 ;7 - EXCEPTION: vector 17 ;8 - EXCEPTION: vector 18 ;9 - EXCEPTION: vector 19 <0 - EXCEPTION: vector 20 <1 - EXCEPTION: v'``[ګ+j;{Zk.L(C) 1986, 1990 BY PETER A. STARK. ALL RIGHTS RESERVEDN/N0N NuNuNubNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNu'01 - FCS operation code error 02 - The specified file is already open or in use 03 - The specified file already exists 04 - The specified file does not exist 05 - System or directory error 07 - The disk is full 08 - Input past end of file 09 - Disk rea' ector 21 <2 - EXCEPTION: vector 22 <3 - EXCEPTION: vector 23 <4 - EXCEPTION: spurious interrupt <5 - EXCEPTION: level 1 interrupt <6 - EXCEPTION: level 2 interrupt <7 - EXCEPTION: level 3 interrupt <8 - EXCEPTION: level 4 interrupt <9 - EXCEPTION: leve' N NB('SNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNufNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNuNGNNNuNuNu'd error 10 - Disk write error 11 - The disk is write protected 12 - The specified file is protected 13 - Error in closing specified file 14 - Disk seek error 15 - Invalid drive number 16 - Drive not ready 18 - FCS operation not permitted on this file 1' l 5 interrupt =0 - EXCEPTION: level 6 interrupt =1 - EXCEPTION: level 7 interrupt =2 - EXCEPTION: trap 0 =3 - EXCEPTION: trap 1 =4 - EXCEPTION: trap 2 =5 - EXCEPTION: trap 3 =6 - EXCEPTION: trap 4 =7 - EXCEPTION: trap 5 =8 - EXCEPTION: trap 6 =9 - EXCE'Q: `SK*DOS: >  #'9 - Cannot do random operation 20 - Disk I/O error 21 - Illegal or missing file name or extension 22 - The specified file cannot be closed 23 - Random file map overflow - file is too segmented 24 - Specified random sector number is invalid 25 - Random ' PTION: trap 7 >0 - EXCEPTION: trap 8 >1 - EXCEPTION: trap 9 >2 - EXCEPTION: trap 10 >3 - EXCEPTION: trap 11 >4 - EXCEPTION: trap 12 >5 - EXCEPTION: trap 13 >6 - EXCEPTION: trap 14 >7 - EXCEPTION: trap 15 >8 - EXCEPTION: unassigned vector 48-63 >9 - EXC'N\CONS*#PROMPT=SK*DOS: ' Nu' 'sector number does not match file contents 26 - Command syntax error 28 - Missing transfer address 29 - Disk has been switched while file was open 30 - File not open 31 - Disk verify error :2 - EXCEPTION: bus error :3 - EXCEPTION: address error :4 - EX EPTION: user interrupt vector 64-255 ' *TDefault driver-& ZB9*&.9C&#B9NzNz#.C(y&K( 9*@,g  g9g`#INE~e<NbT,b$#+B' 1f*aJ9+febBg91MP`J9+fe7 bBf 1`Jf1`aHA$Aa Ҋ`*a`$aHA$AaҊ`a 9-gҹ#`laHA$Aa`aHA$Aa 9-gaHA' Welcome to SK*DOS (R) Version 3.3 Copyright (C) 1986 - 1990 by Peter A. Stark Star-K Software Systems Corp.  Please enter today's date (MM,DD,YY): STARTUPBATThank you.-3 B9' 9NT f# ` ʑ`g ( g (,fA"yٳf#+`H#I"NE~e<NbT,d(#+B9NU0f# `r `h#+(|NE~e*9g*Ea"g*<5*Eag #+`'!$aԁg,J9+feĵbBf`a\HA$AaT"ҹ$`$|`a2HA$Aa,Ҋҹ#'`aHA$AaҊҹ#'`BNOBf"INOBf ҅NuNOBg, f6B9NWLB9+NuI9VNBB9N0:LOAD'B,o.g d#+ Eb",|.,vpN@G,|B9Ns(||nNCN0:/OPT--T U0WXWNZ@ZlZ~ZZ[h\`] M-^^]V]d--]Nx__0:1b@G.6RE~'V*UN`,|Bg<fJf* *EBNu gJg`a`Nu++ + B9B9+a$flB9+J9g@N/y>9 y$G>Bo,|Nf,|B9NsIߪyalN0:AߔIh'" ERROR - Load address below OFFSET or above MEMEND.I9NBNuGET loads a binary file into memory. The syntax is GET to load with offset and check load limits GETX to load with offset but not check load limits GET <' bT1`6`>HlIII:A @@BBGHJB$BBCBDB6CdCZCPInA GGIXINbGNua`a^a\aZaXaVaTaRaPaNaLaJaHaFaDaBa@a>a- to load without offset and check load limits GETX - to load without offset and not check limits*y  g0  b9"bB9I.NB0NJ><,< /QB/(|#+B93"N_' fIGNCN0:/ .|,|Nf@G3 B9QNNNHNb@NG.NMf##B9B9B9+NNx` 9A0.#NO#NBy$#,|NfPB9QNb@NG.NM*9#' aborting execution., g`TRACE***5DIR:GET6GETX6MON5RESET5SAVE=pXEQ3B9NB9N3$+N0@+B9+(|NE~ebB9+NbTB9#+NT f9 f*<N{P*<'$fINBIpBa zA< a9{L9|<NBDNB$NB$9K93"(|N_f\#`"Ep Jkg(J<a *L*<NBDB9*g.|*NG Ae ZbP`|<`|>BB9 PM.-f<' 99f*9E#`J9g,B9,y+#,y*Nf.y*L9Nu.|NN\,9#B9B9++ + NN 3 J9*gN 9 f*<N{P*<N{P(|'NB'N{PH`((|B9#+|;B9av gn g gX g@ g g g8 g\ g g !gR "g: 0g 1g`a$A`a$A 9-ga$gj`8aHA$Aa`aHA$Aa 9-ga$g0J,P.2dNB$` I=_NB $@A`fP>9`f&NB$NB$8<NBDA< aFNB$J/g~I NB(ONBO NB$N0:Subdirectories used: f< NJfNu<NCN0:(|NCN0:Disk Name: Catalog of disk