Inside - SOURCES

From NitrOS-9
Revision as of 20:38, 26 May 2017 by NealC (Talk | contribs) (Add example from latest nitros version, link to source code.)

Jump to: navigation, search

The original book presented type-in listings for an "alarm" utility and some utilities for system inspection. The sources for all but the alarm utility are part of the NitrOS-9 source tree and so are not reproduced here, but the usage notes are presented.


Alarm

Microware OS-9 Alar - INSIDE 00001 00002 00003 00004 00005 OOOC6 00007 00008 0 006 00009 0 0 15 0000 0 01E 0 001. 0 0012 0054 OOO3 0057 0 004 0 0015 0000 87 0 OO6 OOO17 D 0000 0 008 D 000A 00019 D 0 OD2 OOO20 OOO2 OOOD 4 00022 0 0 12 O. 0 0023 003 0 0 024 003 30 00025 005 10 0 0026 008 6C OOO27 0 0 1A CC O0028 OOD O OOO29 OO 20 O OOO3 O 0 003 OO 23 A9 OOO32 0 026 OOO33 00000 error (S) 00000 warning (s $0.026 00038 pro S00D2 00210 dat $00CA 00202 byt 0057 E D. MITIN 005 E F STIME INSIDE OS9 LEVEL, III SOURCES AllarIn AS Sebol er RS Version 0 0 0 0 0 O3/30/87 00:15:04 Page 00l OS 9 LEVEI, III ՈՅՈղ Alarm ttl INSIDE OS9 LEVEL, I alarm - test that sets alarm for next minute. causes beep from coco sound output for lis Secs. just for fun. Copyright l987 by Kevin Darling FSExit equ 6 FSTime equ S5 F $Alarm equ ŞE D. Tine equ S54 D. Min equ S57 CDO O26 I'mod len, name, Sill, $8l, entry, msize time rimbo 10 rmb 200 Insize equ g 6C672 ae fCS 'A1ar In' fcb l entry C4 leax time, u 3F15 OS 9 FŞTime D inc D. Time-D. Minx next minute (bad on 59) 000 1dd #$000] 3FE OS 9 F ŞAlarm Set alarm time 3F06 OS 9 F ŞEXit. F133 emod llen equ 女 end ) gram bytes generated a bytes allocated es used for symbols 0054 E. D.TIME 003 I, ENTRY OOE E FSALARM 0006 E F SEXIT 0.026 E LEN 00D 2 E MSI ZE 000D L, NAME OOOO D TIME


DMem

DMEM - dmem  <block> <offset> [<length>] ! dump
       dmem -<proc#> <offset> [<length>] ! dump

Dmem writes up to $1000 bytes to standard out, that it has copied over for you from other maps. If no length is given, it defaults to 256 ($100) bytes. Examples using data above:

dmem 4 0 ! dump          : dumps first 256 bytes of GrfDrv
dmem 2 1CA 1AE ! dump    : dumps CC3Go
dmem 0 0 1000 >/d1/file  : file contains lower system variables

dmem -3 0 20 ! dump      : dump first 32 shell data bytes
dmem -3 E000 5FA ! dump  : another way of dumping Shell
dmem -1 0 1000 >/d1/file : file contains lower system variables

Good use of PROC, PMAP, MDIR and DMEM depends on the data you get from each. Open a graphics window and recheck the MMAP. Kill a shell and notice the Status and Signal Codes. Look up the Status bits in your old DEFS file, signal from Error codes. Watch how modules get mapped in using PMAP and MDIR.

Figure out system data use by knocking out the blocks you know are in other use, with PMAP and MMAP.

The source for this Level 2 utility is dmem.asm

MMap

MMap displays a memory block map, displaying free memory. There is at least one more block free than is shown, since MMap is using one block for data.

Key: U = used, M = loaded module, . = no RAM, else FREE.

Example output (1Mbyte MC09 system):

{Term|02}/DD:mmap

     0 1 2 3 4 5 6 7 8 9 A B C D E F
  #  = = = = = = = = = = = = = = = =
 00  U U U U M U U U _ _ _ M _ _ _ _ 
 01  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
 02  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
 03  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
  Block Size: 8192
 Free Blocks: 55
 KBytes Free: 440

The source for this Level 2 utility is mmap.asm

PMap

PMap - Process DAT Image Maps. The best. Shows blocks in use by processes. Lower is data, top is modules.

The example output (below) shows:

  • Block 09 is mapped into $6000-$7FFF in the system DAT map.
  • Shell in block 06 (see DIRM above!) is simply mapped into both procs 2 and 3 at $E000-$FEFF along with any other modules in that block.
  • PMap is in block 8, also at $E000-$FEFF.

 ID     01 23 45 67 89 AB CD EF   Program
----    -- -- -- -- -- -- -- --   ------------
  1     00 .. .. 09 01 02 03 3F   SYSTEM
  2     05 .. .. .. .. .. .. 06   Shell
  3     07 .. .. .. .. .. .. 06   Shell
  4     0A .. .. .. .. .. .. 08   PMap

The source for this Level 2 utility is pmam.asm

Proc

PROC - Like procs, but shows standard in/out devices.

Key: St = status byte, Sig = pending signal in hex and decimal

Example:

{Term|02}/DD:mdir >/d1/test4 & (setpr 2 255; proc >/d1/test5)
&003

{Term|02}/DD:list /d1/test5

 ID Prnt User Pty  Age  Tsk  Status  Signal   Module    I/O Paths 
___ ____ ____ ___  ___  ___  _______ __  __  _________ __________________
  1   0    0  255  255   00  sTimOut  0  00  System    <Term >Term >>Term 
  2   1    0  255  255   00  sTimOut  0  00  Shell     <Term >Term >>Term 
  3   2    0  255  255   03           0  00  MDir      <Term >D1   >>Term 
  4   2    0  255  255   00  s        0  00  Shell     <Term >Term >>Term 
  5   4    0  255  255   02  s        0  00  Proc      <Term >D1   >>Term 

The source for this Level 2 utility is here: proc.asm

SMap

SMAP - Show system page memory map. As above, except in pages. Important info adding drivers, starting many procs, etc.

# C .است se e r. : حسجمة ܚܒܝ ܚܒ O U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U 2
- - - - - - - - - - - - - - r - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 7 - - - - - - - - - - - - - - - - 8 U U U U U U U U U U U U U U 9 U U U U U U U U U U U U U U U U A U U U U U U U U U U U U U U U U B U U U U U U U U U U U U U U U U C U U U U U U U U U U U U U U U U D U U U U U U U U U U U U U U U U E U U U U U U U U U U U U U U U U F U U U U U U U U U U U U U U U
Number of Free Pages : 98
  Ram Free in KBytes: 24

Micro ware OS-9 Assembler RS Ver Sion 01 - 00.00 O3/30/87 OO 17 48 Page 001 SMap - INSIDE OS9 LEVEL II OOOO) al SMap 00002 tt] INSIDE OS9 LEVEL III 00003 * SMap - systen memory blockmap for cc3 OOOO4 * 08 feb 87 OOOO 5 * Copyright 1987 by Kevin Darling OOOO6 OOOO7 004E D. SysMiero equ SOO4E system men map 00008 OOOOC OOO6 FSExit equ 6 OOCO OOT B F $CpyMen, equ SE OOO. 008A I ŞWrite equ S8A OOO2 O08C I $Writln equ S8C O003 0 004 OOOO 87CDOD5 mod len, name, $ll, $8l, entry, msize OOO 5 OOOD 534D6FO BES fCS "SMap" OOO6 OO O1 fCb OOO.7 OOO 8, OOO bouff s ii z Set 256 OOO 9 OOO 20 D OOOO lead flag rnib l OOO 2 D OOO number r Imb 3. 00022 D 0004 free rībi OOO23 D OOOS OW rmb l 00024 D 0 OO6 Spc Ι. Πιο OOO25 D 0007 Out. r Imbo 3. OOO26 D OOOA maps. i2. rTbCy 2 OOO27 D OOOC blkS i 2. rimbo 2 OOO28 D OOOE bolkrum rimbo l OOO29 D OOOF bu ffe r rimbo bou ffs5 iz 0 0 0 3 0 D 0. CF Stack rimbo 20 O OOO 31 ID O'D7 Insize equ 琴 OOO32 00033 002 header 0.0034 002, 20202020 fcc O 1 2 3 4 5 6 7 8 9 A B C D E. F." OOC35 OG35 OD fcb SOD OOO36 0024 hdir en equ * - header OOO37 OO36 hdr 2 OOO38 0036 20232020 f CC * # = డా - - - - - R. - - - - జ: = = = " OOO 39 0 059 OD f Cb SOD OOO4 O 0 024 hdr en 2 equ *-hidr 2 OOO 4 OOO42 005A OOOOOOOO dat imig fd3bo 0 () OOO 43 OOO44 005E entry OOO 45 005E 17 O OF IlboS r C r tn OOO46 0 0 6 3 08D FFAD leax header pic OOO47 OO65 860 1da #] OOO 48 OO67 08E0O24. ldy hidr en OOO 49 O06E. O3F8C OS 9 I SWr itln OOO50 OO6E 308DFFC4 leax hidr 2, C O005. OO 72 08E0O24 lidy hidr en 2 Page 6-6-2 ________________ INSIDE OS9 LEVEL III SOURCES SMap 00052 007 6 1 03F8A OS 9 I ŞWrite 00053 0.0054 * Get SysMap Ptr : 00055 0079 308DFFDD leax dat img pC OOO 56 007D 1F10 tfr x , d 00057 007F 8E004 E dx #D. SysMem OOO58 O 082 1 08E0002 lidy #2 00059 O086 3440 pShs u 0 OO60 O088 334F leau buffer , u 0 006 O 08A 1 03F'1B OS 9 F ŞCpyMem 00062 008D 3540 pull S u OOO 63 0 08F 10:2500AC lbCS er r Or 00064 OOO65 * Get SysMap: 000 66 0.093 AE4F lidx buffer u get map address OOO67 0.095 08E000 ldy #bou ffS iz OOO68 OO 99 3440 pShS u 0.0069 009B 334F leau buffer , u OOO 70 009D 103Fl B OS 9 F $CpyMem OOO7 00A0 3540 pull S u 00072 00A2 1025.0099 lbCS er ror 000 73 000 74. 00A6 0F0E Cl r bolknum OOO75 OOA8 0F04 Clr free OOO76 * Std blk siz 00077 * sty mapsi z O0078 00AA 30 4F leax buffer ul 0 0079 0 0AC 8630 1da #$30 0 0080 OOAE 9705 Sta OW O008 OOBO 6FE2 Clr S Sa Ve COunt OOO 82 O OB2 loop 0 0083 00 B2 A6E4 lda S 000 84 00B4 85 OF bita # $ 0F OO 085 OOB6 2627 bne loop2 OO 086 0 0087 O OB8 340 pShS X O0088 OOBA 1700 B3 lbs r crtin OO 089 O OBD 3046 leax Spc u 000 90 O OBF 108E0 004 ldy #4 0 009. OOC3 96 05 lda Ι. Ο W. OOO 92 OOC5 83A cmpa f $3A 00093 OOC7 2604 bne oknum 000 94 OOC9 864 lda #$4] OO 095 OOCB 9705 Sta OW 0 0096 OOCD oknum 000 97 OOCD 97 07 Sta Out 00098 OOCF OCO 5 inc OW OOO 99 OOD1 CC 2020 lidd i S2020 0000 OOD 4 9.706 Sta SpC OOOl 00D6 DD08 std Out-l 0 002 OOD8 8601 Il da #1 0 003 OODA (O3F8A OS 9 I ŞW r. ite 0 004 OODD 350 pul. S X OOO 5 Page 6-6-3 ________________ OOO6 O007 OOO 8 OOO 9 OOO OOl 002 OO3 004 OO15 006 OO7 OO 8 OO 9 OO20 OO2 00I 22 0 023 () (24 OO 25 00l.26 Ο ΟΥ 27 OO28 OO29 0.030 OO3 O032 OO33 OOIL34 OO .35 OO3 6 OO37 OO38 OO 39 OO 40 004 OO 42 OOA 3 0044 OO 45 OO 46 O014.7 OOl. 48 OO 49 OOSO OOL 5. OO 52 OO153 OO 54 OOS5 OO 56 OO 57 OO158 OO 59 W OODF OODF OOE. 00E3 OOE5 OOE7 OOE9 OOE9 00EB OOED OOED OOEF O OF O OFI. OOF3 00F 5 OOF 7 OOF9 OOFE; O OFF O. O. OO 4 OO6 01.08 COC 01 0E O) () Ol2. O 6 OA OC OF O 2. 0.22 O 25, O27 012E. 0.2F O 3 O34 C36 0.37 O38 O39 O3C O3F O3E O3F O3F 042 OO.7 E68O 27 OA 2B 04 C655 2008 C62E 2004 C65F OC04 D7 (7 C62O D708 34 O 3047 O8EOOO2 860 O3F8A 35). O 6AE4 O 22FFA6 3502 8D60 8D5E 3O8DOO2C O8E0O.7 860 (3F 8A D604 4 Fo 17 (O6F 8D 49 3O8D0 02E O8EOO17 86 Ol O3F8A D604 AF 54 54 7 OO58 8D32 5F O3 FO6 20 4 E7 56D INSIDE OS9 LEVEI, II loop 2 not ram freer am Out bye e C. freemisg free en SOURCES SMap db x+ get next block beq fr e er am bmi rn Otra II ldb # U ram-in-uSe bra put Čb #甲。 nOt RAM bra put ldb #" not used inc free Stibo OԱ t 1db #$20 Stbo out-- psh S X leax Out u lldy #2 lda #卫 OS 9 I $W r i te puls x dec S lbh j. loop pul. S a bSr C rt r) bS r C r tr) leax freer(Sg, pc lidy # fr eel en lda #卫 OS 9 I ŞWir i te ldb free Cl r a l bo S r out de c: bS r C r tn leax ran TSg pc lidy #ran:len lda OS 9 ŞWir i te ldb free C r a lS rbo Il S r bo lbs r Outde C bS r C r tr C. robo OS 9 F SExit fcc " Number of Free Pages : " equi *-freemsg Page 6-6-4 ________________ 0060 006 0.062 O063 O064 0065 0.066 0.0167 OO68 OO69 OO 70 007. 00.72 OOL73 0.074 0.075 0.076 001 77 00178 0.0179 0080 008. 00182 0.083 O084 00185 0.0186 0087 0.088 O089 00:190 009 0092 0.093 O094 O095 0.096 O097 0.098 OO 99 00200 O020 002O2 00203 00204 00205 002O6 00207 00208 00209 002.0 002 00212 00213 20202052 3 412 860D 9707 3047 O8E000 860. O3F8C 3592 97.07 340 3047 O8E000 860. 103F8A 3590 304 0F00 6F84 6F01 6FO2 6C 84 83 (0.064 24F9 C30 064 6CO. 83 OOOA 24F9 C3000A 5C E702 8D08 8D06 A680 8B2F 20C4 ODOO 26F6 E684 OCOO 5A INSIDE OS9 LEVEL, II ramsg ramlen Crtin print Outde C hundred ten print num printled SOURCES SMap focc equ *-rammsg pShS ax lda ; SOD Sta Out leax out u ldy #卫 lda #1 OS 9 ŞWritin puls ax, pc Sta Out pshS x Il eax out , u ldy #] lda #1 OS 9 ISWrite puls x, pc equ 决赛 leax number , u cl r lead flag Clr X Cl r 1 : x C1r 2 х inc v X Subd #00 boCC hundred addd # 1 0 0 inc 1 : x Subd 10 bCC ten addd | 0 incb Stb 2, X bsr printled bsr printled lda Xh adda * S30-l bora print tSt leadflag bne print num ldb X inc lead flag decb Page 6-6-5 Ram Free in KBytes: " D=number make ascii print leading zero? . . yes is it zero? ________________ INSDE OS9 LEVEL, II SOURCES SMap 002 4 01 C8 26 EF bne print num . . no, print zero's 0 0215 OCA OFOO clr leadflag else SurpreSS 0026 OCC 8620 lda S2O 002.7 01CE 3001 leax l , x 0 028 ODO 20 B. bra print OO29 0 0 220 OLD2 F9F9F emod 0 0 22. OD5 len equ * 00222 end 0 0 0 0 0 error (s) 00003 warning (s) $OlD5 00469 program bytes generated $01D7 004.7l data bytes allocated $02D7 00727 bytes used for symbols 000E D BLKNUM 0 0 0C D BLYKSI 2 0 00F D RUFFER 0.00 S BUFFSZ 03E L BYE 0170. L., CRTN 004 E E D. SYSMIEM 005A L DATIMG 005E L ENTRY 03F L, ERROR O OB E ESCPYMEM O 006. E F SEXIT 0 004. D FREE 00:17 E FREFLEN 01:42 L FREEMSG 0 0 ED L FREERAM 0 036 L HDR2 0024 E HIDRILEN 0 024 E. HDRLEN2 002 L, HEADER 09E L. HUNDRED 008A E I SWRITE 008C E SWRITIN 0000 D LEADFLAG OD5 E LEN 00B2 L, LOOP 00DF L LOOP2 000A D MAPSIZ. 01.D7 E MSIZE OOOD L NAME OOE9 L, NOTRAM 000 D NUMBER 00CD L OKNUM O007 D OUT 0.94 E OUTDEC 0.83 L PRNT 01BF I, PRINTIED 01 B9 I, PRINTNUM 00F1 L PUT 00:17 E RAMLEN 059 L RAMMSG 0.005 D ROW OOO6 D SPC O OF D SACK 0A8 III, TEN