IMD 1.15: 15/05/2007 13:46:32 fog mis 017         -FOG/MIS017/MIS#017DOC+,AREACODEAQM;AREACODECOM8$%&'ASCIIDECCMDCAL 84 CAL DOC DBASE2 TIP DBDIR AQM&!"#DBDIR CMD&DBDIR COM DBDIR DOCDBHINTS DOCFORM CMD FORM DBFFORM DOCLIONCAL 84 2PINUPCAL84 ; POKE1 CMD()POKE1 DOC*SHOWMEM CMD$SHOWMEM DOC /MIS#017CRC-.PO1 .MT1 .OP 198419841984198419841984198419841984198419841984198419841984198419841984198 984198419841984198419841984198419841984198419841984198419841984198419841984 8419 9841 4198 8419 1984 1111  9999 8888888 44444 4198 9841 11111 99999999 8888 8888 444444 1984 8419 111111 9999 9999 888 888 4444444 9841 4198 1111 999 999 888 88  8 444 4444 8419 1984 1111 999999999 8888888 444 4444 4198 9841 1111 9999999 888 888 44444444444 1984 8419 1111 9999 888 888 44444444444  MAY JUNE ===== === ==== Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 1 2 3 4 5  9841 4198 1111 9999 8888 8888 4444 8419 1984 1111 9999 8888888 4444 4198 9841 1984 8419 9841 4198419841984198419841984198419 1 2 8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9 15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16 22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23 29 30 84198419841984198419841984198419841984198419 198419841984198419841984198419841984198419841984198419841984198419841984198 JANUARY FEBRUARY MARCH ======= ========  27 28 29 30 31 24 25 26 27 28 29 30 JULY AUGUST SEPTEMBER ==== ====== ========= Su Mo Tu We Th  ===== Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 1 2 3 4 1 2 3 8 9 10 11 12 13 14 5 6 7 8 9 10 11 4 5 6 7 8 9 10 15 16 Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 1 2 3 4 1 8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8 15 16 17 18 19 20 21 12 13 14 15 17 18 19 20 21 12 13 14 15 16 17 18 11 12 13 14 15 16 17 22 23 24 25 26 27 28 19 20 21 22 23 24 25 18 19 20 21 22 23 24 29 30 31 26 27 28 29 25 26 27 28 29 30 31 APRIL 16 17 18 9 10 11 12 13 14 15 22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22 29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29 30 OCTOBER NOVEMBER    DECEMBER ======= ======== ======== Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 1 2 3 1 7 greates eas o printing I yo d no wis t prin unde WordStar bu us th TYP comman unde CP/ o anothe outpu method simpl delet th "do commands fro th beginnin o th file CAL.8 i singl pag cale 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8 14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15 21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22 28 29 30 31 nda fo 198 tha print th yea i larg bloc number a th to o th page wit th month liste below I i se u fo printin a 1 pitc unde WordStar. LIONCAL.8 i tw pag fil se u fo printin a  25 26 27 28 29 30 23 24 25 26 27 28 29 30 31 FRD 11/30/83  9 10 11 12 13 14 15 21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22 28 29 30 31 1 pitc unde WordStar I ha pictur o a irat Snoop wit appropriat commen abov CAL.84. PINUPCAL.8 ha pinu abov CAL.8 an i se fo outpu a 1 pitc unde WordStar. Thes file ma als b printe a 1 pitch Simpl delet th pag offse .P WordSta printe contro comman i eac fil i 1 pitc i used. F.R. Dunaway, Long Island Osborne Network (LION) 11/30/83 Edited by Jim Woolley, FOG Disk Librarian, 12/83  CAL.DOC CALENDARS FOR 1984 Thi dis contain severa calendar fo 1984 Al o thes hav bee create a WordSta nondocumen file an shoul b printe unde WordSta contro fo :::::III:,, ', 'IHMMMHHHHHHIHIIIIHHHH: ,'' ::, .::.. ', 'MMMHHHHHIIHHHHHHHII: .::: ::::::::...... ....:, MMHHHHHHHIHIIHHIIII '...'''' '''H:IIHII... ...', .MMHHHH  HHHHHHIIIIII':' ..... .:::::II. 'HHH:.. .. , .MMMMMHHHHII::''' '' .. .....:HI:, II:.. ...:: ,MHMMMMMHH:.'' ... .. ...::H:, 'I::. .: .IMHMMMHI:'' ..:. I .. .. e Kelly * * written v1.0 08-23-82 * updated v1.0 08-23-82 * * set echo off set talk off * * translate table * from hex 20 thru hex 7E * * store ' !"#$%&' +; chr(39) +; '()' +;...::II, 'II.... ::.. IMHIMMI:'' . : ....::H: I:: . ... MMHIMMI:.'' ..: ...: ... ....II,'I:.... . 'MMHIMM:'':. . .. . .. ,: ,.IIHI:::.  '*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`' +; 'abcdefghijklmnopqrstuvwxyz{|}~' to asciitbl * * * convert ascii to decimal * * store stringin to param store 31 to base store ' ' to dstring store 0 to point* * asciidec.cmd * * This command module will convert an ascii string to * a string of decimal numbers seperated by commas which * can then be used in a poke command. * * er * do while pointer registers contain a pointer to the first byte of the   specified memory variable. That first byte contains the number of characters in the variable. Your routine may do as it wishes to the memory variable; again, a simple RET gets you back where you started. The bad news is that since dB1 pitc unde WordStar I ha pictur o a irat Snoop wit appropriat commen abov CAL.84. PINUPCAL.8 ha pinu abov CAL.8 an i se fo outpu a 1 pitc unde WordStar. Thes file ma als b prASE II's sort routine uses all the available memory, anything residing above dBASE will be wiped out if you do a sort! However, since in many cases an index can be used rather than a physical sort, this does not seem to be a big problem in most ainte a 1 pitch Resolutio o th PINU pictur i improve thi way Simpl delet th pag offse .P WordSta printe contro comman i 1 pitc i used. F.R. Dunaway, Long Island Osborne Network (LION) 11/30/83 Edited by Jim Woolley, Fpplications. I understand that a new release of dBASE, coming (maybe) in about two months, will contain some flexibility in where the call is executed to (SET CALL TO . . .??) and will also have something like PEEK and POKE. Hope this informatOG Disk Librarian, 12/83nte contro comman i 1 pitc i used. F.R. Dunaway, Long Island Osborne Network (LION) 11/30/83 Edited by Jim Woolley, Fion is useful to someone. Now, how about someone out there writing the dBASE based master catalog system, with ALL the goodies! nda fo 198 tha print th yea i larg bloc number a th to o th page wit th month liste below I i se u fo printin a 1 pitc unde WordStar. LIONCAL.8 i tw pag fil se u fo printin a   v[GAREACODE.ASMm  !"$#&%('o)+*,-.0/213456879;:<=?>@ABCDEFGHI̷ke\x54[o.HIzɏx8][k^?~yMkbS#I}G>zuqF~iԮ.<Xrgh.^oXZɱ8'wlz}B׼pj: XaZwʹ<;zIkg!d<8͘10k&bSDJzz=XA`Jd0nj{u,̭H}r)u|;4"c'z*].^ǯ80Q~9>۾ܹ4L1O0&&`>ҌW~p]H@Pd YI|9Һ QrM;$Gݥgs,?bю3T']$aj, 9z*].Dd+[gL(D ~03{H1g}1122CEJ)I."O0)#ו;׳ǹCG ϵ"Z?iydY[/6<"cȏp wh,Eг>jcغ_T:!~1#30kC(zxyU'^{1\cFg`־zZZZ'm+cAX1#30{ak}_'95}e]g}cFg`n*NrkY1#30k_Eг>jczI|5_~EށzIfx=fxf=uQquPyFw?_vD&{FXZ?)2&F1Z?Iu0QqcT^5JgH@I_Wگ9ޱ/! s{iuȘ!!cj${1xɡGKᥐW%Ľ4Qp%zn1qۥEJ]^1s_BZWZ?1#30y5854_oP9Id$PF"G'~̈/^ןzR[7埸)u+ccFg`>k(UjuR7H?5_~+˓cb$ޡWl3Uf~Lկbށ"cY[5WK,cFg`־g} +cI.~1#301Y+#=ˏz;UNKyȑk߁ٷ^Nٺ⦼_T:SC9Yc1[5W(%ع^{i>IHIFI3mRΞ9;5*[סdR\~ELg&mu2.Oju #+Y'Q0-£޷򅉑l$t)҄wso}8n/L,'g4O\>)#v̭>01fIy_BW{[gJY'ѧQӥeG?01߬Ө鉜w\sgh޸C$Lr~hu^1S!s;4_~nZ "fP1d73r<=Cw^oXZY'm:42#e7^1z5/ĭL\Aľx8T:9k,yhمw`Ưz?SeI.Ι\cɏCˮPd =ǰO.W'}<ӑ3r<ճ;0^o\K!u[k.  4!?"-'n5'YN򑀚}f%3~Eг>^lj?l,WpP6z r;|ׯ^c)2Q#C׾s5_uRg%`|;0k,+2zU'A{7i_Eг>jcg1uz=]@#8;i^o\K?qm]85Gޗ}e^1s1^1}6/OIh)l+lEг>k`y zr;Q4 5 w ƔCVd뻂d*^(SFbQ׽Cyh+HM@]1e$]d8e뻂d ^rxs_b{#ghE]|2(š wOXW#s9f_eI$=&[y1 Z R6z}W7W4ȏC,w~V?dwz}W u6cxM!C<5/ڣN©=4i]3b?dI^C17W=+mWPwwֳz}Wt1_l{dqkJw2(5Z D]}6WFP52ljw^k_5~]Q8?n̈́Y :Z Dtdb$JfB<^ZB]O{+{!J뻂lh+Л]6C]Z D+WZ\>?5ض|wȠZ Z@9.Wt75ض|wȠ뻂ַz}Wxr_il5ض|wȘ5Z z}WlyTܯ4`xlW;dZ l@wD5n1IZ lz}WuG`q㇌3lZ D02f뻂Th+1e{͑(H<woo@dq~Y1̇(;ȇ2hd ^hEn 1<>>_i&2wCs& wc]Y$E3 C.r7dwV h+ФAQ I2&C]AJ,^(SFbMǾ(yh+HMZ@2{]h:9e뻂ֳz5QyCԸCFxh+HQyCԸC$yh+xkMQ3q{ƍ2&C]Z 4$:|"CԸCƬz}W`a wE>q Z d{uR/;"u7~H뻂$7^h:n5nq<^&B]sb<&=D?dC]w2Z Dq㇌Iz}W`q{lo}W ˏu/aKqhqF\WxL^z}WmM}#xL^Fxh+M~{Ʃ,xh+LѮ<C8%yh+HB]q^g+cxh+xk} wc05#rQoQܯ_tb?4sqew6ֳz}WI>ľ1shz?&ʘZ f'B  ]҂dCi'h:C17WFxh+I3yhR |hzߋ~AS<^X-@tIF!5Z 4Ř/~žCd4C]ۤZ )#=o4zZ Dٚ}+m%?4_d2(Z DI\^=+-ly[Ƭz}WjžC.rC89x?g qwH<^X$gC]1e$PzX%<^p'z}W`L?D\γ_Fyh+HB]1e$P")j z}W6iw ƔCigxZ Zm@T3ƈEL،!x/z(z}W0;iMknn6ދQC]E-^y3Ʃ2&C]5Z DO!sE-C<^p'B]1e$#nȰd ^h}Ů~QŒCrxNH뻂Ԥ^va*=1-2f뻂h+P0^ń!woz}W`L?D3$^so2C]lh+`q~D5^~xǺhqFax.=yh+HIZ@^9o?U/Z9D3 sC]MҋjVܯcݽƩ2ޓ뻂+7^n0m /VZ ZS@ ~_,ҏuƩ2f Yh+m|SeC]E w ƔC49”z}W`LcHu02l"9Z )#&ۙWcYyh剔뻂CwPBCh <~}W Z s|}㷅֟wS}?8R'r(z'jzG<׾s}YI~ʾޱ{'?G?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`' +; 'abcdefghijklmnopqrstuvwxyz{|}~' to asciitbl * erase store t to badrv store t to badusr store t to badstr do while badusr .or. badstr .  or. badrv @ 1,0 say 'dBASEII Directory display' @ 3,0 say 'Enter User number to use (0-15) ===>'; get userno; picture '99' @ 5,0 say 'Enter the Disk Drive to search' @ 6,0 say ' A: or B:  @ 23,0 say 'ERROR - search string not appropriate ' else store f to badstr @ 23,0 say ' ' endif findme * enddo badusr/badstr * * take the '.' out of the search str ===>'; get drive1; picture '!' @ 8,0 say 'Enter type of search to do' @ 9,0 say ' ie. ????????.??? will display entire directory' @ 10,0 say ' ????????.CMD will display all files with' @ing * store $(findme,1,dotpos-1)+$(findme,dotpos+1,len(findme)-dotpos); to stringin * * convert ascii to decimal (value returned in "stringout") * do asciidec * * poke the function (01h = show dir) * poke addrfunc,1 * *  11,0 say ' CMD as a file type' @ 13,0 say ' Enter search string ===>'; get findme; picture '!!!!!!!!!!!!' * read * if userno < 0 .or.; userno > 15 store t to  poke in search string to memory * poke addrsearch,&stringout * * convert the user number 0-15 to 0-F * store $(hextbl,userno+1,1) to stringin * * convert ascii to decimal * do asciidec * * now make the user number hbadusr @ 22,0 say 'ERROR - the user number must be from 0 to 15' else store f to badusr @ 22,0 endif userno * * if drive1 = 'A' .or.; drive1 = 'B' store f to badrv @ 21,0 say ' ex 0-F binary * store val(stringout)-48 to num1 store str(num1,2) to stringout * * poke in the user number * * poke addrusr,&stringout * * convert ascii to decimal * store drive1 to stringin * do asciidec * *  ' else store t to badrv @ 21,0 say 'ERROR - the selected drive must be A: or B:' endif drive1 * * store @('.',findme) to dotpos * if dotpos = 0 store t to badstr  now make drive 0-F binary * store val(stringout)-64 to num1 store str(num1,2) to stringout * * poke the drive to memory * poke addrdrv,&stringout * * set up the call address to the assembler routine that *    has been pre-loaded into high memory at addrdir * set call to addrdir store 'dummy' to adress * * do the call * erase call return !*!S???????????end of storage used by dbdir  sB1A:*ḁ̊;C7Rʺd&̥dF: 2\!] :7̥<27!K:  ͓Ͱ͟Ͱ͙ ۥ|ۥ.ۥ27^ۥ# ðs̥̥{B  the memory space from A400 hex to the top of your TPA (on mine it is E400 hex, on a 64K system). The following files are required: - dbdir.cmd - asciidec.cmd - dbdir.asm The .asm file is Z80 code which was assembled using M80/L80, and does: _ \2:<2:< dBASEII directory routine Version 1.3 01-20-83 $++ Entry not found ++$ User number has been altered $++ Invalid function passed ++ $ Press any key to continue $  a not very efficient method of getting the directory entries, but it works. Hope this helps explain a not too well documented command in dBASE. Any comments concerning these routines can be left on this BBS, and if you make any wonderous enhancement$+after old stack Press any key to continue $ found ++$ User number has been altered $++ Invalid function passed ++ $ Press any key to continue $ s, and would like to share them, please leave them on this BBS also. Mike Kelly 02/25/83 d command in dBASE. Any comments concerning these routines can be left on this BBS, and if you make any wonderous enhancement The DBDIR routines demonstrate how to call an assembler subroutine from dBASEII. There are a number of restrictions! Briefly, you can load an assembler routine above location A400 hex, as long as you don't do any sorts!!!!! You have available to you  ove the cursor to the second field), you are dumped out of the Insert mode only to find that the record count in your database has been incremented by one. Further inspection reveals, however, that the 'plus one' count is the result of two events; (1) the record following the intended insertion point has been triplicated, and (2) the next record has been deleted. And evidently, not by a "*" but 'all gone'. ------- Goof Hint ------- by Charlie for Charlie I was going to update a members i ----- INSERT HINT ----------- donated by Charlie from Orange Bytes Newsletter A bug has been detected useing the Insert command. It can result in the loss of data record if a carriage return is issued at the wrong time. (Tate knows anformation in my Name/Address database when I accidently entered a CONTROL CHARACTER UNKNOW into my file and it got written to the DataBase. I had 272 records in my DBF file but after that goof I got a OUT OF RANGE error after 24 records. After two loubout it but no solution yet.) So they are recommending that you do not use INSERT and INSERT BEFORE. Case in point, C.J.Thompson wrote that if you have issued the Insert command, after indexing to some intermediate record in your database, you are psy hours of research and trial/error I finally got it back on track. In my efforts, I learned a lot about things I really have no need for but what can I say, maybe some day. Anyhow, nothing worked, either in the DBF or NDX until (1) I added a new recresented with the standard data input screen with the cursor in the first position of the first field. If you enter data at this point, everything seems to work as advertised. But if you should happen to enter a carriage return (thinking perhaps, to mord (2) erased the NDX and then (3) INDEX again. It seems to be O.K. now. The error evidently changed the total record stored somewhere (I never found out where) but the 272 records was always in the DBF file. ---- Local hint (from Dave)-- When you   use GET and the 1st field is a numeric it'll probably crash, if character it's O.K. (at least for him it did) Safety hint-- After working on your DBF file and you want to use PACK. Be sure to exit first ,to force a write to disk, then re-enter to do your PACK operation. Some locals have lost their data otherwise, but why hasn't been pin-pointed yet. FINI for now  After working on your DBF file and you want to use PACK. Be sure to exit first ,to force a write to disk, then re-enter to SET TALK OFF ERASE SET INTENSITY OFF STORE " " TO FDESC STORE " " TO FNAME @ 7,20 SAY "FILE DESCRIPTION" @ 9,20 SAY "FILE NAME" @ 7,37 GET FDESC @ 9,37 GET FNAME READ USE &FNAME COPY STRUCTURE EXTENDED TO FORM USE FORM SET FORMAT TO PRINT STORE 2 TO CNTR ********** Next command causes expanded print on Okidata printer @ CNTR,0 SAY CHR(31) @ CNTR + 2,9 SAY "DBASE FILE LAYOUT FORM" @ CNTR + 7,4 SAY "FILE NAME:" @ CNTR + 7,15 SAY FDESC @ CNTR + 9,4 SAY "INT.   NAME:" @ CNTR + 9,15 SAY FNAME @ CNTR + 14,4 SAY "|==============================|" @ CNTR + 15,4 SAY "| FLD | NAME |TYP|WIDTH|DEC|" @ CNTR + 16,4 SAY "|==============================|" @ CNTR + 17,4 SAY "| | | | | |" STORE 20 TO CNTR STORE 1 TO FLD DO WHILE .NOT. EOF STORE STR(FLD,3) TO FLDS STORE STR(FIELD:LEN,3) TO LEN STORE STR(FIELD:DEC,3) TO DEC @ CNTR,4 SAY "| " + FLDS + " |" + FIELD:NAME + "| " + FIELD:TYPE + " | " + LEN + " |" + DEC + "|" STORE FLD + 1 TO FIELD:NAMEC lFIELD:TYPEClFIELD:LENNlFIELD:DECNl FLD SKIP IF EOF @ CNTR+1,4 SAY "| | | | | |" ELSE @ CNTR+1,4 SAY "|-----|----------|---|-----|---|" STORE CNTR + 2 TO CNTR ENDIF ENDDO @ CNTR + 2,4 SAY "|==============================|" ********** Next command switches Okidata printer back to normal print @ CNTR + 3,0 SAY CHR(30) EJECT SET FORMAT TO SCREEN RETURN --|" STORE CNTR + 2 TO CNTR ENDIF ENDDO @ CNTR + 2,4 SAY "|==============================|" ********** Next command s FIELD:NAMEC010000 FIELD:TYPEC001000 FIELD:LEN N003000 FIELD:DEC N003000::9 ƀצ:9 ƀ:SYSTEM.SWAPDISK&:(7,*SYSTEM.WRK.CODE[*]תצTo what codefile? ( צO,á<צ$88š8(8X+,,"ˡ  Can't open ,   ..CP/M boot error -- 8צVolume &צ  d matrix may be used for documentation purposes. The command uses the expanded print feature of the Okidata printer. Two documented lines in the command file should be modified for your printer's expanded print feature or removed if your printer doesn't have the expanded print feature. ocumented lines in the command file should be modified for your printer's expanded print feature or removed if your printer do dBASE Form Command Computer Systems Design (408) 370-0123 The dBASE FORM command will print the field name, type, width and dec information about a dBASE file. This neatly printe   read * if start = 'XXXX' return endif start * @ 3,0 say 'Enter the ending address to display (in hex 0-F) ===>'; get end; picture '!!!!' * read * store $(start,1,1) to start1 store $(start,2,1) to start2 store $(start,3,1) to start3 store $(start,4,1) to start4 * store $(end,1,1) to end1 store $(end,2,1) to end2 store $(end,3,1) to end3 store * * showmem.cmd * * This command module is used to display memory * on the console. Only printable characters show, * non-printable characters are shown as a period. * Memory is d$(end,4,1) to end4 * store @(start1,hextable) to st1 store @(start2,hextable) to st2 store @(start3,hextable) to st3 store @(start4,hextable) to st4 * store @(end1,hextable) to en1 store @(enisplayed in 64-byte chunks. * set echo off set talk off set bell off erase * * display memory * store '0123456789ABCDEF' to hextable store ' ' to line store ' ' to start store ' ' to end store t to reading do while reading erd2,hextable) to en2 store @(end3,hextable) to en3 store @(end4,hextable) to en4 * if st1 = 0 .or.; st2 = 0 .or.; st3 = 0 .or.; st4 = 0 .or.; en1 = 0 .or.; ase store t to badans do while badans @ 1,0 say ' To exit this function enter XXXX ' @ 2,0 say 'Enter the starting address to display (in hex 0-F) ===>'; get start; picture '!!!!' *  en2 = 0 .or.; en3 = 0 .or.; en4 = 0 store t to badans @ 23,0 say 'ERROR - use only 0-F to enter the address' else store f to badans @ 23,0 say '    ' endif st1/en1 * enddo badans * store (st1-1)*(16*16*16) to saddr1 store (st2-1)*(16*16) to saddr2 store (st3-1)*(16) to saddr3 store (st4-1) to saddr4 * store saddr1 + saddr2 on * enddo reading  store line + byte to line store cnt + 1 to cnt enddo line * ? '===>' + $(li+ saddr3 + saddr4 to saddr * store (en1-1)*(16*16*16) to eaddr1 store (en2-1)*(16*16) to eaddr2 store (en3-1)*(16) to eaddr3 store (en4-1) to eaddr4 * store eaddr1 + eaddr2 + eaddr3 + eaddr4 to eaddr * ene,2,64) +rase ? 'Displaying from &start hex to &end hex' ? ' Press escape to interrupt' ? ' ' store 0 to cnt store ' ' to line do while cnt < (eaddr - saddr) do while len(line) < 65 store chr(peek(saddr+cnt)) to byte if byte < ' ' .or.; byte > '~' store '.' to byte endif byte * store line + byte to line store cnt + 1 to cnt enddo line * ? '===>' + $(li showmem.cmd * * This command module is used to display memory * on the console. Only printable characters show, * non-printable characters are shown as a period. * Memory is dne,2,64) + '<===' store ' ' to line enddo cnt * store ' ' to ans set intensity off set colon off ? ' ' ? ' ' ? 'Press any key to continue' @ 0,0 get ans * read * set intensity on set colonisplayed in 64-byte chunks. * set echo off set talk off set bell off erase * * display memory * store '0123456789ABCDEF' to hextable store ' ' to line store ' ' to start store ' ' to end store t to reading do while reading er  e n characters nD Delete n characters E End edit and save changes; don't type rest of line Hstr Delete rest of line and insert string Istr Insert string at current pos nKc Kill all chars up to the nth occurrance of c L adr for nth assembly routine DEFINT range(s) of letters Define default var type INTeger DEFSNG " " " " " " " Single DEFDBL " " " " " " " Double  Print the rest of the line and go to the start of the line Q Quit edit and restore original line nSc Search for nth occurrance of c Xstr Goto the end of the line and insert string Backspace over chars; in insert mod* * showmem.cmd * * This command module is used to display memory * on the console. Only printable characters show, * non-printable characters are shown as a period. * Memory is de, delete chars End edit and save changes :Program Statements (except I/O) Statement Syntax Function CALL CALL variable [(arg list)] Call assembly or FORTRAN routine CHAIN CHAIN [MERGE] filename [,[line expisplayed in 64-byte chunks. * This too, was taken from some past issue of Dr. Dobbs. 02/20/83 Mike Kelly . Only printable characters show, * non-printable characters are shown as a period. * Memory is d][,ALL][,DELETE range]] Call a program and pass variables to it; MERGE with ASCII files allows overlays; start at line exp if given; ALL means all variables will be passed (otherwise COMMON only); DELETEne number Branch to specified line IF/GOTO IF exp GOTO line [ELSE stmt ... ] IF exp <> 0 then GOTO IF/THEN IF exp THEN stmt[:stmt] [ELSE stmt ... ] IF exp  allows deletion of an overlay before CHAIN is executed COMMON COMMON list of vars Pass vars to a CHAINed prog DEF DEF FNx[(arg list)]=exp Arith or String Function DEF USRn=address Define <> 0 then ... else ... LET [LET] var=exp Assignment MID$ MID$(string,n[,m])=string2 Replace a portion of string with string2; start at pos n for m chars NEXT NEXT var[,var   ... ] End FOR ON ERROR ON ERROR GOTO line Error trap subroutine GOTO ON/GOSUB ON exp GOSUB line[,line] Computed GOSUB ON/GOTO ON exp GOTO line[,line] Computed GOTO Statement Syntax FunDFGHIJKNMOLQSRWTUVP+wk(A8Oxʣ4Ij NR 5ߓp,7[F]hzp,o*Z nG}oH<&kp VkL8w:0yI,jI8wction OPTION OPTION BASE n Min val for subscripts (n=0,1) BASE OUT OUT port,byte Output byte to port POKE POKE address,byte Memory put RANDOMIZE RANDOMIZE [exp] Reseed random nu%&NvC ;ya`;0yIJޮw`a=]#z̳[p,9,5>F,({5l^[.+=i}⻭YLg9=j:vGZr[=Nzp,z̳[ۣJZkcۄg,@P԰ug[56Y83 0L^mdҟca &k=+ZmYX5 mber generator REM REM any text Remark -- comment RESTORE RESTORE [line] Reset DATA pointer RESUME RESUME or RESUME 0 Return from ON ERROR GOTO RESUME NEXT Return to st9?+z& rlаJ]L[}4Y80H^Mdag99zUm5(:nK8|FY!eB2wń;DR&/rɰ?am wSYVK#nije#6Y8w^[GG6ZBֻ&I]g1ugh_?Uԝyxsx՝UOֻTݓ&$tmt after error line RESUME line Return to specified line RETURN RETURN Return from subroutine STOP STOP Stop prog and print BREAK msg WAIT WAIT prot,mask[,select] I?Z> y7B.wx?Z> -/Q yLx 0&?AC@EB ӤP y7+I-im+x"J϶ܥt׻bmIWL8|F&_Z!7yWbﶄgI C}grOmt{E/B #j淶IgWޞM7yDM*۶'s߳y4Mt׻bkaǷmOtCQLܶ88Y-~W~q";3,w@ ^o q8أ'@i  >l۶wpϳG]nHYdCoE^ XT0 W|_A+Q]9%v? -w6Sg1pϳ6Mz2wڒWuCݽWݻNۏ/Hl"Q8f:/-M\8yѤ}϶᏶+&GK$~ ߽d9؇Qo3 f:/5_Ax^Z,\xÅߏZ37]¿L4:_ͅo!zE>unp'3-:=,5 ϭNmM8lp.J$9K={"Oқ;\8AJo=&>-6(gC{.Dž4e^ 4a'M6t׻bmIWv7ϻA.Yq9>Pluݖ0.md,pmk]l,A~n ]ŰXQo TpUW|sG.P_Ax^W=-LQo\v~[i|j3$vo¿LLnB\h%~I|i6Krͷ /Y.,SRӳ&~7y険Cwn&Tɝ Gs7t Qo~7SK('tI%;r={{,:jE8{p.:Cmb#22=X˒v#z4-_fw3-:|w6qv#z4X>B8 s| el[a Ϡ{A9MgP?p?\+ ?DM+Is| [:zXbڠ~i1e !–h=,u9..zWLInKIL'H?+H,L{LM7r ?%–, U#z]?>˅>/HT^;\ _Bmb#ޤ}5m=!ܿL?# tIێpA8h" wFW~;,~;"Tt@ h?rQ;W.ig |?w~4?/Sa&W|FR+yQa b " f -؏nx fZ.P'3At⣹)/0/ :^G T+]'#<MT_T+>f/H ^8fZL1>C1mq=[wpBuhL߅ߏZ3-*M,ږtńdfA?lM-yABz?jt^J3,~iYHQNSb[~G-w?˅-p[K폱:]ecO2~w3Eh 6d$m T 2.(Y~~NBg>@U뢋hmSՄߏZ[ bA]8>˅b=W!G-¿LAEP+p6SPl ibﶄ;{9ߏZ[ q.6?Qo,FU[ γp]",v%[wG7QoR¼hڒ̿{ggP[imɄ^;Y+p6S\t۠CԴqm=&JOCa4w fz҄q큸X袋(W|4WOOe6MK+]'${6(06_Ax^J,P )>.#ڒ.jmwBϋ&5ƚ@϶dG&r!T٧߅ߏZ[@>˅2(-jGgQ?Y. $E;_i,Ww| yA¶+&; p"]<);CzX,?,]4JӨ=*g~rAoym<_A,?# xXdEZkTc]L,=#*>:AK}mk0Qkb.  ~?jo,ضˢ ;uD pg0|}ϳ^?Y. ے?C+>ft,el[a}ϳ | \w(MOi?>浝<pA8oXtՊp$% ?88p|Rs| }s߳+MVz^4gCD6iwai #]<)Yq9> exp >0 or omitted returns new random number Function Action SGN(exp) 1 if exp >0 0 if exp =0 -1 if exp <0 SIN(exp) Sine of the expression (in radians) SQR(exp) Square root of e˅{ŴiHy+֖tńgC/Sa.6?\Y4eqKj{aȡqAޭI HWDSq8N$_Hy+Sq*&NYdpC ~/#  Mqt$]NW aOp…AY% ?[O\luVnzTe~/# Yqtڰxpression TAN(exp) Tangent of the expression (in radians) :String Functions Function Action ASC(str) Returns ASCII value of first char in string CHR$(exp) Returns a 1-char string whose char has ASCII code of exp FRE(str) +QaOpr)?'+$(s,2,lenofs)+'<===' * * blank the fcb poke fcb1,32,32,32,32,32,32,32,32,32,32,32,0,0,0,0,0 * store 0 to count store ' ' to s * string store pointer + 1 to pointer * ? 'srchchar=',srchchar * ? 'position=',position * wait enddo pointer * * take off last comma * store len(dstring) to leng store $(dstring,1,leng-1) to dstring do while count<12 store s+chr(peek(fcb1+count)) to s store count+1 to count enddo count @ 12,0 say 'fcb after poke ===>'+'&s'+'<===' * * get parameters for called pgm * *store 'abc def **' to param store ' * * poke the fcb * store 5*(16)+13 to fcb1 poke fcb1,&dstring * store 0 to count store ' ' to s * do while count'+'&s'+'<===' * * set up the call address * store 10*(16*16*16) to ca store ca+(4*(16*16)) to ca set call to ca store 'dummy' to adress * * do the call * * call adress return ' !"#$%&' to tab1a store chr(39) to tab1b store '()' to tab1c store '*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`' to tab2 store 'abcdefghijklmnopqrstuvwxyz{|}~' to tab3 store tab1a + tab1b + tab1c + tab2 + tab3 to table * store 31$  +tab3 to table * store 31 to base store ' ' to dstring store 0 to pointer * do while pointer prompt, type AREACODE nnn where nnn is a three digit area code. DBASE2.TIP describes use of the dBASE II CALL statement, which is not fully documented in all of the Ashton-Tate manuals. DBHINTS.DOC provides additional information about dBASE II. The remaining files illustrate certain features of dBASE II. ASCIIDEC will convert an ASCII string to a string of decimal equivalents of each character, separated by commas. DBDIR illustrates use of CALL to execute an assembly language routine previously loaded into mem DISK.DOC FOG/MIS.017 First Osborne Group (FOG) Miscellaneous Disk Three 1984 calendars were contributed by Frank Dunaway of the Long Island Osborne Network (LION). CAL.84 is a one page calendar wiory. It will display a disk directory on the screen. ASCIIDEC is used by DBDIR. FORM prints a form describing the structure of a specified database file. POKE1 demonstrates use of POKE and PEEK. SHOWMEM uses PEEK to display specified areas&   of memory. To run these dBASE II programs, place the appropriate program.CMD file in drive B and DBASE.COM in drive A. At the A> prompt, type DBASE At the subsequent dot prompt, type SET DEFAULT TO B DO program where program ) to byte if byte < ' ' .or.; byte > '~' store '.' to byte endif byte * store line + byte to line store cnt + 1 to cnt enddo line * ? '===>' + $(lirepresents the program of interest. Before loading DBASE to run DBDIR.CMD, its corresponding assembly language program must first be loaded into memory. Place DBDIR.COM in drive B. At the A> prompt, type B:DBDIR After this, the procedure ne,2,64) + '<===' store ' ' to line enddo cnt * store ' ' to ans set intensity off set colon off ? ' ' ? ' ' ? 'Press any key to continue' @ 0,0 get ans * read * set intensity on set colondescribed above may be used to load DBASE and DO DBDIR; note that ASCIIDEC.CMD must also be in drive B, since it is used by DBDIR.CMD. Further information about these programs may be found in their corresponding DOC files. Squeezed assembly l on * enddo reading  store line + byte to line store cnt + 1 to cnt enddo line * ? '===>' + $(lianguage AQM files may be unsqueezed using utilities found on FOG/UTL.003, 004, 014, and 031. Jim Woolley FOG Disk Librarian January 1983 ne,2,64) +rase ? 'Displaying from &start hex to &end hex' ? ' Press escape to interrupt' ? ' ' store 0 to cnt store ' ' to line do while cnt < (eaddr - saddr) do while len(line) < 65 store chr(peek(saddr+cnt)'   --> FILE: -FOG/MIS.017 CRC = 00 00 --> FILE: /MIS#017.DOC CRC = 60 73 --> FILE: AREACODE.AQM CRC = 54 C7 --> FILE: AREACODE.COM CRC = 65 C1 --> FILE: ASCIIDEC.CMD CRC = E3 78 --> FILE: CAL .84 CRC = 11 D5 --> FILE: CAL .DOC CRC = 80 2B --> FILE: DBASE2 .TIP CRC = A9 30 --> FILE: DBDIR .AQM CRC = 1C CD --> FILE: DBDIR .CMD CRC = 0E B3 --> FILE: DBDIR .COM CRC = 75 65 --> FILE: DBDIR .DOC CRC = 1E C8 --> FILE: DBHINTS .DOC CRC = 61 B5 --> FILE: FORM .CMD CRC = 9F 37 --> FILE: FORM .DBF CRC = 9E B3 --> FILE: FORM .DOC CRC = 71 AD --> FILE: LIONCAL .84 CRC = D1 6B --> FILE: PINUPCAL.84 CRC = A2 C1 --> FILE: POKE1 .CMD CRC = 64 FC --> FILE: POKE1 .DOC CRC = 78 48 --> FILE: SHOWMEM .CMD CRC = DE A9 --> FILE: SHOWMEM .DOC CRC = 1A 84 ---------------------> SUM OF CRCS = 55 39