Mercurial > hg > Members > kono > os9 > sbc09
changeset 33:7c5379eb406e
nitors9 version
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 14 Jul 2018 15:22:54 +0900 |
parents | b494a9bab5f1 |
children | 2032755628dc |
files | CoCoOS9/defs/README CoCoOS9/defs/l51.defs CoCoOS9/defs/l52.defs CoCoOS9/defs/os9defs CoCoOS9/defs/os9defs.l2v3 CoCoOS9/defs/pipedefs CoCoOS9/defs/pipedefs.l2v3 CoCoOS9/defs/rbfdefs CoCoOS9/defs/scfdefs CoCoOS9/defs/systype.l1 CoCoOS9/defs/systype.l2 CoCoOS9/level2v3/CMDS/Makefile CoCoOS9/level2v3/CMDS/RunB CoCoOS9/level2v3/CMDS/askmontype.asm CoCoOS9/level2v3/CMDS/attr.asm CoCoOS9/level2v3/CMDS/binex.asm CoCoOS9/level2v3/CMDS/build.asm CoCoOS9/level2v3/CMDS/cobbler.asm CoCoOS9/level2v3/CMDS/copy.asm CoCoOS9/level2v3/CMDS/date.asm CoCoOS9/level2v3/CMDS/ddir.asm CoCoOS9/level2v3/CMDS/defsfile CoCoOS9/level2v3/CMDS/deiniz.asm CoCoOS9/level2v3/CMDS/del.asm CoCoOS9/level2v3/CMDS/deldir.asm CoCoOS9/level2v3/CMDS/dir.asm CoCoOS9/level2v3/CMDS/dirm.asm CoCoOS9/level2v3/CMDS/display.asm CoCoOS9/level2v3/CMDS/dmem.asm CoCoOS9/level2v3/CMDS/dump.asm CoCoOS9/level2v3/CMDS/echo.asm CoCoOS9/level2v3/CMDS/exbin.asm CoCoOS9/level2v3/CMDS/free.asm CoCoOS9/level2v3/CMDS/gfx.asm CoCoOS9/level2v3/CMDS/grfdrv.asm CoCoOS9/level2v3/CMDS/ident.asm CoCoOS9/level2v3/CMDS/idir.asm CoCoOS9/level2v3/CMDS/iniz.asm CoCoOS9/level2v3/CMDS/inkey.asm CoCoOS9/level2v3/CMDS/link.asm CoCoOS9/level2v3/CMDS/list.asm CoCoOS9/level2v3/CMDS/load.asm CoCoOS9/level2v3/CMDS/login.asm CoCoOS9/level2v3/CMDS/makdir.asm CoCoOS9/level2v3/CMDS/mdir.asm CoCoOS9/level2v3/CMDS/merge.asm CoCoOS9/level2v3/CMDS/mfree.asm CoCoOS9/level2v3/CMDS/mmap.asm CoCoOS9/level2v3/CMDS/montype.asm CoCoOS9/level2v3/CMDS/pmap.asm CoCoOS9/level2v3/CMDS/proc.asm CoCoOS9/level2v3/CMDS/procs.asm CoCoOS9/level2v3/CMDS/pwd.asm CoCoOS9/level2v3/CMDS/pxd.asm CoCoOS9/level2v3/CMDS/rename.asm CoCoOS9/level2v3/CMDS/save.asm CoCoOS9/level2v3/CMDS/setime.asm CoCoOS9/level2v3/CMDS/shell_21.asm CoCoOS9/level2v3/CMDS/sleep.asm CoCoOS9/level2v3/CMDS/swread.asm CoCoOS9/level2v3/CMDS/swset.asm CoCoOS9/level2v3/CMDS/tee.asm CoCoOS9/level2v3/CMDS/tmode.asm CoCoOS9/level2v3/CMDS/tsmon.asm CoCoOS9/level2v3/CMDS/unlink.asm CoCoOS9/level2v3/CMDS/verify.asm CoCoOS9/level2v3/CMDS/wcreate.asm CoCoOS9/level2v3/CMDS/xmode.asm CoCoOS9/level2v3/MODULES/ioman.asm CoCoOS9/level2v3/MODULES/os9p1.asm CoCoOS9/level2v3/MODULES/os9p2.asm CoCoOS9/level2v3/MODULES/os9p3_perr.asm CoCoOS9/level2v3/MODULES/os9p4_regdump.asm CoCoOS9/level2v3/MODULES/pipe.asm CoCoOS9/level2v3/MODULES/pipeman.asm CoCoOS9/level2v3/MODULES/pipeman_named.asm CoCoOS9/level2v3/MODULES/piper.asm CoCoOS9/level2v3/MODULES/rbf.asm CoCoOS9/level2v3/MODULES/scf.asm Makefile a09.c d09.c os9/Makefile os9/level1/IOMan os9/level1/Makefile os9/level1/OS9 os9/level1/OS9p2 os9/level1/README os9/level1/SCF os9/level1/Shell os9/level1/SysGo os9/level1/clock.asm os9/level1/d0 os9/level1/d0.asm os9/level1/d1.asm os9/level1/init.asm os9/level1/mdir os9/level1/os9defs os9/level1/pdisk.asm os9/level1/printer.asm os9/level1/pty-dd.asm os9/level1/pty.asm os9/level1/rbfdefs os9/level1/scfdefs os9/level2/Makefile os9/level2/defsfile os9/makerom.c trace.c v09.c |
diffstat | 109 files changed, 308 insertions(+), 33339 deletions(-) [+] |
line wrap: on
line diff
--- a/CoCoOS9/defs/README Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -This directory contains definitions files for various versions of OS-9 -Level One and Two. - -The convention used in renaming version dependent files has been to append -.l1 for Level 1, .l2 for Level 2 and .l2v3 for Level 2 Version 3. - -Boisy G. Pitre -9/25/98
--- a/CoCoOS9/defs/l51.defs Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ - -* miscellaneous definitions -HResMaxX equ 639 high resolution X limit -HResMaxY equ 191 high resolution Y limit -MousData equ $0008 arbitrary choice for mouse data area ($0008-$000F) -PcktSize equ 5 number of bytes in mouse data packet -SyncData equ %10000000 initial mouse data byte pattern -SyncMask equ %11111000 mask for initial mouse data byte pattern - -* 6551 register definitions - org 0 -DataReg rmb 1 receive/transmit data -StatReg rmb 1 IRQ/DSR/DCD/error status (read only) -PRstReg equ StatReg programmed reset (write only) -CmdReg rmb 1 command (parity/echo/Tx IRQ/Rx IRQ/DTR) -CtrlReg rmb 1 control (stop bits/word length/Rx clock/baud rate) - -* Status bit definitions -Stat.IRQ equ %10000000 IRQ occurred -Stat.DSR equ %01000000 current DSR input level (0=enabled, 1=disabled) -Stat.DCD equ %00100000 current DCD input level (0=enabled, 1=disabled) -Stat.TxE equ %00010000 Tx register empty -Stat.RxF equ %00001000 Rx register full -Stat.Ovn equ %00000100 overrun error -Stat.Frm equ %00000010 framing error -Stat.Par equ %00000001 parity error - -Stat.Err equ Stat.Ovn!Stat.Frm!Stat.Par status error bits -Stat.Flp equ $00 all status bits active when set -Stat.Msk equ Stat.RxF!Stat.Ovn!Stat.Frm!Stat.Par active IRQ bits - -* Command bit definitions -Cmd.Par equ %11100000 see parity table below -Cmd.Echo equ %00010000 Rx echo (0=disabled, 1=enabled) -Cmd.TxIC equ %00001100 see Tx IRQ control table below -Cmd.RxIE equ %00000010 Rx IRQ enable (0=enabled, 1=disabled) -Cmd.DTR equ %00000001 DTR output (0=disabled, 1=enabled) - -* parity table -Par.None equ %00000000 -Par.Odd equ %00100000 -Par.Even equ %01100000 -Par.Mark equ %10100000 -Par.Spac equ %11100000 - -* Tx IRQ control table -TIC.Off equ %00000000 RTS disabled, Tx IRQ disabled -TIC.On equ %00000100 RTS enabled, Tx IRQ enabled -TIC.RTS equ %00001000 RTS enabled, Tx IRQ disabled -TIC.Brk equ %00001100 RTS enabled, Tx line break - -* Control bit definitions -Ctl.Stop equ %10000000 stop bits (clear=1, set=2) -Ctl.DBit equ %01100000 see data bit table below -Ctl.RClk equ %00010000 Rx clock source (0=external, 1=internal) -Ctl.Baud equ %00001111 see baud rate table below - -* data bit table -DB.5 equ %01100000 five data bits per character -DB.6 equ %01000000 six data bits per character -DB.7 equ %00100000 seven data bits per character -DB.8 equ %00000000 eight data bits per character - -* baud rate table - org 0 -BR.ExClk rmb 1 16x external clock -BR.00050 rmb 1 50 baud -BR.00075 rmb 1 75 baud -BR.00110 rmb 1 109.92 baud -BR.00135 rmb 1 134.58 baud -BR.00150 rmb 1 150 baud -BR.00300 rmb 1 300 baud -BR.00600 rmb 1 600 baud -BR.01200 rmb 1 1200 baud -BR.01800 rmb 1 1800 baud -BR.02400 rmb 1 2400 baud -BR.03600 rmb 1 3600 baud -BR.04800 rmb 1 4800 baud -BR.07200 rmb 1 7200 baud -BR.09600 rmb 1 9600 baud -BR.19200 rmb 1 19200 baud - -* Btn.Cntr bit definitions -BC.Butn1 equ %00100000 button #1 (left, 1 = pressed) -BC.Butn2 equ %00010000 button #2 (middle, 1 = pressed) -BC.Butn3 equ %00001000 button #3 (right, 1 = pressed) -BC.RxCnt equ %00000111 Rx data counter - -BC.Butns equ BC.Butn1!BC.Butn2!BC.Butn3 mask for all buttons - - -* mouse static data area definitions - org 0 -Btn.Cntr rmb 1 mouse button status and Rx data counter -Buffer rmb 3 Rx buffer for 1st 3 bytes of XY mouse data (must start at 1,u) -CrntXPos rmb 2 mouse X position (0 to HResMaxX) -CrntYPos rmb 2 mouse Y position (0 to HResMaxY*2) -
--- a/CoCoOS9/defs/l52.defs Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ - -* miscellaneous definitions -HResMaxX equ 639 high resolution X limit -HResMaxY equ 191 high resolution Y limit -MousData equ $0008 arbitrary choice for mouse data area ($0008-$000F) -PcktSize equ 5 number of bytes in mouse data packet -SyncData equ %10000000 initial mouse data byte pattern -SyncMask equ %11111000 mask for initial mouse data byte pattern - -* 65C52 register definitions - org 0 -ISReg rmb 1 IRQ Status (read only) -IEReg equ ISReg IRQ Enable (write only) -CSReg rmb 1 Control Status (read only) -CFReg equ CSReg Control/Format (write only) -CDReg rmb 1 Compare Data (write only, unused in this driver) -TBReg equ CDReg Transmit Break (write only) -DataReg rmb 1 receive/transmit Data (read Rx / write Tx) - -* IRQ Status/Enable bit definitions -ISE.IRQ equ %10000000 IRQ occurred/enable -ISE.TxE equ %01000000 Tx data register Empty -ISE.CTS equ %00100000 CTS transition -ISE.DCD equ %00010000 DCD transition -ISE.DSR equ %00001000 DSR transition -ISE.FOB equ %00000100 receive data Framing or Overrun error, or Break -ISE.Par equ %00000010 Parity error in Rx data -ISE.RxF equ %00000001 Rx data register Full - -ISE.Errs equ ISE.FOB!ISE.Par IRQ Status error bits -ISE.Flip equ $00 all ISR bits active when set -ISE.Mask equ ISE.FOB!ISE.Par!ISE.RxF active IRQs - -* Control Status bit definitions -CS.Frame equ %10000000 framing error (set=error) -CS.TxE equ %01000000 Tx data empty (set=empty) -CS.CTS equ %00100000 CTS input (set=disabled) -CS.DCD equ %00010000 DCD input (set=disabled) -CS.DSR equ %00001000 DSR input (set=disabled) -CS.Break equ %00000100 Rx line break (set=received break) -CS.DTR equ %00000010 DTR output (set=disabled) -CS.RTS equ %00000001 RTS output (set=disabled) - -* Control bit definitions -C.TBRCDR equ %01000000 Tx Break/Compare Data register access (set=Tx Break) -C.StpBit equ %00100000 stop bits (set=two, clear=one) -C.Echo equ %00010000 local echo (set=activated) -C.Baud equ %00001111 see baud rate table below - -* baud rate table - org 0 -BR.00050 rmb 1 50 baud -BR.00110 rmb 1 109.2 baud -BR.00135 rmb 1 134.58 baud -BR.00150 rmb 1 150 baud -BR.00300 rmb 1 300 baud -BR.00600 rmb 1 600 baud -BR.01200 rmb 1 1200 baud -BR.01800 rmb 1 1800 baud -BR.02400 rmb 1 2400 baud -BR.03600 rmb 1 3600 baud -BR.04800 rmb 1 4800 baud -BR.07200 rmb 1 7200 baud -BR.09600 rmb 1 9600 baud -BR.19200 rmb 1 19200 baud -BR.38400 rmb 1 38400 baud -BR.ExClk rmb 1 external Rx and Tx clocks - -* Format bit definitions -F.Slct equ %10000000 register select (set=Format, clear=Control) -F.DatBit equ %01100000 see data bit table below -F.Par equ %00011100 see parity table below -F.DTR equ %00000010 DTR output (set=disabled) -F.RTS equ %00000001 RTS output (set=disabled) - -* data bit table -DB.5 equ %00000000 five data bits per character -DB.6 equ %00100000 six data bits per character -DB.7 equ %01000000 seven data bits per character -DB.8 equ %01100000 eight data bits per character - -* parity table -Par.None equ %00000000 -Par.Odd equ %00000100 -Par.Even equ %00001100 -Par.Mark equ %00010100 -Par.Spac equ %00011100 - -* Transmit Break bit definitions -TB.Brk equ %00000010 Tx break control (set=transmit continuous line Break) -TB.Par equ %00000001 parity check (set=parity bit to ISE.Par, clear=normal) - -* Btn.Cntr bit definitions -BC.Butn1 equ %00100000 button #1 (left, 1 = pressed) -BC.Butn2 equ %00010000 button #2 (middle, 1 = pressed) -BC.Butn3 equ %00001000 button #3 (right, 1 = pressed) -BC.RxCnt equ %00000111 Rx data counter - -BC.Butns equ BC.Butn1!BC.Butn2!BC.Butn3 mask for all buttons - - -* mouse static data area definitions - org 0 -Btn.Cntr rmb 1 mouse button status and Rx data counter -Buffer rmb 3 Rx buffer for 1st 3 bytes of XY mouse data (must start at 1,u) -CrntXPos rmb 2 mouse X position (0 to HResMaxX) -CrntYPos rmb 2 mouse Y position (0 to HResMaxY*2) -
--- a/CoCoOS9/defs/os9defs Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,901 +0,0 @@ - nam OS9Defs - ttl OS-9 Level 1 & 2 System Symbol Definitions - -***************** -* Edition History -* -* Date Changes Made by -* -------- ------------------------------------------------------------ --- -* 85/08/29 Fixed DT.SBF/NFM values to 3/4 Kmz -* 85/09/01 Added SS.FDInf, SS.Attr to accept 68K request thru NET Kmz -* 85/09/03 Eliminated E$BPrcID, made Error #238 -* become E$DNE for 68000 compatability Kmz/rfd -* 86/04/15 F$AlHRam System call added for COCO MGH -* 86/09/08 F$Alarm for COCO Clock Module MGH -* 86/09/17 SS.Tone For COCO MGH -* 86/09/23 Added F$NMLink and F$NMLoad for COCO MGH -* 86/09/30 added Reserved User $70 to $7f in sytem calls MGH -* 86/09/30 Created Color Computer 3 Version of OS9Defs MGH -* 98/10/03 Consoldated Level 1/Level 2 os9defs BGP - - pag -***************************************** -* System Service Request Code Definitions -* - org 0 -F$Link rmb 1 Link to Module -F$Load rmb 1 Load Module from File -F$UnLink rmb 1 Unlink Module -F$Fork rmb 1 Start New Process -F$Wait rmb 1 Wait for Child Process to Die -F$Chain rmb 1 Chain Process to New Module -F$Exit rmb 1 Terminate Process -F$Mem rmb 1 Set Memory Size -F$Send rmb 1 Send Signal to Process -F$Icpt rmb 1 Set Signal Intercept -F$Sleep rmb 1 Suspend Process -F$SSpd rmb 1 Suspend Process -F$ID rmb 1 Return Process ID -F$SPrior rmb 1 Set Process Priority -F$SSWI rmb 1 Set Software Interrupt -F$PErr rmb 1 Print Error -F$PrsNam rmb 1 Parse Pathlist Name -F$CmpNam rmb 1 Compare Two Names -F$SchBit rmb 1 Search Bit Map -F$AllBit rmb 1 Allocate in Bit Map -F$DelBit rmb 1 Deallocate in Bit Map -F$Time rmb 1 Get Current Time -F$STime rmb 1 Set Current Time -F$CRC rmb 1 Generate CRC -F$GPrDsc rmb 1 get Process Descriptor copy -F$GBlkMp rmb 1 get System Block Map copy -F$GModDr rmb 1 get Module Directory copy -F$CpyMem rmb 1 Copy External Memory -F$SUser rmb 1 Set User ID number -F$UnLoad rmb 1 Unlink Module by name - - ifeq Level-1 - - rmb 3 - - else - -* Level 2 system calls -F$Alarm rmb 1 Color Computer Alarm Call - rmb 2 reserved - For overlap of other systems -F$NMLink rmb 1 Color Computer NonMapping Link -F$NMLoad rmb 1 Color Computer NonMapping Load - - endc - - org $27 Beginning of System Reserved Calls -F$VIRQ rmb 1 Install/Delete Virtual IRQ -F$SRqMem rmb 1 System Memory Request -F$SRtMem rmb 1 System Memory Return -F$IRQ rmb 1 Enter IRQ Polling Table -F$IOQu rmb 1 Enter I/O Queue -F$AProc rmb 1 Enter Active Process Queue -F$NProc rmb 1 Start Next Process -F$VModul rmb 1 Validate Module -F$Find64 rmb 1 Find Process/Path Descriptor -F$All64 rmb 1 Allocate Process/Path Descriptor -F$Ret64 rmb 1 Return Process/Path Descriptor -F$SSvc rmb 1 Service Request Table Initialization -F$IODel rmb 1 Delete I/O Module -F$SLink rmb 1 System Link -F$Boot rmb 1 Bootstrap System -F$BtMem rmb 1 Bootstrap Memory Request -F$GProcP rmb 1 Get Process ptr -F$Move rmb 1 Move Data (low bound first) -F$AllRAM rmb 1 Allocate RAM blocks -F$AllImg rmb 1 Allocate Image RAM blocks -F$DelImg rmb 1 Deallocate Image RAM blocks -F$SetImg rmb 1 Set Process DAT Image -F$FreeLB rmb 1 Get Free Low Block -F$FreeHB rmb 1 Get Free High Block -F$AllTsk rmb 1 Allocate Process Task number -F$DelTsk rmb 1 Deallocate Process Task number -F$SetTsk rmb 1 Set Process Task DAT registers -F$ResTsk rmb 1 Reserve Task number -F$RelTsk rmb 1 Release Task number -F$DATLog rmb 1 Convert DAT Block/Offset to Logical -F$DATTmp rmb 1 Make temporary DAT image (Obsolete) -F$LDAXY rmb 1 Load A [X,[Y]] -F$LDAXYP rmb 1 Load A [X+,[Y]] -F$LDDDXY rmb 1 Load D [D+X,[Y]] -F$LDABX rmb 1 Load A from 0,X in task B -F$STABX rmb 1 Store A at 0,X in task B -F$AllPrc rmb 1 Allocate Process Descriptor -F$DelPrc rmb 1 Deallocate Process Descriptor -F$ELink rmb 1 Link using Module Directory Entry -F$FModul rmb 1 Find Module Directory Entry -F$MapBlk rmb 1 Map Specific Block -F$ClrBlk rmb 1 Clear Specific Block -F$DelRAM rmb 1 Deallocate RAM blocks -F$GCMDir rmb 1 Pack module directory -F$AlHRam rmb 1 Allocate HIGH RAM Blocks -* -* Numbers $70 through $7F are reserved for user definitions -* - org $70 - rmb 16 Reserved for user definition - - pag -************************************** -* I/O Service Request Code Definitions -* - org $80 -I$Attach rmb 1 Attach I/O Device -I$Detach rmb 1 Detach I/O Device -I$Dup rmb 1 Duplicate Path -I$Create rmb 1 Create New File -I$Open rmb 1 Open Existing File -I$MakDir rmb 1 Make Directory File -I$ChgDir rmb 1 Change Default Directory -I$Delete rmb 1 Delete File -I$Seek rmb 1 Change Current Position -I$Read rmb 1 Read Data -I$Write rmb 1 Write Data -I$ReadLn rmb 1 Read Line of ASCII Data -I$WritLn rmb 1 Write Line of ASCII Data -I$GetStt rmb 1 Get Path Status -I$SetStt rmb 1 Set Path Status -I$Close rmb 1 Close Path -I$DeletX rmb 1 Delete from current exec dir - -******************* -* File Access Modes -* -READ. equ %00000001 -WRITE. equ %00000010 -UPDAT. equ READ.+WRITE. -EXEC. equ %00000100 -PREAD. equ %00001000 -PWRIT. equ %00010000 -PEXEC. equ %00100000 -SHARE. equ %01000000 -DIR. equ %10000000 -ISIZ. equ %00100000 - -************** -* Signal Codes -* - org 0 -S$Kill rmb 1 Non-Interceptable Abort -S$Wake rmb 1 Wake-up Sleeping Process -S$Abort rmb 1 Keyboard Abort -S$Intrpt rmb 1 Keyboard Interrupt -S$Window rmb 1 Window Change - - pag -********************************** -* Status Codes for GetStat/PutStat -* - org 0 -SS.Opt rmb 1 Read/Write PD Options -SS.Ready rmb 1 Check for Device Ready -SS.Size rmb 1 Read/Write File Size -SS.Reset rmb 1 Device Restore -SS.WTrk rmb 1 Device Write Track -SS.Pos rmb 1 Get File Current Position -SS.EOF rmb 1 Test for End of File -SS.Link rmb 1 Link to Status routines -SS.ULink rmb 1 Unlink Status routines -SS.Feed rmb 1 issue form feed -SS.Frz rmb 1 Freeze DD. information -SS.SPT rmb 1 Set DD.TKS to given value -SS.SQD rmb 1 Sequence down hard disk -SS.DCmd rmb 1 Send direct command to disk -SS.DevNm rmb 1 Return Device name (32-bytes at [X]) -SS.FD rmb 1 Return File Descriptor (Y-bytes at [X]) -SS.Ticks rmb 1 Set Lockout honor duration -SS.Lock rmb 1 Lock/Release record -SS.DStat rmb 1 Return Display Status (CoCo) -SS.Joy rmb 1 Return Joystick Value (CoCo) -SS.BlkRd rmb 1 Block Read -SS.BlkWr rmb 1 Block Write -SS.Reten rmb 1 Retension cycle -SS.WFM rmb 1 Write File Mark -SS.RFM rmb 1 Read past File Mark -SS.ELog rmb 1 Read Error Log -SS.SSig rmb 1 Send signal on data ready -SS.Relea rmb 1 Release device -SS.AlfaS rmb 1 Return Alfa Display Status (CoCo, SCF/GetStat) -SS.Attr equ SS.AlfaS to serve 68K/RBF/SetStat only, thru NET -SS.Break rmb 1 Send break signal out acia -SS.RsBit rmb 1 Reserve bitmap sector (do not allocate in) LSB(X)=sct# - rmb 1 reserved -SS.FDInf equ $20 to serve 68K/RBF/GetStat only, thru NET - rmb 4 reserve $20-$23 for Japanese version (Hoshi) -SS.SetMF rmb 1 reserve $24 for Gimix G68 (Flex compatability?) -SS.Cursr rmb 1 Cursor information for COCO -SS.ScSiz rmb 1 Return screen size for COCO -SS.KySns rmb 1 Getstat/Putstat for COCO keyboard -SS.ComSt rmb 1 Getstat/Putstat for Baud/Parity -SS.Open rmb 1 Putstat to tell driver a path was opened -SS.Close rmb 1 Putstat to tell driver a path was closed -SS.HngUp rmb 1 Putstat to tell driver to hangup phone -* System Specific and User defined codes above $80 - org $80 -SS.AAGBf rmb 1 Putstat to Allocate Additional Graphic Buffer -SS.SLGBf rmb 1 Putstat to Select a different Graphic Buuffer -SS.Mount rmb 1 Network 4 Mount Setstat -SS.RdNet rmb 1 Read Raw Sector from Network 4 Omnidrive -SS.MpGPB rmb 1 Putstat to request a Get/Put Buffer be mapped in workspace -SS.Slots rmb 1 Network 4 slots? getstat - - ifgt Level-1 - -* Level 2 Windowing -SS.WnSet rmb 1 Set up High Level Windowing Information -SS.MnSel rmb 1 Request High level Menu Handler take determine next event -SS.SBar rmb 1 Putstat to set position block on Window scroll bars -SS.Mouse rmb 1 Return Mouse information packet (COCO) -SS.MsSig rmb 1 Putstat to tell driver to send signal on mouse event -SS.AScrn rmb 1 Allocate a screen for application poking -SS.DScrn rmb 1 Display a screen allocated by SS.AScrn -SS.FScrn rmb 1 Free a screen allocated by SS.AScrn -SS.PScrn rmb 1 Polymorph Screen into different screen type - rmb 2 Reserved -SS.Palet rmb 1 Return palette information -SS.Montr rmb 1 Get and Set Monitor Type -SS.ScTyp rmb 1 Get screen type information -SS.GIP rmb 1 Global Input Parameters (SetStat) -SS.UMBar rmb 1 update menu bar (SetStat) -SS.FBRgs rmb 1 return color registers (GetStat) -SS.DfPal rmb 1 set/return default palette registers (Getstat/Setstat) -SS.Tone rmb 1 Generate a tone using 6 bit sound - - endc - - ttl Direct Page Definitions - pag - -********************************** -* Direct Page Variable Definitions -* - org $20 - - ifeq Level-1 - -* Level 1 DP vars -D.FMBM rmb 4 Free memory bit map pointers -D.MLIM rmb 2 Memory limit $24 -D.ModDir rmb 4 Module directory $26 -D.Init rmb 2 Rom base address $2A -D.SWI3 rmb 2 Swi3 vector $2C -D.SWI2 rmb 2 Swi2 vector $2E -D.FIRQ rmb 2 Firq vector $30 -D.IRQ rmb 2 Irq vector $32 -D.SWI rmb 2 Swi vector $34 -D.NMI rmb 2 Nmi vector $36 -D.SvcIRQ rmb 2 Interrupt service entry $38 -D.Poll rmb 2 Interrupt polling routine $3A -D.UsrIRQ rmb 2 User irq routine $3C -D.SysIRQ rmb 2 System irq routine $3E -D.UsrSvc rmb 2 User service request routine $40 -D.SysSvc rmb 2 System service request routine $42 -D.UsrDis rmb 2 User service request dispatch table -D.SysDis rmb 2 System service reuest dispatch table -D.Slice rmb 1 Process time slice count $48 -D.PrcDBT rmb 2 Process descriptor block address $49 -D.Proc rmb 2 Process descriptor address $4B -D.AProcQ rmb 2 Active process queue $4D -D.WProcQ rmb 2 Waiting process queue $4F -D.SProcQ rmb 2 Sleeping process queue $51 -D.Time equ . Time -D.Year rmb 1 $53 -D.Month rmb 1 $54 -D.Day rmb 1 $55 -D.Hour rmb 1 $56 -D.Min rmb 1 $57 -D.Sec rmb 1 $58 -D.Tick rmb 1 $59 -D.TSec rmb 1 Ticks / second $5A -D.TSlice rmb 1 Ticks / time-slice $5B -D.IOML rmb 2 I/O mgr free memory low bound $5C -D.IOMH rmb 2 I/O mgr free memory hi bound $5E -D.DevTbl rmb 2 Device driver table addr $60 -D.PolTbl rmb 2 Irq polling table addr $62 -D.PthDBT rmb 2 Path descriptor block table addr $64 -D.BTLO rmb 2 Bootstrap low address $66 -D.BTHI rmb 2 Bootstrap hi address $68 -D.DMAReq rmb 1 DMA in use flag $6A -D.AltIRQ rmb 2 Alternate IRQ vector (CC) $6B -D.KbdSta rmb 2 Keyboard scanner static storage (CC) $6D -D.DskTmr rmb 2 Disk Motor Timer (CC) $6F -D.CBStrt rmb 16 reserved for CC warmstart ($71) -D.Clock rmb 2 Address of Clock Tick Routine (CC) $81 -D.Boot rmb 1 Bootstrap attempted flag -D.URtoSs rmb 2 address of user to system routine (VIRQ) $84 -D.CLTB rmb 2 Pointer to clock interrupt table (VIRQ) $86 - -* TABLE SIZES -BMAPSZ equ 32 BIT MAP SIZE -SVCTNM equ 2 NUMBER OF SERVICE REQUEST TABLES -SVCTSZ equ (256-BMAPSZ)/SVCTNM-2 SERVICE REQUEST TABLE SIZE - - else - -* Level 2 DP vars -D.Tasks rmb 2 Task User Table -D.TmpDAT rmb 2 Temporary DAT Image stack -D.Init rmb 2 Initialization Module ptr -D.Poll rmb 2 Interrupt Polling Routine ptr -D.Time equ . System Time -D.Year rmb 1 -D.Month rmb 1 -D.Day rmb 1 -D.Hour rmb 1 -D.Min rmb 1 -D.Sec rmb 1 -D.Tick rmb 1 -D.Slice rmb 1 current slice remaining -D.TSlice rmb 1 Ticks per Slice -D.Boot rmb 1 Bootstrap attempted flag -D.MotOn rmb 1 Floppy Disk Motor-On time out -D.ErrCod rmb 1 Reset Error Code -D.Daywk rmb 1 day of week, com-trol clock -D.TkCnt rmb 1 Tick Counter -D.BtPtr rmb 2 Address of Boot in System Address space -D.BtSz rmb 2 Size of Boot - org $40 -D.BlkMap rmb 4 Memory Block Map ptr -D.ModDir rmb 4 Module Directory ptrs -D.PrcDBT rmb 2 Process Descriptor Block Table ptr -D.SysPrc rmb 2 System Process Descriptor ptr -D.SysDAT rmb 2 System DAT Image ptr -D.SysMem rmb 2 System Memory Map ptr -D.Proc rmb 2 Current Process ptr -D.AProcQ rmb 2 Active Process Queue -D.WProcQ rmb 2 Waiting Process Queue -D.SProcQ rmb 2 Sleeping Process Queue -D.ModEnd rmb 2 Module Directory end ptr -D.ModDAT rmb 2 Module Dir DAT image end ptr -D.CldRes rmb 2 Cold Restart vector - org $6B -D.Crash rmb 6 Pointer to CC Crash Routine -D.CBStrt rmb $B Reserved for CC warmstart ($71) - org $80 -D.DevTbl rmb 2 I/O Device Table -D.PolTbl rmb 2 I/O Polling Table - rmb 4 reserved -D.PthDBT rmb 2 Path Descriptor Block Table ptr -D.DMAReq rmb 1 DMA Request flag - - endc - - ifgt Level-1 - -******** -* CoCo 3 STUFF COMES NEXT -* This area is used for the CoCo Hardware Registers -* - org $90 -D.HINIT rmb 1 GIME INIT0 register (hardware setup $FF90) -D.TINIT rmb 1 GIME INIT1 register (timer/task register $FF91) -D.IRQER rmb 1 Interrupt enable regsiter ($FF92) -D.FRQER rmb 1 Fast Interrupt enable register ($FF93) -D.TIMMS rmb 1 Timer most significant nibble ($FF94) -D.TIMLS rmb 1 Timer least significant byte ($FF95) -D.RESV1 rmb 1 reserved register ($FF96) -D.RESV2 rmb 1 reserved register ($FF97) -D.VIDMD rmb 1 video mode register ($FF98) -D.VIDRS rmb 1 video resolution register ($FF99) -D.BORDR rmb 1 border register ($FF9A) -D.RESV3 rmb 1 reserved register ($FF9B) -D.VOFF2 rmb 1 vertical scroll/offset 2 register ($FF9C) -D.VOFF1 rmb 1 vertical offset 1 register ($FF9D) -D.VOFF0 rmb 1 vertical offset 0 register ($FF9E) -D.HOFF0 rmb 1 horizontal offset 0 register ($FF9F) -D.Speed rmb 1 Speed of COCO CPU 0=slow,1=fast -D.TskIPt rmb 2 Task image Pointer table (CC) -D.MemSz rmb 1 128/512K memory flag (CC) -D.SSTskN rmb 1 System State Task Number (COCO) -D.CCMem rmb 2 Pointer to beginning of CC Memory -D.CCStk rmb 2 Pointer to top of CC Memory -D.Flip0 rmb 2 Change to Task 0 -D.Flip1 rmb 2 Change to reserved Task 1 -D.VIRQ rmb 2 VIRQ Polling routine -D.IRQS rmb 1 IRQ shadow register (CC Temporary) -D.CLTb rmb 2 VIRQ Table address -D.AltIRQ rmb 2 Alternate IRQ Vector (CC) -D.GPoll rmb 2 CC GIME IRQ enable/disable toggle -D.Clock2 rmb 2 CC Clock2 entry address - org $C0 -D.SysSvc rmb 2 System Service Routine entry -D.SysDis rmb 2 System Service Dispatch Table ptr -D.SysIRQ rmb 2 System IRQ Routine entry -D.UsrSvc rmb 2 User Service Routine entry -D.UsrDis rmb 2 User Service Dispatch Table ptr -D.UsrIRQ rmb 2 User IRQ Routine entry -D.SysStk rmb 2 System stack -D.SvcIRQ rmb 2 In-System IRQ service -D.SysTsk rmb 1 System Task number - org $E0 -D.Clock rmb 2 -D.XSWI3 rmb 2 -D.XSWI2 rmb 2 -D.XFIRQ rmb 2 -D.XIRQ rmb 2 -D.XSWI rmb 2 -D.XNMI rmb 2 -D.ErrRst rmb 2 - org $F2 -D.SWI3 rmb 2 -D.SWI2 rmb 2 -D.FIRQ rmb 2 -D.IRQ rmb 2 -D.SWI rmb 2 -D.NMI rmb 2 - -************************** -* Level II Block Map flags -* -NotRAM equ %10000000 Block Not RAM flag -ModBlock equ %00000010 Module in Block -RAMinUse equ %00000001 RAM Block in use flag -* -* Service Dispatch Table special entries -* -IOEntry equ 254 - - endc - - ttl Structure Formats - pag -************************************ -* Module Directory Entry Definitions -* - org 0 -MD$MPDAT rmb 2 Module DAT Image ptr -MD$MBSiz rmb 2 Memory Block size -MD$MPtr rmb 2 Module ptr -MD$Link rmb 2 Module Link count -MD$ESize equ . Module Directory Entry size - -******************** -* Module Definitions -* -* Universal Module Offsets -* - org 0 -M$ID rmb 2 ID Code -M$Size rmb 2 Module Size -M$Name rmb 2 Module Name -M$Type rmb 1 Type / Language -M$Revs rmb 1 Attributes / Revision Level -M$Parity rmb 1 Header Parity -M$IDSize equ . Module ID Size -* -* Type-Dependent Module Offsets -* -* System, File Manager, Device Driver, Program Module -* -M$Exec rmb 2 Execution Entry Offset -* -* Device Driver, Program Module -* -M$Mem rmb 2 Stack Requirement -* -* Device Driver, Device Descriptor Module -* -M$Mode rmb 1 Device Driver Mode Capabilities -* -* Device Descriptor Module -* - org M$IDSize -M$FMgr rmb 2 File Manager Name Offset -M$PDev rmb 2 Device Driver Name Offset - rmb 1 M$Mode (defined above) -M$Port rmb 3 Port Address -M$Opt rmb 1 Device Default Options -M$DTyp rmb 1 Device Type -IT.DTP equ M$DTyp Descriptor type offset -* -* Configuration Module Entry Offsets -* - org M$IDSize -MaxMem rmb 3 Maximum Free Memory -PollCnt rmb 1 Entries in Interrupt Polling Table -DevCnt rmb 1 Entries in Device Table -InitStr rmb 2 Initial Module Name -SysStr rmb 2 System Device Name -StdStr rmb 2 Standard I/O Pathlist -BootStr rmb 2 Bootstrap Module name -ProtFlag rmb 1 Write protect enable flag - - pag -************************** -* Module Field Definitions -* -* ID Field -* -M$ID1 equ $87 Module ID code byte one -M$ID2 equ $CD Module ID code byte two -M$ID12 equ M$ID1*256+M$ID2 -* -* Module Type / Language byte -* -* Field Masks -* -TypeMask equ %11110000 Type Field -LangMask equ %00001111 Language Field -* -* Type Values -* -Devic equ $F0 Device Descriptor Module -Drivr equ $E0 Physical Device Driver -FlMgr equ $D0 File Manager -Systm equ $C0 System Module -Data equ $40 Data Module -Multi equ $30 Multi-Module -Sbrtn equ $20 Subroutine Module -Prgrm equ $10 Program Module -* -* Language Values -* -Objct equ 1 6809 Object Code Module -ICode equ 2 Basic09 I-code -PCode equ 3 Pascal P-code -CCode equ 4 C I-code -CblCode equ 5 Cobol I-code -FrtnCode equ 6 Fortran I-code -* -* Module Attributes / Revision byte -* -* Field Masks -* -AttrMask equ %11110000 Attributes Field -RevsMask equ %00001111 Revision Level Field -* -* Attribute Flags -* -ReEnt equ %10000000 Re-Entrant Module -Modprot equ %01000000 Gimix Module protect bit (0=protected, 1=write enable) - -******************** -* Device Type Values -* -DT.SCF equ 0 Sequential Character File Type -DT.RBF equ 1 Random Block File Type -DT.Pipe equ 2 Pipe File Type - - ifeq Level-1 - -DT.NFM equ 3 - - else - -DT.SBF equ 3 -DT.NFM equ 4 Network File Manager - - endc - -********************* -* CRC Result Constant -* -CRCCon1 equ $80 -CRCCon23 equ $0FE3 - - ttl Process Information - pag -******************************** -* Process Descriptor Definitions -* - ifeq Level-1 - -* Level 1 process descriptor defs -DefIOSiz equ 12 -NumPaths equ 16 Number of Local Paths - - org 0 -P$ID rmb 1 Process ID -P$PID rmb 1 Parent's ID -P$SID rmb 1 Sibling's ID -P$CID rmb 1 Child's ID -P$SP rmb 2 Stack ptr -P$CHAP rmb 1 process chapter number -P$ADDR rmb 1 user address beginning page number -P$PagCnt rmb 1 Memory Page Count -P$User rmb 2 User Index $09 -P$Prior rmb 1 Priority $0B -P$Age rmb 1 Age $0C -P$State rmb 1 Status $0D -P$Queue rmb 2 Queue Link (Process ptr) $0E -P$IOQP rmb 1 Previous I/O Queue Link (Process ID) $10 -P$IOQN rmb 1 Next I/O Queue Link (Process ID) -P$PModul rmb 2 Primary Module -P$SWI rmb 2 SWI Entry Point -P$SWI2 rmb 2 SWI2 Entry Point -P$SWI3 rmb 2 SWI3 Entry Point $18 -P$DIO rmb DefIOSiz default I/O ptrs $1A -P$PATH rmb NumPaths I/O path table $26 -P$Signal rmb 1 Signal Code $36 -P$SigVec rmb 2 Signal Intercept Vector -P$SigDat rmb 2 Signal Intercept Data Address -P$NIO rmb 4 additional dio pointers for net - rmb $40-. unused -P$Size equ . Size of Process Descriptor - -* -* Process State Flags -* -SysState equ %10000000 -TimSleep equ %01000000 -TimOut equ %00100000 -ImgChg equ %00010000 -Condem equ %00000010 -Dead equ %00000001 - - else - -* Level 2 process descriptor defs -DefIOSiz equ 16 Default I/O Data Length -NefIOSiz equ 12 On-Net Default I/O Data Length -NumPaths equ 16 Number of Local Paths - - org 0 -P$ID rmb 1 Process ID -P$PID rmb 1 Parent's ID -P$SID rmb 1 Sibling's ID -P$CID rmb 1 Child's ID -P$SP rmb 2 Stack ptr -P$Task rmb 1 Task Number -P$PagCnt rmb 1 Memory Page Count -P$User rmb 2 User Index -P$Prior rmb 1 Priority -P$Age rmb 1 Age -P$State rmb 1 Status -P$Queue rmb 2 Queue Link (Process ptr) -P$IOQP rmb 1 Previous I/O Queue Link (Process ID) -P$IOQN rmb 1 Next I/O Queue Link (Process ID) -P$PModul rmb 2 Primary Module -P$SWI rmb 2 SWI Entry Point -P$SWI2 rmb 2 SWI2 Entry Point -P$SWI3 rmb 2 SWI3 Entry Point -P$Signal rmb 1 Signal Code -P$SigVec rmb 2 Signal Intercept Vector -P$SigDat rmb 2 Signal Intercept Data Address -P$DeadLk rmb 1 Dominant proc ID if I/O locked - rmb $20-. unused -P$DIO rmb DefIOSiz Default I/O ptrs -P$Path rmb NumPaths I/O Path Table -P$DATImg rmb 64 DAT Image -P$Links rmb 32 Block Link counts -P$NIO rmb 6*2 additional DIO ptrs for net, compatible with 68k -P$SelP rmb 1 Selected Path for COCO Windows (Default 0) - rmb $200-. Local stack -P$Stack equ . Top of Stack -P$Size equ . Size of Process Descriptor - -* -* Process State Flags -* -SysState equ %10000000 -TimSleep equ %01000000 -TimOut equ %00100000 -ImgChg equ %00010000 -Suspend equ %00001000 -Condem equ %00000010 -Dead equ %00000001 - - endc - - ttl OS-9 I/O Symbolic Definitions - pag -************************* -* Path Descriptor Offsets -* - org 0 -PD.PD rmb 1 Path Number -PD.MOD rmb 1 Mode (Read/Write/Update) -PD.CNT rmb 1 Number of Open Images -PD.DEV rmb 2 Device Table Entry Address -PD.CPR rmb 1 Current Process -PD.RGS rmb 2 Caller's Register Stack -PD.BUF rmb 2 Buffer Address -PD.FST rmb 32-. File Manager's Storage -PD.OPT equ . PD GetSts(0) Options -PD.DTP rmb 1 Device Type - rmb 64-. Path options -PDSIZE equ . - -* -* Pathlist Special Symbols -* -PDELIM equ '/ Pathlist Name Separator -PDIR equ '. Directory -PENTIR equ '@ Entire Device - page -**************************** -* File Manager Entry Offsets -* - org 0 -FMCREA rmb 3 Create (Open New) File -FMOPEN rmb 3 Open File -FMMDIR rmb 3 Make Directory -FMCDIR rmb 3 Change Directory -FMDLET rmb 3 Delete File -FMSEEK rmb 3 Position File -FMREAD rmb 3 Read from File -FMWRIT rmb 3 Write to File -FMRDLN rmb 3 ReadLn -FMWRLN rmb 3 WritLn -FMGSTA rmb 3 Get File Status -FMSSTA rmb 3 Set File Status -FMCLOS rmb 3 Close File - -***************************** -* Device Driver Entry Offsets -* - org 0 -D$INIT rmb 3 Device Initialization -D$READ rmb 3 Read from Device -D$WRIT rmb 3 Write to Device -D$GSTA rmb 3 Get Device Status -D$PSTA rmb 3 Put Device Status -D$TERM rmb 3 Device Termination - -********************* -* Device Table Format -* - org 0 -V$DRIV rmb 2 Device Driver module -V$STAT rmb 2 Device Driver Static storage -V$DESC rmb 2 Device Descriptor module -V$FMGR rmb 2 File Manager module -V$USRS rmb 1 use count -DEVSIZ equ . - -******************************* -* Device Static Storage Offsets -* - org 0 -V.PAGE rmb 1 Port Extended Address -V.PORT rmb 2 Device 'Base' Port Address -V.LPRC rmb 1 Last Active Process ID -V.BUSY rmb 1 Active Process ID (0=UnBusy) -V.WAKE rmb 1 Active PD if Driver MUST Wake-up -V.USER equ . Driver Allocation Origin - -******************************** -* Interrupt Polling Table Format -* - org 0 -Q$POLL rmb 2 Absolute Polling Address -Q$FLIP rmb 1 Flip (EOR) Byte ..normally Zero -Q$MASK rmb 1 Polling Mask (after Flip) -Q$SERV rmb 2 Absolute Service routine Address -Q$STAT rmb 2 Static Storage Address -Q$PRTY rmb 1 Priority (Low Numbers=Top Priority) -POLSIZ equ . - -******************** -* VIRQ packet format -* - org 0 -Vi.Cnt rmb 2 count down counter -Vi.Rst rmb 2 reset value for counter -Vi.Stat rmb 1 status byte - -Vi.IFlag equ %00000001 status byte virq flag - - page -************************************* -* Machine Characteristics Definitions -* -R$CC equ 0 Condition Codes register -R$A equ 1 A Accumulator -R$B equ 2 B Accumulator -R$D equ R$A Combined A:B Accumulator -R$DP equ 3 Direct Page register -R$X equ 4 X Index register -R$Y equ 6 Y Index register -R$U equ 8 User Stack register -R$PC equ 10 Program Counter register -R$Size equ 12 Total register package size - -Entire equ %10000000 Full Register Stack flag -FIRQMask equ %01000000 Fast-Interrupt Mask bit -HalfCrry equ %00100000 Half Carry flag -IRQMask equ %00010000 Interrupt Mask bit -Negative equ %00001000 Negative flag -Zero equ %00000100 Zero flag -TwosOvfl equ %00000010 Two's Comp Overflow flag -Carry equ %00000001 Carry bit -IntMasks equ IRQMask+FIRQMask -Sign equ %10000000 sign bit - -true equ 1 useful name -false equ 0 useful name - - ttl Error Code Definitions - pag -************************ -* Error Code Definitions -* -* -* System Dependent Error Codes -* - - ifgt Level-1 - -* Level 2 windowing error codes - org 186 -E$StkOvf rmb 1 Stack overflow -E$IllArg rmb 1 Illegal argument - rmb 1 reserved -E$ICoord rmb 1 Illegal coordinates -E$Bug rmb 1 Bug (should never be returned) -E$BufSiz rmb 1 Buffer size is too small -E$IllCmd rmb 1 Illegal command -E$TblFul rmb 1 Screen or window table is full -E$BadBuf rmb 1 Bad/Undefined buffer number -E$IWDef rmb 1 Illegal window definition -E$WUndef rmb 1 Window undefined - - endc - -* -* Standard OS-9 Error Codes -* - org 200 -E$PthFul rmb 1 Path Table full -E$BPNum rmb 1 Bad Path Number -E$Poll rmb 1 Polling Table Full -E$BMode rmb 1 Bad Mode -E$DevOvf rmb 1 Device Table Overflow -E$BMID rmb 1 Bad Module ID -E$DirFul rmb 1 Module Directory Full -E$MemFul rmb 1 Process Memory Full -E$UnkSvc rmb 1 Unknown Service Code -E$ModBsy rmb 1 Module Busy -E$BPAddr rmb 1 Bad Page Address -E$EOF rmb 1 End of File - rmb 1 -E$NES rmb 1 Non-Existing Segment -E$FNA rmb 1 File Not Accesible -E$BPNam rmb 1 Bad Path Name -E$PNNF rmb 1 Path Name Not Found -E$SLF rmb 1 Segment List Full -E$CEF rmb 1 Creating Existing File -E$IBA rmb 1 Illegal Block Address -E$HangUp rmb 1 Carrier Detect Lost -E$MNF rmb 1 Module Not Found - rmb 1 -E$DelSP rmb 1 Deleting Stack Pointer memory -E$IPrcID rmb 1 Illegal Process ID -E$BPrcID equ E$IPrcID Bad Process ID (formerly #238) - rmb 1 -E$NoChld rmb 1 No Children -E$ISWI rmb 1 Illegal SWI code -E$PrcAbt rmb 1 Process Aborted -E$PrcFul rmb 1 Process Table Full -E$IForkP rmb 1 Illegal Fork Parameter -E$KwnMod rmb 1 Known Module -E$BMCRC rmb 1 Bad Module CRC -E$USigP rmb 1 Unprocessed Signal Pending -E$NEMod rmb 1 Non Existing Module -E$BNam rmb 1 Bad Name -E$BMHP rmb 1 (bad module header parity) -E$NoRam rmb 1 No (System) Ram Available -E$DNE rmb 1 Directory not empty -E$NoTask rmb 1 No available Task number - rmb $F0-. reserved -E$Unit rmb 1 Illegal Unit (drive) -E$Sect rmb 1 Bad SECTor number -E$WP rmb 1 Write Protect -E$CRC rmb 1 Bad Check Sum -E$Read rmb 1 Read Error -E$Write rmb 1 Write Error -E$NotRdy rmb 1 Device Not Ready -E$Seek rmb 1 Seek Error -E$Full rmb 1 Media Full -E$BTyp rmb 1 Bad Type (incompatable) media -E$DevBsy rmb 1 Device Busy -E$DIDC rmb 1 Disk ID Change -E$Lock rmb 1 Record is busy (locked out) -E$Share rmb 1 Non-sharable file busy -E$DeadLk rmb 1 I/O Deadlock error -
--- a/CoCoOS9/defs/os9defs.l2v3 Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,868 +0,0 @@ - nam os9defs - ttl OS-9 Level 2 V3 System Symbol Definitions - -***************** -* Edition History -* -* Date Changes Made by -* -------- ------------------------------------------------------------ --- -* 85/08/29 Fixed DT.SBF/NFM values to 3/4 Kmz -* 85/09/01 Added SS.FDInf, SS.Attr to accept 68K request thru NET Kmz -* 85/09/03 Eliminated E$BPrcID, made Error #238 -* become E$DNE for 68000 compatability Kmz/rfd -* 86/04/15 F$AlHRam System call added for COCO MGH -* 86/09/08 F$Alarm for COCO Clock Module MGH -* 86/09/17 SS.Tone For COCO MGH -* 86/09/23 Added F$NMLink and F$NMLoad for COCO MGH -* 86/09/30 added Reserved User $70 to $7f in sytem calls MGH -* 86/09/30 Created Color Computer 3 Version of OS9Defs MGH -* 88/12/13 Added Module Table Offsets KKD/BRI -* 88/12/22 Added process accounting to process descriptor BRI -* 98/09/18 Expanded Init module to include more info BGP -* 98/10/10 Added L2V3 specific setstat/getstat codes BGP -* 98/10/15 Added definitions from Bruce Isted's Eliminator software BGP -* 98/10/26 Added Basic09 error definitions BGP - - page -***************************************** -* System Service Request Code Definitions -* - org 0 -F$Link rmb 1 Link to Module -F$Load rmb 1 Load Module from File -F$UnLink rmb 1 Unlink Module -F$Fork rmb 1 Start New Process -F$Wait rmb 1 Wait for Child Process to Die -F$Chain rmb 1 Chain Process to New Module -F$Exit rmb 1 Terminate Process -F$Mem rmb 1 Set Memory Size -F$Send rmb 1 Send Signal to Process -F$Icpt rmb 1 Set Signal Intercept -F$Sleep rmb 1 Suspend Process -F$SSpd rmb 1 Suspend Process -F$ID rmb 1 Return Process ID -F$SPrior rmb 1 Set Process Priority -F$SSWI rmb 1 Set Software Interrupt -F$PErr rmb 1 Print Error -F$PrsNam rmb 1 Parse Pathlist Name -F$CmpNam rmb 1 Compare Two Names -F$SchBit rmb 1 Search Bit Map -F$AllBit rmb 1 Allocate in Bit Map -F$DelBit rmb 1 Deallocate in Bit Map -F$Time rmb 1 Get Current Time -F$STime rmb 1 Set Current Time -F$CRC rmb 1 Generate CRC -F$GPrDsc rmb 1 get Process Descriptor copy -F$GBlkMp rmb 1 get System Block Map copy -F$GModDr rmb 1 get Module Directory copy -F$CpyMem rmb 1 Copy External Memory -F$SUser rmb 1 Set User ID number -F$UnLoad rmb 1 Unlink Module by name -F$Alarm rmb 1 Color Computer Alarm Call - rmb 2 reserved - For overlap of other systems -F$NMLink rmb 1 Color Computer NonMapping Link -F$NMLoad rmb 1 Color Computer NonMapping Load - org $25 -F$TPS rmb 1 Return System's Ticks Per Second -F$TimAlm rmb 1 - org $27 Beginning of System Reserved Calls -F$VIRQ rmb 1 Install/Delete Virtual IRQ -F$SRqMem rmb 1 System Memory Request -F$SRtMem rmb 1 System Memory Return -F$IRQ rmb 1 Enter IRQ Polling Table -F$IOQu rmb 1 Enter I/O Queue -F$AProc rmb 1 Enter Active Process Queue -F$NProc rmb 1 Start Next Process -F$VModul rmb 1 Validate Module -F$Find64 rmb 1 Find Process/Path Descriptor -F$All64 rmb 1 Allocate Process/Path Descriptor -F$Ret64 rmb 1 Return Process/Path Descriptor -F$SSvc rmb 1 Service Request Table Initialization -F$IODel rmb 1 Delete I/O Module -F$SLink rmb 1 System Link -F$Boot rmb 1 Bootstrap System -F$BtMem rmb 1 Bootstrap Memory Request -F$GProcP rmb 1 Get Process ptr -F$Move rmb 1 Move Data (low bound first) -F$AllRAM rmb 1 Allocate RAM blocks -F$AllImg rmb 1 Allocate Image RAM blocks -F$DelImg rmb 1 Deallocate Image RAM blocks -F$SetImg rmb 1 Set Process DAT Image -F$FreeLB rmb 1 Get Free Low Block -F$FreeHB rmb 1 Get Free High Block -F$AllTsk rmb 1 Allocate Process Task number -F$DelTsk rmb 1 Deallocate Process Task number -F$SetTsk rmb 1 Set Process Task DAT registers -F$ResTsk rmb 1 Reserve Task number -F$RelTsk rmb 1 Release Task number -F$DATLog rmb 1 Convert DAT Block/Offset to Logical -F$DATTmp rmb 1 Make temporary DAT image (Obsolete) -F$LDAXY rmb 1 Load A [X,[Y]] -F$LDAXYP rmb 1 Load A [X+,[Y]] -F$LDDDXY rmb 1 Load D [D+X,[Y]] -F$LDABX rmb 1 Load A from 0,X in task B -F$STABX rmb 1 Store A at 0,X in task B -F$AllPrc rmb 1 Allocate Process Descriptor -F$DelPrc rmb 1 Deallocate Process Descriptor -F$ELink rmb 1 Link using Module Directory Entry -F$FModul rmb 1 Find Module Directory Entry -F$MapBlk rmb 1 Map Specific Block -F$ClrBlk rmb 1 Clear Specific Block -F$DelRAM rmb 1 Deallocate RAM blocks -F$GCMDir rmb 1 Pack module directory -F$AlHRam rmb 1 Allocate HIGH RAM Blocks -* -* Numbers $70 through $7F are reserved for user definitions -* - org $70 -F$RegDmp rmb 1 -F$NVRAM rmb 1 - - rmb $80-. Reserved for user definition - - page -************************************** -* I/O Service Request Code Definitions -* - org $80 -I$Attach rmb 1 Attach I/O Device -I$Detach rmb 1 Detach I/O Device -I$Dup rmb 1 Duplicate Path -I$Create rmb 1 Create New File -I$Open rmb 1 Open Existing File -I$MakDir rmb 1 Make Directory File -I$ChgDir rmb 1 Change Default Directory -I$Delete rmb 1 Delete File -I$Seek rmb 1 Change Current Position -I$Read rmb 1 Read Data -I$Write rmb 1 Write Data -I$ReadLn rmb 1 Read Line of ASCII Data -I$WritLn rmb 1 Write Line of ASCII Data -I$GetStt rmb 1 Get Path Status -I$SetStt rmb 1 Set Path Status -I$Close rmb 1 Close Path -I$DeletX rmb 1 Delete from current exec dir - -******************* -* File Access Modes -* -READ. equ %00000001 -WRITE. equ %00000010 -UPDAT. equ READ.+WRITE. -EXEC. equ %00000100 -PREAD. equ %00001000 -PWRIT. equ %00010000 -PEXEC. equ %00100000 -SHARE. equ %01000000 -DIR. equ %10000000 -ISIZ. equ %00100000 - -************** -* Signal Codes -* - org 0 -S$Kill rmb 1 Non-Interceptable Abort -S$Wake rmb 1 Wake-up Sleeping Process -S$Abort rmb 1 Keyboard Abort -S$Intrpt rmb 1 Keyboard Interrupt -S$Window rmb 1 Window Change -S$Alarm rmb 1 - - page -********************************** -* Status Codes for GetStat/PutStat -* - org 0 -SS.Opt rmb 1 Read/Write PD Options -SS.Ready rmb 1 Check for Device Ready -SS.Size rmb 1 Read/Write File Size -SS.Reset rmb 1 Device Restore -SS.WTrk rmb 1 Device Write Track -SS.Pos rmb 1 Get File Current Position -SS.EOF rmb 1 Test for End of File -SS.Link rmb 1 Link to Status routines -SS.ULink rmb 1 Unlink Status routines -SS.Feed rmb 1 issue form feed -SS.Frz rmb 1 Freeze DD. information -SS.SPT rmb 1 Set DD.TKS to given value -SS.SQD rmb 1 Sequence down hard disk -SS.DCmd rmb 1 Send direct command to disk -SS.DevNm rmb 1 Return Device name (32-bytes at [X]) -SS.FD rmb 1 Return File Descriptor (Y-bytes at [X]) -SS.Ticks rmb 1 Set Lockout honor duration -SS.Lock rmb 1 Lock/Release record -SS.DStat rmb 1 Return Display Status (CoCo) -SS.Joy rmb 1 Return Joystick Value (CoCo) -SS.BlkRd rmb 1 Block Read -SS.BlkWr rmb 1 Block Write -SS.Reten rmb 1 Retension cycle -SS.WFM rmb 1 Write File Mark -SS.RFM rmb 1 Read past File Mark -SS.ELog rmb 1 Read Error Log -SS.SSig rmb 1 Send signal on data ready -SS.Relea rmb 1 Release device -SS.AlfaS rmb 1 Return Alfa Display Status (CoCo, SCF/GetStat) -SS.Attr equ SS.AlfaS to serve 68K/RBF/SetStat only, thru NET -SS.Break rmb 1 Send break signal out acia -SS.RsBit rmb 1 Reserve bitmap sector (do not allocate in) LSB(X)=sct# - rmb 1 reserved -SS.FDInf equ $20 to serve 68K/RBF/GetStat only, thru NET - rmb 4 reserve $20-$23 for Japanese version (Hoshi) -SS.SetMF rmb 1 reserve $24 for Gimix G68 (Flex compatability?) -SS.Cursr rmb 1 Cursor information for COCO -SS.ScSiz rmb 1 Return screen size for COCO -SS.KySns rmb 1 Getstat/Putstat for COCO keyboard -SS.ComSt rmb 1 Getstat/Putstat for Baud/Parity -SS.Open rmb 1 Putstat to tell driver a path was opened -SS.Close rmb 1 Putstat to tell driver a path was closed -SS.HngUp rmb 1 Putstat to tell driver to hangup phone -* System Specific and User defined codes above $80 - org $80 -SS.AAGBf rmb 1 Putstat to Allocate Additional Graphic Buffer -SS.SLGBf rmb 1 Putstat to Select a different Graphic Buuffer -SS.Mount rmb 1 Network 4 Mount Setstat -SS.RdNet rmb 1 Read Raw Sector from Network 4 Omnidrive -SS.MpGPB rmb 1 Putstat to request a Get/Put Buffer be mapped in workspace -SS.Slots rmb 1 Network 4 slots? getstat -SS.WnSet rmb 1 Set up High Level Windowing Information -SS.MnSel rmb 1 Request High level Menu Handler take determine next event -SS.SBar rmb 1 Putstat to set position block on Window scroll bars -SS.Mouse rmb 1 Return Mouse information packet (COCO) -SS.MsSig rmb 1 Putstat to tell driver to send signal on mouse event -SS.AScrn rmb 1 Allocate a screen for application poking -SS.DScrn rmb 1 Display a screen allocated by SS.AScrn -SS.FScrn rmb 1 Free a screen allocated by SS.AScrn -SS.PScrn rmb 1 Polymorph Screen into different screen type -SS.MScrn rmb 1 Map/unmap screen into process address space (L2V3) - rmb 1 Reserved -SS.Palet rmb 1 Return palette information -SS.Montr rmb 1 Get and Set Monitor Type -SS.ScTyp rmb 1 Get screen type information -SS.GIP rmb 1 Global Input Parameters (SetStat) -SS.UMBar rmb 1 update menu bar (SetStat) -SS.FBRgs rmb 1 return color registers (GetStat) -SS.DfPal rmb 1 set/return default palette registers (Getstat/Setstat) -SS.Tone rmb 1 Generate a tone using 6 bit sound - -SS.GIP2 rmb 1 Global Input Params #2 (L2V3) -SS.AnPal rmb 1 Animate palettes (L2V3) -SS.FndBf rmb 1 Find named buffer (L2V3) -SS.CDSta equ SS.GIP2 XACIA -SS.CDSig equ SS.AnPal XACIA -SS.CDRel equ SS.FndBf XACIA - - - - ttl Direct Page Definitions - page - -********************************** -* Direct Page Variable Definitions -* - org $00 -D.WDAddr rmb 2 -D.WDBtDr rmb 1 - org $20 -D.Tasks rmb 2 Task User Table -D.TmpDAT rmb 2 Temporary DAT Image stack -D.Init rmb 2 Initialization Module ptr -D.Poll rmb 2 Interrupt Polling Routine ptr -D.Time equ . System Time -D.Year rmb 1 -D.Month rmb 1 -D.Day rmb 1 -D.Hour rmb 1 -D.Min rmb 1 -D.Sec rmb 1 -D.Tick rmb 1 -D.Slice rmb 1 current slice remaining -D.TSlice rmb 1 Ticks per Slice -D.Boot rmb 1 Bootstrap attempted flag -D.MotOn rmb 1 Floppy Disk Motor-On time out -D.ErrCod rmb 1 Reset Error Code -D.Daywk rmb 1 day of week, com-trol clock -D.TkCnt rmb 1 Tick Counter -D.BtPtr rmb 2 Address of Boot in System Address space -D.BtSz rmb 2 Size of Boot - org $40 -D.BlkMap rmb 4 Memory Block Map ptr -D.ModDir rmb 4 Module Directory ptrs -D.PrcDBT rmb 2 Process Descriptor Block Table ptr -D.SysPrc rmb 2 System Process Descriptor ptr -D.SysDAT rmb 2 System DAT Image ptr -D.SysMem rmb 2 System Memory Map ptr -D.Proc rmb 2 Current Process ptr -D.AProcQ rmb 2 Active Process Queue -D.WProcQ rmb 2 Waiting Process Queue -D.SProcQ rmb 2 Sleeping Process Queue -D.ModEnd rmb 2 Module Directory end ptr -D.ModDAT rmb 2 Module Dir DAT image end ptr -D.CldRes rmb 2 Cold Restart vector - org $6B -D.Crash rmb 6 Pointer to CC Crash Routine -D.CBStrt rmb $B Reserved for CC warmstart ($71) - org $80 -D.DevTbl rmb 2 I/O Device Table -D.PolTbl rmb 2 I/O Polling Table - rmb 4 reserved -D.PthDBT rmb 2 Path Descriptor Block Table ptr -D.DMAReq rmb 1 DMA Request flag - -******** -* COCO STUFF COMES NEXT -* This area is used for the CoCo Hardware Registers -* - org $90 -D.HINIT rmb 1 GIME INIT0 register (hardware setup $FF90) -D.TINIT rmb 1 GIME INIT1 register (timer/task register $FF91) -D.IRQER rmb 1 Interrupt enable regsiter ($FF92) -D.FRQER rmb 1 Fast Interrupt enable register ($FF93) -D.TIMMS rmb 1 Timer most significant nibble ($FF94) -D.TIMLS rmb 1 Timer least significant byte ($FF95) -D.RESV1 rmb 1 reserved register ($FF96) -D.RESV2 rmb 1 reserved register ($FF97) -D.VIDMD rmb 1 video mode register ($FF98) -D.VIDRS rmb 1 video resolution register ($FF99) -D.BORDR rmb 1 border register ($FF9A) -D.RESV3 rmb 1 reserved register ($FF9B) -D.VOFF2 rmb 1 vertical scroll/offset 2 register ($FF9C) -D.VOFF1 rmb 1 vertical offset 1 register ($FF9D) -D.VOFF0 rmb 1 vertical offset 0 register ($FF9E) -D.HOFF0 rmb 1 horizontal offset 0 register ($FF9F) -D.Speed rmb 1 Speed of COCO CPU 0=slow,1=fast -D.TskIPt rmb 2 Task image Pointer table (CC) -D.MemSz rmb 1 128/512K memory flag (CC) -D.SSTskN rmb 1 System State Task Number (COCO) -D.CCMem rmb 2 Pointer to beginning of CC Memory -D.CCStk rmb 2 Pointer to top of CC Memory -D.Flip0 rmb 2 Change to Task 0 -D.Flip1 rmb 2 Change to reserved Task 1 -D.VIRQ rmb 2 VIRQ Polling routine -D.IRQS rmb 1 IRQ shadow register (CC Temporary) -D.CLTb rmb 2 VIRQ Table address -D.AltIRQ rmb 2 Alternate IRQ Vector (CC) -D.GPoll rmb 2 CC GIME IRQ enable/disable toggle -D.Clock2 rmb 2 CC Clock2 entry address - org $C0 -D.SysSvc rmb 2 System Service Routine entry -D.SysDis rmb 2 System Service Dispatch Table ptr -D.SysIRQ rmb 2 System IRQ Routine entry -D.UsrSvc rmb 2 User Service Routine entry -D.UsrDis rmb 2 User Service Dispatch Table ptr -D.UsrIRQ rmb 2 User IRQ Routine entry -D.SysStk rmb 2 System stack -D.SvcIRQ rmb 2 In-System IRQ service -D.SysTsk rmb 1 System Task number - org $E0 -D.Clock rmb 2 -D.XSWI3 rmb 2 -D.XSWI2 rmb 2 -D.XFIRQ rmb 2 -D.XIRQ rmb 2 -D.XSWI rmb 2 -D.XNMI rmb 2 -D.ErrRst rmb 2 - org $F2 -D.SWI3 rmb 2 -D.SWI2 rmb 2 -D.FIRQ rmb 2 -D.IRQ rmb 2 -D.SWI rmb 2 -D.NMI rmb 2 - -************************** -* Level II Block Map flags -* -NotRAM equ %10000000 Block Not RAM flag -ModBlock equ %00000010 Module in Block -RAMinUse equ %00000001 RAM Block in use flag -* -* Service Dispatch Table special entries -* -IOEntry equ 254 - - ttl Structure Formats - page -************************************ -* Module Directory Entry Definitions -* - org 0 -MD$MPDAT rmb 2 Module DAT Image ptr -MD$MBSiz rmb 2 Memory Block size -MD$MPtr rmb 2 Module ptr -MD$Link rmb 2 Module Link count -MD$ESize equ . Module Directory Entry size - -******************** -* Module Definitions -* -* Universal Module Offsets -* - org 0 -M$ID rmb 2 ID Code -M$Size rmb 2 Module Size -M$Name rmb 2 Module Name -M$Type rmb 1 Type / Language -M$Revs rmb 1 Attributes / Revision Level -M$Parity rmb 1 Header Parity -M$IDSize equ . Module ID Size -* -* Type-Dependent Module Offsets -* -* System, File Manager, Device Driver, Program Module -* -M$Exec rmb 2 Execution Entry Offset -* -* Device Driver, Program Module -* -M$Mem rmb 2 Stack Requirement -* -* Device Driver, Device Descriptor Module -* -M$Mode rmb 1 Device Driver Mode Capabilities -* -* Device Descriptor Module -* - org M$IDSize -M$FMgr rmb 2 File Manager Name Offset -M$PDev rmb 2 Device Driver Name Offset - rmb 1 M$Mode (defined above) -M$Port rmb 3 Port Address -M$Opt rmb 1 Device Default Options -M$DTyp rmb 1 Device Type -IT.DTP equ M$DTyp Descriptor type offset -* -* Configuration Module Entry Offsets -* - org M$IDSize -MaxMem rmb 3 Maximum Free Memory -PollCnt rmb 1 Entries in Interrupt Polling Table -DevCnt rmb 1 Entries in Device Table -InitStr rmb 2 Initial Module Name -SysStr rmb 2 System Device Name -StdStr rmb 2 Standard I/O Pathlist -BootStr rmb 2 Bootstrap Module name -ProtFlag rmb 1 Write protect enable flag -OSLevel rmb 1 OS level -OSVer rmb 1 OS version -OSMajor rmb 1 OS major -OSMinor rmb 1 OS minor -Compat1 rmb 1 compatibility byte - -* -- CC3IO area -- * -MonType rmb 1 Monitor type (0=CMP,1=RGB,2=MONO) -KeyRptS rmb 1 Key repeat start constant -KeyRptD rmb 1 Key repeat delay constant - -* Compatiblity byte definitions -CRCOn equ %00000001 CRC checking on if set, off if clear - - page -************************** -* Module Field Definitions -* -* ID Field -* -M$ID1 equ $87 Module ID code byte one -M$ID2 equ $CD Module ID code byte two -M$ID12 equ M$ID1*256+M$ID2 -* -* Module Type / Language byte -* -* Field Masks -* -TypeMask equ %11110000 Type Field -LangMask equ %00001111 Language Field -* -* Type Values -* -Devic equ $F0 Device Descriptor Module -Drivr equ $E0 Physical Device Driver -FlMgr equ $D0 File Manager -Systm equ $C0 System Module -Data equ $40 Data Module -Multi equ $30 Multi-Module -Sbrtn equ $20 Subroutine Module -Prgrm equ $10 Program Module -* -* Language Values -* -Objct equ 1 6809 Object Code Module -ICode equ 2 Basic09 I-code -PCode equ 3 Pascal P-code -CCode equ 4 C I-code -CblCode equ 5 Cobol I-code -FrtnCode equ 6 Fortran I-code -* -* Module Attributes / Revision byte -* -* Field Masks -* -AttrMask equ %11110000 Attributes Field -RevsMask equ %00001111 Revision Level Field -* -* Attribute Flags -* -ReEnt equ %10000000 Re-Entrant Module -Modprot equ %01000000 Gimix Module protect bit (0=protected, 1=write enable) - -******************** -* Device Type Values -* -DT.SCF equ 0 Sequential Character File Type -DT.RBF equ 1 Random Block File Type -DT.Pipe equ 2 Pipe File Type -DT.SBF equ 3 -DT.NFM equ 4 Network File Manager - -********************* -* CRC Result Constant -* -CRCCon1 equ $80 -CRCCon23 equ $0FE3 - - ttl Process Information - page -******************************** -* Process Descriptor Definitions -* -DefIOSiz equ 16 Default I/O Data Length -NefIOSiz equ 12 On-Net Default I/O Data Length -NumPaths equ 16 Number of Local Paths - - org 0 -P$ID rmb 1 Process ID -P$PID rmb 1 Parent's ID -P$SID rmb 1 Sibling's ID -P$CID rmb 1 Child's ID -P$SP rmb 2 Stack ptr -P$Task rmb 1 Task Number -P$PagCnt rmb 1 Memory Page Count -P$User rmb 2 User Index -P$Prior rmb 1 Priority -P$Age rmb 1 Age -P$State rmb 1 Status -P$Queue rmb 2 Queue Link (Process ptr) -P$IOQP rmb 1 Previous I/O Queue Link (Process ID) -P$IOQN rmb 1 Next I/O Queue Link (Process ID) -P$PModul rmb 2 Primary Module -P$SWI rmb 2 SWI Entry Point -P$SWI2 rmb 2 SWI2 Entry Point -P$SWI3 rmb 2 SWI3 Entry Point -P$Signal rmb 1 Signal Code -P$SigVec rmb 2 Signal Intercept Vector -P$SigDat rmb 2 Signal Intercept Data Address -P$DeadLk rmb 1 Dominant proc ID if I/O locked - rmb $20-. unused -P$DIO rmb DefIOSiz Default I/O ptrs -P$Path rmb NumPaths I/O Path Table -P$DATImg rmb 64 DAT Image -P$Links rmb 32 Block Link counts -P$NIO rmb 6*2 additional DIO ptrs for net, compatible with 68k -P$SelP rmb 1 Selected Path for COCO Windows (Default 0) -P$UTicks rmb 4 proc User Tick counter -P$STicks rmb 4 proc System Tick counter -P$FCalls rmb 4 proc F$ call counter -P$ICalls rmb 4 proc I$ call counter -P$DatBeg rmb 3 proc Date of creation (Y/M/D) -P$TimBeg rmb 3 proc Time of creation (H/M/S) -P$Alarm rmb 6 - rmb $200-. Local stack -P$Stack equ . Top of Stack -P$Size equ . Size of Process Descriptor - -* -* Process State Flags -* -SysState equ %10000000 -TimSleep equ %01000000 -TimOut equ %00100000 -ImgChg equ %00010000 -Suspend equ %00001000 -Condem equ %00000010 -Dead equ %00000001 - - ttl OS-9 I/O Symbolic Definitions - page -************************* -* Path Descriptor Offsets -* - org 0 -PD.PD rmb 1 Path Number -PD.MOD rmb 1 Mode (Read/Write/Update) -PD.CNT rmb 1 Number of Open Images -PD.DEV rmb 2 Device Table Entry Address -PD.CPR rmb 1 Current Process -PD.RGS rmb 2 Caller's Register Stack -PD.BUF rmb 2 Buffer Address -PD.FST rmb 32-. File Manager's Storage -PD.OPT equ . PD GetSts(0) Options -PD.DTP rmb 1 Device Type - rmb 64-. Path options -PDSIZE equ . - -* -* Pathlist Special Symbols -* -PDELIM equ '/ Pathlist Name Separator -PDIR equ '. Directory -PENTIR equ '@ Entire Device - page -**************************** -* File Manager Entry Offsets -* - org 0 -FMCREA rmb 3 Create (Open New) File -FMOPEN rmb 3 Open File -FMMDIR rmb 3 Make Directory -FMCDIR rmb 3 Change Directory -FMDLET rmb 3 Delete File -FMSEEK rmb 3 Position File -FMREAD rmb 3 Read from File -FMWRIT rmb 3 Write to File -FMRDLN rmb 3 ReadLn -FMWRLN rmb 3 WritLn -FMGSTA rmb 3 Get File Status -FMSSTA rmb 3 Set File Status -FMCLOS rmb 3 Close File - -***************************** -* Device Driver Entry Offsets -* - org 0 -D$INIT rmb 3 Device Initialization -D$READ rmb 3 Read from Device -D$WRIT rmb 3 Write to Device -D$GSTA rmb 3 Get Device Status -D$PSTA rmb 3 Put Device Status -D$TERM rmb 3 Device Termination - -********************* -* Device Table Format -* - org 0 -V$DRIV rmb 2 Device Driver module -V$STAT rmb 2 Device Driver Static storage -V$DESC rmb 2 Device Descriptor module -V$FMGR rmb 2 File Manager module -V$USRS rmb 1 use count -DEVSIZ equ . - -******************************* -* Device Static Storage Offsets -* - org 0 -V.PAGE rmb 1 Port Extended Address -V.PORT rmb 2 Device 'Base' Port Address -V.LPRC rmb 1 Last Active Process ID -V.BUSY rmb 1 Active Process ID (0=UnBusy) -V.WAKE rmb 1 Active PD if Driver MUST Wake-up -V.USER equ . Driver Allocation Origin - -******************************** -* Interrupt Polling Table Format -* - org 0 -Q$POLL rmb 2 Absolute Polling Address -Q$FLIP rmb 1 Flip (EOR) Byte ..normally Zero -Q$MASK rmb 1 Polling Mask (after Flip) -Q$SERV rmb 2 Absolute Service routine Address -Q$STAT rmb 2 Static Storage Address -Q$PRTY rmb 1 Priority (Low Numbers=Top Priority) -POLSIZ equ . - -******************** -* VIRQ packet format -* - org 0 -Vi.Cnt rmb 2 count down counter -Vi.Rst rmb 2 reset value for counter -Vi.Stat rmb 1 status byte - -Vi.IFlag equ %00000001 status byte virq flag - - page -************************************* -* Machine Characteristics Definitions -* -R$CC equ 0 Condition Codes register -R$A equ 1 A Accumulator -R$B equ 2 B Accumulator -R$D equ R$A Combined A:B Accumulator -R$DP equ 3 Direct Page register -R$X equ 4 X Index register -R$Y equ 6 Y Index register -R$U equ 8 User Stack register -R$PC equ 10 Program Counter register -R$Size equ 12 Total register package size - -Entire equ %10000000 Full Register Stack flag -FIRQMask equ %01000000 Fast-Interrupt Mask bit -HalfCrry equ %00100000 Half Carry flag -IRQMask equ %00010000 Interrupt Mask bit -Negative equ %00001000 Negative flag -Zero equ %00000100 Zero flag -TwosOvfl equ %00000010 Two's Comp Overflow flag -Carry equ %00000001 Carry bit -IntMasks equ IRQMask+FIRQMask -Sign equ %10000000 sign bit - -true equ 1 useful name -false equ 0 useful name - - ttl Error Code Definitions - pag -************************ -* Error Code Definitions -* -* -* Basic09 Error Codes -* - org 10 -E$UnkSym rmb 1 Unknown symbol -E$ExcVrb rmb 1 Excessive verbage -E$IllStC rmb 1 Illegal statement construction -E$ICOvf rmb 1 I-code overflow -E$IChRef rmb 1 Illegal channel reference -E$IllMod rmb 1 Illegal mode -E$IllNum rmb 1 Illegal number -E$IllPrf rmb 1 Illegal prefix -E$IllOpd rmb 1 Illegal operand -E$IllOpr rmb 1 Illegal operator -E$IllRFN rmb 1 Illegal record field name -E$IllDim rmb 1 Illegal dimension -E$IllLit rmb 1 Illegal literal -E$IllRet rmb 1 Illegal relational -E$IllSfx rmb 1 Illegal type suffix -E$DimLrg rmb 1 Dimension too large -E$LinLrg rmb 1 Line number too large -E$NoAssg rmb 1 Missing assignment statement -E$NoPath rmb 1 Missing path number -E$NoComa rmb 1 Missing coma -E$NoDim rmb 1 Missing dimension -E$NoDO rmb 1 Missing DO statement -E$MFull rmb 1 Memory full -E$NoGoto rmb 1 Missing GOTO -E$NoLPar rmb 1 Missing left parenthesis -E$NoLRef rmb 1 Missing line reference -E$NoOprd rmb 1 Missing operand -E$NoRPar rmb 1 Missing right parenthesis -E$NoTHEN rmb 1 Missing THEN statement -E$NoTO rmb 1 Missing TO statement -E$NoVRef rmb 1 Missing variable reference -E$EndQou rmb 1 Missing end quote -E$SubLrg rmb 1 Too many subscripts -E$UnkPrc rmb 1 Unknown procedure -E$MulPrc rmb 1 Multiply defined procedure -E$DivZer rmb 1 Divice by zero -E$TypMis rmb 1 Operand type mismatch -E$StrOvf rmb 1 String stack overflow -E$NoRout rmb 1 Unimplemented routine -E$UndVar rmb 1 Undefined variable -E$FltOvf rmb 1 Floating Overflow -E$LnComp rmb 1 Line with compiler error -E$ValRng rmb 1 Value out of range for destination -E$SubOvf rmb 1 Subroutine stack overflow -E$SubUnd rmb 1 Subroutine stack underflow -E$SubRng rmb 1 Subscript out of range -E$ParmEr rmb 1 Paraemter error -E$SysOvf rmb 1 System stack overflow -E$IOMism rmb 1 I/O type mismatch -E$IONum rmb 1 I/O numeric input format bad -E$IOConv rmb 1 I/O conversion: number out of range -E$IllInp rmb 1 Illegal input format -E$IOFRpt rmb 1 I/O format repeat error -E$IOFSyn rmb 1 I/O format syntax error -E$IllPNm rmb 1 Illegal path number -E$WrSub rmb 1 Wrong number of subscripts -E$NonRcO rmb 1 Non-record type operand -E$IllA rmb 1 Illegal argument -E$IllCnt rmb 1 Illegal control structure -E$UnmCnt rmb 1 Unmatched control structure -E$IllFOR rmb 1 Illegal FOR variable -E$IllExp rmb 1 Illegal expression type -E$IllDec rmb 1 Illegal declarative statement -E$ArrOvf rmb 1 Array size overflow -E$UndLin rmb 1 Undefined line number -E$MltLin rmb 1 Multiply defined line number -E$MltVar rmb 1 Multiply defined variable -E$IllIVr rmb 1 Illegal input variable -E$SeekRg rmb 1 Seek out of range -E$NoData rmb 1 Missing data statement -* -* System Dependent Error Codes -* - org 186 -E$StkOvf rmb 1 Stack overflow -E$IllArg rmb 1 Illegal argument - rmb 1 reserved -E$ICoord rmb 1 Illegal coordinates -E$Bug rmb 1 Bug (should never be returned) -E$BufSiz rmb 1 Buffer size is too small -E$IllCmd rmb 1 Illegal command -E$TblFul rmb 1 Screen or window table is full -E$BadBuf rmb 1 Bad/Undefined buffer number -E$IWDef rmb 1 Illegal window definition -E$WUndef rmb 1 Window undefined -* -* Standard OS-9 Error Codes -* - org 200 -E$PthFul rmb 1 Path Table full -E$BPNum rmb 1 Bad Path Number -E$Poll rmb 1 Polling Table Full -E$BMode rmb 1 Bad Mode -E$DevOvf rmb 1 Device Table Overflow -E$BMID rmb 1 Bad Module ID -E$DirFul rmb 1 Module Directory Full -E$MemFul rmb 1 Process Memory Full -E$UnkSvc rmb 1 Unknown Service Code -E$ModBsy rmb 1 Module Busy -E$BPAddr rmb 1 Bad Page Address -E$EOF rmb 1 End of File - rmb 1 -E$NES rmb 1 Non-Existing Segment -E$FNA rmb 1 File Not Accesible -E$BPNam rmb 1 Bad Path Name -E$PNNF rmb 1 Path Name Not Found -E$SLF rmb 1 Segment List Full -E$CEF rmb 1 Creating Existing File -E$IBA rmb 1 Illegal Block Address -E$HangUp rmb 1 Carrier Detect Lost -E$MNF rmb 1 Module Not Found - rmb 1 -E$DelSP rmb 1 Deleting Stack Pointer memory -E$IPrcID rmb 1 Illegal Process ID -E$BPrcID equ E$IPrcID Bad Process ID (formerly #238) - rmb 1 -E$NoChld rmb 1 No Children -E$ISWI rmb 1 Illegal SWI code -E$PrcAbt rmb 1 Process Aborted -E$PrcFul rmb 1 Process Table Full -E$IForkP rmb 1 Illegal Fork Parameter -E$KwnMod rmb 1 Known Module -E$BMCRC rmb 1 Bad Module CRC -E$USigP rmb 1 Unprocessed Signal Pending -E$NEMod rmb 1 Non Existing Module -E$BNam rmb 1 Bad Name -E$BMHP rmb 1 (bad module header parity) -E$NoRam rmb 1 No (System) Ram Available -E$DNE rmb 1 Directory not empty -E$NoTask rmb 1 No available Task number - rmb $F0-. reserved -E$Unit rmb 1 Illegal Unit (drive) -E$Sect rmb 1 Bad SECTor number -E$WP rmb 1 Write Protect -E$CRC rmb 1 Bad Check Sum -E$Read rmb 1 Read Error -E$Write rmb 1 Write Error -E$NotRdy rmb 1 Device Not Ready -E$Seek rmb 1 Seek Error -E$Full rmb 1 Media Full -E$BTyp rmb 1 Bad Type (incompatable) media -E$DevBsy rmb 1 Device Busy -E$DIDC rmb 1 Disk ID Change -E$Lock rmb 1 Record is busy (locked out) -E$Share rmb 1 Non-sharable file busy -E$DeadLk rmb 1 I/O Deadlock error -
--- a/CoCoOS9/defs/pipedefs Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ - nam PipeDefs - ttl OS-9 Pipe Definitions - -* OS-9 Pipe Definitions -* -* IOMan equates duplicated for PipeMan use -* - -NPATHS set 16 ;Maximum local paths per task -- must match IOMan -NameMax set 29 ;Maximum length of a file name - -* -* Device Driver Static Storage Layout -* - org V.User -V.List rmb 2 ;Pointer to 1st pipe's pipe buffer -PManMem equ . ;Device driver memory (drive table equivalent) - -* -* Pipe Buffer Data Structure -* - org 0 -PP.PD rmb 2 ;Pointer to shared path descriptor -PP.Next rmb 2 ;Pointer to next pipe buffer in system map -PP.Prev rmb 2 ;Pointer to previous pipe buffer in system map -PP.Rsrv rmb 2 ;Reserved -PP.Data equ . ;Data buffer begins at this offset - -* -* Unique Path Descriptor Variables -* - org PD.FST -*** PP.Read must have bit 4 clear; PP.Writ must be PP.Read XOR 4 -PD.Read equ . -PD.RPID rmb 1 ;Process ID of reader waiting on signal -PD.RCT rmb 1 ;Number of blocked readers -PD.RSIG rmb 1 ;Signal to send reader -PD.REOR rmb 1 ;Read EOR character -PD.Writ equ . -PD.WPID rmb 1 ;Process ID of writer waiting on signal -PD.WCT rmb 1 ;Number of blocked writers -PD.WSIG rmb 1 ;Signal to send writer -PD.WEOR rmb 1 ;Write EOR character (dummy) -*** End of special section -PD.End rmb 2 ;Pointer to end of pipe buffer -PD.NxtI rmb 2 ;Next in pointer -PD.NxtO rmb 2 ;Next out pointer -PD.RFlg rmb 1 ;"Ready" flag -PD.Wrtn rmb 1 ;"Written" flag -PD.BCnt rmb 2 ;# queue elements currently bufered -PD.Own rmb 1 ;Process ID of pipe original creator -PD.Keep rmb 1 ;Non-zero if pipe has been kept open artificailly -PD.QSiz rmb 2 ;Max. elements in queue (copied from OPT section) - -* -* Path descriptor option section -* -* Note that PD.Name overlaps with the last byte of PD.ECnt. -* PD.ECnt is copied to PD.QSiz as part of OPEN or CREATE, -* to make room for the pipe name. -* - org (PD.OPT+1) -PD.ESiz rmb 1 ;Size of each queue element -PD.ECnt rmb 2 ;Max. elements in queue (initial position) - -* -* Device Descriptor definitions -* -IT.PDC equ $12 ;Pipe device class (like IT.DTP, IT.DVC) - org IT.PDC - rmb 1 ;Leave room for device class -IT.ESiz rmb 1 ;Size of each queue element -IT.ECnt rmb 2 ;Max. elements in queue (initial position) - -* End of pipedefs -
--- a/CoCoOS9/defs/pipedefs.l2v3 Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ - opt -l - ttl OS9 Level 2 Pipe Definitions - -* -* Copyright 1988 by Microware Systems Corporation -* All Rights Reserved -* -* Named pipe equates by Burke & Burke. -* All rights assigned to Microware Systems Corporation. -* -* This file contains proprietary information of Microware Systems -* Corporation. Persons accessing this file will be held strictly -* accountable for their use of the information herein. -* - -* -* OS9 Level 2 Pipe Definitions -* -* Modification History -* -------------------- -* -* Date Who Description -* -------- --- ----------------------------------------- -* 12/03/88 cjb Coded from new PIPEMAN comments -* - -* -* IOMan equates duplicated for PipeMan use -* - -NPATHS set 16 ;Maximum local paths per task -- must match IOMan -NameMax set 29 ;Maximum length of a file name - -* -* Device Driver Static Storage Layout -* - org V.User -V.List rmb 2 ;Pointer to 1st pipe's pipe buffer -PManMem equ . ;Device driver memory (drive table equivalent) - -* -* Pipe Buffer Data Structure -* - org 0 -PP.PD rmb 2 ;Pointer to shared path descriptor -PP.Next rmb 2 ;Pointer to next pipe buffer in system map -PP.Prev rmb 2 ;Pointer to previous pipe buffer in system map -PP.Rsrv rmb 2 ;Reserved -PP.Data equ . ;Data buffer begins at this offset - -* -* Unique Path Descriptor Variables -* - org PD.FST -*** PP.Read must have bit 4 clear; PP.Writ must be PP.Read XOR 4 -PD.Read equ . -PD.RPID rmb 1 ;Process ID of reader waiting on signal -PD.RCT rmb 1 ;Number of blocked readers -PD.RSIG rmb 1 ;Signal to send reader -PD.REOR rmb 1 ;Read EOR character -PD.Writ equ . -PD.WPID rmb 1 ;Process ID of writer waiting on signal -PD.WCT rmb 1 ;Number of blocked writers -PD.WSIG rmb 1 ;Signal to send writer -PD.WEOR rmb 1 ;Write EOR character (dummy) -*** End of special section -PD.End rmb 2 ;Pointer to end of pipe buffer -PD.NxtI rmb 2 ;Next in pointer -PD.NxtO rmb 2 ;Next out pointer -PD.RFlg rmb 1 ;"Ready" flag -PD.Wrtn rmb 1 ;"Written" flag -PD.BCnt rmb 2 ;# queue elements currently bufered -PD.Own rmb 1 ;Process ID of pipe original creator -PD.Keep rmb 1 ;Non-zero if pipe has been kept open artificailly -PD.QSiz rmb 2 ;Max. elements in queue (copied from OPT section) - -* -* Path descriptor option section -* -* Note that PD.Name overlaps with the last byte of PD.ECnt. -* PD.ECnt is copied to PD.QSiz as part of OPEN or CREATE, -* to make room for the pipe name. -* - org (PD.OPT+1) -PD.ESiz rmb 1 ;Size of each queue element -PD.ECnt rmb 2 ;Max. elements in queue (initial position) - org (PD.OPT+3) -PD.Name rmb NameMax ;Name buffer for named pipe. - -* -* Device Descriptor definitions -* -IT.PDC equ $12 ;Pipe device class (like IT.DTP, IT.DVC) - org IT.PDC - rmb 1 ;Leave room for device class -IT.ESiz rmb 1 ;Size of each queue element -IT.ECnt rmb 2 ;Max. elements in queue (initial position) - -* End of pipedefs - - opt l -
--- a/CoCoOS9/defs/rbfdefs Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,225 +0,0 @@ - nam RBFDefs - ttl Random Block File Manager Definitions - -********************** -* Modification History -* -* Date Changes Made by -* -------- ------------------------------------------------------------ --- -* 82/07/13 PD.Exten added to path descriptor rfd -* 82/07/13 PE entries defined rfd -* 82/07/15 V.FileHd inserted in drive static rfd -* 82/09/10 Level One/ Level two cond added WGP -* 82/09/17 Record Lock cond added WGP -* 82/09/17 PD.SLE renamed to PD.Creat rfd -* 82/09/17 V.DiskID, V.BMapSz, V.MapSct added for -* smart multi-sector bitmap searching rfd -* 82/09/20 reserved areas added in static storage. -* 83/06/07 Added InDriver flag in PD.SMF. rfd -* 83/06/13 Added PE.Req tmp save for PE.Lock rfd -* 83/08/08 reserved PD.SToff for Japanese rfd -* 83/11/19 Added V.ResBit in drive tables. rfd -* 83/12/12 Added PE.Prior to save process priority. rfd -* 83/12/13 Added BufBusy bit in state flag (PD.SMF) rfd -* 84/07/06 Added Bit Definitions for DD.FMT MGH -* 87/06/23 Updated with Dev Desc Info KKD - -******************************* -* RBF Device Descriptor Offsets -* - org M$DTyp - rmb 1 Device type (IT.DTP) (1=RBF) -IT.DRV rmb 1 Drive number -IT.STP rmb 1 Step rate -IT.TYP rmb 1 Disk device type (5" 8" other) -IT.DNS rmb 1 Density capability -IT.CYL rmb 2 Number of cylinders -IT.SID rmb 1 Number of surfaces -IT.VFY rmb 1 0=verify disk writes -IT.SCT rmb 2 Default sectors/track -IT.T0S rmb 2 Default sectors/track tr00,s0 -IT.ILV rmb 1 Sector interleave offset -IT.SAS rmb 1 Segment allocation size - -************************************* -* IT.TYP/IT.DNS/IT.STP definitions -* -TYP.5 equ %00000000 5" media -TYP.8 equ %00000001 8" media -TYP.CCF equ %00100000 CoCo format -TYP.NCCF equ %00000000 Non-CoCo format -TYP.SOF equ %00000000 Standard OS-9 format -TYP.NSF equ %01000000 Non-standard format -TYP.FLP equ %00000000 Floppy disk -TYP.HARD equ %10000000 Hard disk - -DNS.FM equ %00000000 Single-density (FM) -DNS.MFM equ %00000001 Double-density (MFM) -DNS.STD equ %00000000 Single track density (48 tpi) -DNS.DTD equ %00000010 Single track density (96 tpi) - -STP.30ms equ 0 30ms step rate -STP.20ms equ 1 20ms step rate -STP.12ms equ 2 12ms step rate -STP.6ms equ 3 6ms step rate - -************************************* -* Random Block Path Descriptor Format -* - org PD.FST -PD.SMF rmb 1 State flags -PD.CP rmb 4 Current logical byte position -PD.SIZ rmb 4 File size -PD.SBL rmb 3 Segment beginning lsn -PD.SBP rmb 3 Segment beginning psn -PD.SSZ rmb 3 Segment size -PD.DSK rmb 2 Disk id -PD.DTB rmb 2 Drive table ptr - org PD.OPT - rmb 1 Device type -PD.DRV rmb 1 Drive number -PD.STP rmb 1 Step rate -PD.TYP rmb 1 Disk device type (5" 8" other) -PD.DNS rmb 1 Density capability -PD.CYL rmb 2 Number of cylinders -PD.SID rmb 1 Number of surfaces -PD.VFY rmb 1 0=verify disk writes -PD.SCT rmb 2 Default sectors/track -PD.T0S rmb 2 Default sectors/track tr00,s0 -PD.ILV rmb 1 Sector interleave offset -PD.SAS rmb 1 Segment allocation size -PD.TFM rmb 1 DMA Transfer Mode -PD.Exten rmb 2 Path Extension (PE) for record locking -PD.SToff rmb 1 Sector/Track offsets (for "foreign" disk formats) -PD.ATT rmb 1 File attributes -PD.FD rmb 3 File descriptor psn -PD.DFD rmb 3 Directory file descriptor psn -PD.DCP rmb 4 File directory entry ptr -PD.DVT rmb 2 User readable dev tbl ptr - -* State Flags -BUFMOD equ $01 Buffer modified -SINBUF equ $02 Sector in buffer -FDBUF equ $04 File descriptor in buffer -*EOFSEC equ $08 End of file sector -*EOF equ $10 End of file -InDriver equ $20 Currently in Disk Driver, or queued -BufBusy equ $40 Buffer is currently busy - - ifne Level-1 -************************************ -* Random Block Path Extension Format -* - org 0 -PE.PE rmb 1 PE path number -PE.PDptr rmb 2 back ptr to this PE's Path Descriptor -PE.NxFil rmb 2 Drive Open-File list ptr -PE.Confl rmb 2 circular File Conflict list -PE.Lock rmb 1 Path lockout status -PE.LoLck rmb 4 Low Locked Logical addr -PE.HiLck rmb 4 High Locked Logical addr -PE.Wait rmb 2 PE ptr to (next) locked-out PE -PE.TmOut rmb 2 Max ticks to wait for locked segment -PE.Owner rmb 1 Process ID of owner of locked segment -PE.Req rmb 1 temp for PE.Lock in GAIN when LockSeg fails -PE.Prior rmb 1 tmp for process priority while in driver - rmb 32-. reserved -PE.FilNm rmb 32 temp for filename during directory search - -* PE.Lock status codes -Unlocked equ 0 no portion of file is locked -RcdLock equ 1 record from LoLck to HiLck locked -FileLock equ 2 entire file locked -EofLock equ 4 End of file is locked - endc - -*********************** -* LSN0 Disk Data Format -* - org 0 -DD.TOT rmb 3 Total number of sectors -DD.TKS rmb 1 Track size in sectors -DD.MAP rmb 2 Number of bytes in allocation bit map -DD.BIT rmb 2 Number of sectors/bit -DD.DIR rmb 3 Address of root directory fd -DD.OWN rmb 2 Owner -DD.ATT rmb 1 Attributes -DD.DSK rmb 2 Disk id -DD.FMT rmb 1 Disk format; density/sides -DD.SPT rmb 2 Sectors/track -DD.RES rmb 2 Reserved for future use -DD.SIZ equ . Device descriptor minimum size -DD.BT rmb 3 System bootstrap sector -DD.BSZ rmb 2 Size of system bootstrap -DD.DAT rmb 5 Creation date -DD.NAM rmb 32 Volume name -DD.OPT rmb 32 option area - -* DD.FMT Bit Definitions -FMT.SIDE equ %00000001 Single Side=0, Double Side=1 -FMT.DNS equ %00000010 Single DNS=0, Double DNS=1 -FMT.TDNS equ %00000100 48tpi=0, 96tpi=1 -FMT.T0DN equ %00100000 Track 0 DNS, see FMT.DNS - -************************ -* File Descriptor Format -* - org 0 -FD.ATT rmb 1 Attributes -FD.OWN rmb 2 Owner -FD.DAT rmb 5 Date last modified -FD.LNK rmb 1 Link count -FD.SIZ rmb 4 File size -FD.Creat rmb 3 Segment list extension -FD.SEG equ . Beginning of segment list -* Segment List Entry Format - org 0 -FDSL.A rmb 3 Segment beginning physical sector number -FDSL.B rmb 2 Segment size -FDSL.S equ . Segment list entry size -FD.LS1 equ FD.SEG+((256-FD.SEG)/FDSL.S-1)*FDSL.S -FD.LS2 equ (256/FDSL.S-1)*FDSL.S -MINSEC set 16 - -************************ -* Directory Entry Format -* - org 0 -DIR.NM rmb 29 File name -DIR.FD rmb 3 File descriptor physical sector number -DIR.SZ equ . Directory record size - -**************** -* Static Storage -* -* Overall Disk Static Storage -* -* Note: This does not reserve any memory for drive tables. Each Driver is -* responsible for reserving sufficient memory for the appropriate -* number of tables. -* - org V.USER Reserve required ($06) -V.NDRV rmb 1 Number of drives ($07) - rmb 8 reserved ($08) -DRVBEG equ . Beginning of drive tables ($10) -* -* Global Storage For Disk Drive Tables -* Each Table Contains The First 'DD.Siz' Bytes -* From Sector 0, And The Current Track, Stepping Rate, -* Bit-Map Use Flag, And Disk Type -* - org 0 - rmb DD.SIZ Device descriptor, sector 0 -V.TRAK rmb 2 Current track -V.BMB rmb 1 Bit-map use flag -V.FileHd rmb 2 open file list for this drive -V.DiskID rmb 2 Disk ID -V.BMapSz rmb 1 Bitmap Size -V.MapSct rmb 1 lowest reasonable bitmap sector -V.ResBit rmb 1 reserved bitmap sector (for compaction) -V.ScTkOf rmb 1 Sector/Track byte (Combined from descriptor) -V.ScOfst rmb 1 Sector offset split from byte above -V.TkOfst rmb 1 Track offset split from byte above - rmb 4 reserved -DRVMEM equ . -
--- a/CoCoOS9/defs/scfdefs Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,192 +0,0 @@ - nam SCFDefs - ttl Sequential File Manager (SCF) Definitions - -***************** -* Edition History -* -* Date Changes Made by -* -------- ------------------------------------------------------------ --- -* 84/01/11 Added V.KANJI, V.KBUF, V.MODADR for new kanji input process Y.O -* 85/04/20 Added V.PDLHd Path Descriptor List Head MGH -* 85/04/21 Added PD.PLP and PD.PST for modem handling MGH -* 87/06/23 Updated with Dev Desc info KKD -* 98/10/03 Consolidated L1/L2 scfdefs BGP - - -******************************* -* SCF Device Descriptor Offsets -* - org M$DTyp -IT.DVC rmb 1 Device class -IT.UPC rmb 1 Uppercase flag -IT.BSO rmb 1 Backspace behavior -IT.DLO rmb 1 Delete behavior -IT.EKO rmb 1 Echo flag -IT.ALF rmb 1 Auto linefeed flag -IT.NUL rmb 1 End-of-line null count -IT.PAU rmb 1 Page pause flag -IT.PAG rmb 1 Numbe rof lines per page -IT.BSP rmb 1 Backspace character -IT.DEL rmb 1 Delete-line character -IT.EOR rmb 1 End-of-record character -IT.EOF rmb 1 End-of-file character -IT.RPR rmb 1 Reprint-line character -IT.DUP rmb 1 Duplicate-last-line character -IT.PSC rmb 1 Pause character -IT.INT rmb 1 Interrupt character -IT.QUT rmb 1 Quit character -IT.BSE rmb 1 Backspace echo character -IT.OVF rmb 1 Bell character -IT.PAR rmb 1 Parity -IT.BAU rmb 1 Baud rate -IT.D2P rmb 2 Attached device name string offset -IT.XON rmb 1 X-ON character -IT.XOFF rmb 1 X-OFF character -IT.COL rmb 1 Number of columns for display -IT.ROW rmb 1 Number of rows for display -IT.XTYP rmb 1 Extended type (added by BRI) - - ifgt Level-1 -* Window Descriptor Additions -* For CoCo window, where IT.PAR = $80 - org IT.ROW+1 -IT.WND rmb 1 Window number (matches device name) ($2E) -IT.VAL rmb 1 Use defaults on Init (0=no, 1=yes) -IT.STY rmb 1 Screen type default -IT.CPX rmb 1 Column start default -IT.CPY rmb 1 Row start default -IT.FGC rmb 1 Foreground color default -IT.BGC rmb 1 Background color default -IT.BDC rmb 1 Border color default - endc - - pag -************************************************************ -* Static storage requirements -* SCF Devices must reserve this space for SCF -* - org V.USER -V.TYPE rmb 1 Device type or parity -V.LINE rmb 1 Lines left until end of page -V.PAUS rmb 1 Immediate Pause request -V.DEV2 rmb 2 Attached device's static -V.INTR rmb 1 Interrupt char -V.QUIT rmb 1 Quit char -V.PCHR rmb 1 Pause char -V.ERR rmb 1 Accumulated errors -V.XON rmb 1 X-On char -V.XOFF rmb 1 X-Off char -V.KANJI rmb 1 Kanji mode flag -V.KBUF rmb 2 Kana - Kanji convert routine work address -V.MODADR rmb 2 Kana - Kanji convert module address -V.PDLHd rmb 2 Open path descriptor list head pointer -V.RSV rmb 5 Reserve bytes for future expansion -V.SCF equ . Total SCF manager static overhead - -*********************** -* Character Definitions -* -C$NULL set 0 Null char -C$RPET set $01 (ctl A - SOH) Repeat last input line -C$INTR set $03 (ctl C - ETX) Keyboard interrupt -C$RPRT set $04 (ctl D - EOT) Reprint current input line -C$QUIT set $05 (ctl E - ENQ) Keyboard Abort -C$BELL set $07 (ctl G - BEL) Line overflow warning -C$BSP set $08 (ctl H - BS ) Back space -C$EL set $05 Erase Line -C$LF set $0A Line feed -C$HOME set $0B Home position Code -C$Clsgr set $15 Graphic screen clear (use FM-11) -C$Clsall set $16 Graphic & character clear (use FM-11) -C$CR set $0D Carriage return -C$FORM set $0C (ctl L - FF ) Form Feed ... screen clear -C$SI set $0F Shift IN Code -C$SO set $0E Shift OUT Code -C$XON set $11 (ctl Q - DC1) Transmit Enable -C$XOFF set $13 (ctl S - DC3) Transmit Disable -C$PAUS set $17 (ctl W - ETB) Pause character -C$DEL set $18 (ctl X - CAN) Delete line -C$EOF set $1B (ctl [ - ESC) END of file -C$RGT set $1C Cursor right -C$LFT set $1D Cursor left -C$UP set $1E Cursor up -C$DWN set $1F Cursor down -C$SPAC set $20 Space -C$PERD set '. -C$COMA set ', - - pag -************************* -* FILE DESCRIPTOR OFFSETS -* - org PD.FST -PD.DV2 rmb 2 OUTPUT DEV TBL PTR -PD.RAW rmb 1 READ/WRITE OR RDLIN/WRLIN MODE -PD.MAX rmb 2 READLINE HIGH BYTE COUNT -PD.MIN rmb 1 DEVICES ARE "MINE" IF CLEAR -PD.STS rmb 2 Status routine module addr -PD.STM rmb 2 Reserved for Status routine - org PD.OPT - rmb 1 DEVICE TYPE -PD.UPC rmb 1 CASE (0=BOTH, 1=UPPER ONLY) -PD.BSO rmb 1 BACKSP (0=BSE, 1=BSE,SP,BSE) -PD.DLO rmb 1 DELETE (0=BSE OVER LINE, 1=CRLF) -PD.EKO rmb 1 ECHO (0=NO ECHO) -PD.ALF rmb 1 AUTOLF (0=NO AUTO LF) -PD.NUL rmb 1 END of LINE NULL COUNT -PD.PAU rmb 1 PAUSE (0=NO END of PAGE PAUSE) -PD.PAG rmb 1 LINES PER PAGE -PD.BSP rmb 1 BACKSPACE charACTER -PD.DEL rmb 1 DELETE LINE charACTER -PD.EOR rmb 1 END of RECORD char (READ ONLY) -PD.EOF rmb 1 END of FILE char -PD.RPR rmb 1 REPRINT LINE char -PD.DUP rmb 1 DUP LAST LINE char -PD.PSC rmb 1 PAUSE char -PD.INT rmb 1 KBD INTR char (ctl c) -PD.QUT rmb 1 KBD QUIT char (ctl q) -PD.BSE rmb 1 BACKSPACE ECHO charACTER -PD.OVF rmb 1 LINE OVERFLOW char (BELL) -PD.PAR rmb 1 PARITY CODE -PD.BAU rmb 1 ACIA BAUD RATE (Color Computer) -PD.D2P rmb 2 OFFSET of DEV2 name -PD.XON rmb 1 ACIA X-ON char -PD.XOFF rmb 1 ACIA X-OFF char -OPTCNT equ .-PD.OPT Total user settable options -PD.ERR rmb 1 Most recent I/O error status -PD.TBL rmb 2 Device Table addr (copy) -PD.PLP rmb 2 Path Descriptor List Pointer -PD.PST rmb 1 Current Path Status - -******************************************** -* PD.PST values Path Descriptor Status byte -* -PST.DCD equ %00000001 Set if DCD is lost on Serial port - - pag -************************************************************ -* -* SCF PD.PAR definitions -* -* Baud rate -B110 equ 0 -B300 equ 1 -B600 equ 2 -B1200 equ 3 -B2400 equ 4 -B4800 equ 5 -B9600 equ 6 -B19200 equ 7 -* Word size -WORD8 equ %00000000 -WORD7 equ %00100000 -* Parity -PARNONE equ %00000000 -PARODD equ %00100000 -PAREVEN equ %01100000 -PARMARK equ %10100000 -PARSPACE equ %11100000 -* Stop bits -STOP1 equ %00000000 -STOP2 equ %00010000 -
--- a/CoCoOS9/defs/systype.l1 Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ - nam SysType.l1 - ttl CoCo OS-9 Level One System Type Definitions - -***************** -* Edition History -* -* Date Changes Made by -* -------- ------------------------------------------------------------ --- -* 98/10/13 Added defs by Bruce Isted from his Eliminator archive BGP -* 98/10/31 Merged cc3global.defs into this file BGP -* 99/05/09 Changed for OS-9 Level One BGP - -********************** -* CPU Type Definitions -* - org 1 -Color rmb 1 -COLOR3 rmb 1 -CPUType set Color - -****************************** -* Clock Speed Type Definitions -* -OneMHz equ 1 -TwoMHz equ 2 -CPUSpeed set OneMHz - -********************************** -* Power Line Frequency Definitions -* -Hz50 equ 1 Assemble clock for 50 hz power -Hz60 equ 2 Assemble clock for 60 hz power -PwrLnFrq set Hz60 Set to Appropriate freq - -********************************** -* PIA Definitions -* -PIA.U4 equ $FF00 -PIA.U8 equ $FF20 - -****************** -* ACIA type set up -* - org 1 -ACIA6850 rmb 1 MC6850 acia. -ACIA6551 rmb 1 SY6551 acia. -ACIA2661 rmb 1 SC2661 acia. -ACIATYPE set ACIA6551 - -HW.Page set $FF Device descriptor hardware page - -****************** -* Device addresses -* -A.AciaP set $FF68 Aciapak Address -A.ModP set $FF6C ModPak Address -DPort set $FF40 Disk controller base address -MPI.Slct set $FF7F Multi-Pak slot select -MPI.Slot set $03 Multi-Pak default slot -*** Eliminator addresses -WD05Port set $FF70 -A.DACIA1 set $FF60 -A.DACIA2 set A.DACIA1+4 -PPIABase set WD05Port+6 -RTC.Base set WD05Port+2 - -* -* VDG Devices -* -A.TermV set $FFC0 VDG Term -A.V1 set $FFC1 Possible additional VDG Devices -A.V2 set $FFC2 -A.V3 set $FFC3 -A.V4 set $FFC4 -A.V5 set $FFC5 -A.V6 set $FFC6 -A.V7 set $FFC7 - -**************************************** -* Special character Bit position equates -* -SHIFTBIT equ %00000001 -CNTRLBIT equ %00000010 -ALTERBIT equ %00000100 -UPBIT equ %00001000 -DOWNBIT equ %00010000 -LEFTBIT equ %00100000 -RIGHTBIT equ %01000000 -SPACEBIT equ %10000000 -
--- a/CoCoOS9/defs/systype.l2 Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,803 +0,0 @@ - nam SysType.l2 - ttl CoCo 3 OS-9 Level 2 System Type Definitions - -***************** -* Edition History -* -* Date Changes Made by -* -------- ------------------------------------------------------------ --- -* 98/10/13 Added defs by Bruce Isted from his Eliminator archive BGP -* 98/10/31 Merged cc3global.defs into this file BGP - -********************** -* CPU Type Definitions -* - org 1 -Color rmb 1 -COLOR3 rmb 1 -CPUType set COLOR3 - -****************************** -* Clock Speed Type Definitions -* -OneMHz equ 1 -TwoMHz equ 2 -CPUSpeed set OneMHz - -********************************** -* Power Line Frequency Definitions -* -Hz50 equ 1 Assemble clock for 50 hz power -Hz60 equ 2 Assemble clock for 60 hz power -PwrLnFrq set Hz60 Set to Appropriate freq - -****************** -* ACIA type set up -* - org 1 -ACIA6850 rmb 1 MC6850 acia. -ACIA6551 rmb 1 SY6551 acia. -ACIA2661 rmb 1 SC2661 acia. -ACIATYPE set ACIA6551 - -**************************************** -* Dynamic Address Translator Definitions -* -DAT.BlCt equ 8 D.A.T. blocks/address space -DAT.BlSz equ (256/DAT.BlCt)*256 D.A.T. block size -DAT.ImSz equ DAT.BlCt*2 D.A.T. Image size -DAT.Addr equ -(DAT.BlSz/256) D.A.T. MSB Address bits -DAT.Task equ $FF91 Task Register address -DAT.TkCt equ 32 Number of DAT Tasks -DAT.Regs equ $FFA0 DAT Block Registers base address -DAT.Free equ $333E Free Block Number -DAT.BlMx equ $3F Maximum Block number -DAT.BMSz equ $40 Memory Block Map size -DAT.WrPr equ 0 no write protect -DAT.WrEn equ 0 no write enable -SysTask equ 0 Coco System Task number -IOBlock equ $3F -ROMBlock equ $3F -IOAddr equ $7F -ROMCount equ 1 number of blocks of ROM (High RAM Block) -RAMCount equ 1 initial blocks of RAM -MoveBlks equ DAT.BlCt-ROMCount-2 Block numbers used for copies -BlockTyp equ 1 chk only first bytes of RAM block -ByteType equ 2 chk entire block of RAM -Limited equ 1 chk only upper memory for ROM modules -UnLimitd equ 2 chk all NotRAM for modules -* NOTE: this check assumes any NotRAM with a module will -* always start with $87CD in first two bytes of block -RAMCheck equ BlockTyp chk only beg bytes of block -ROMCheck equ Limited chk only upper few blocks for ROM -LastRAM equ IOBlock maximum RAM block number - -*************************** -* Color Computer 3 Specific -* -CPUType set Color3 -CPUSpeed set TwoMHz -MappedIO equ True (Actually False but it works better this way) - -******************** -* Hardware addresses -* -GIMERegs equ $FF00 Base address of GIME registers -IrqEnR equ $FF92 GIME IRQ enable/status register -BordReg equ $FF9A Border color register -PalAdr equ $FFB0 Palette registers -PIA0Base equ $FF00 -PIA1Base equ $FF20 - -HW.Page set $07 Device descriptor hardware page - -****************** -* Device addresses -* -A.AciaP set $FF68 Aciapak Address -A.ModP set $FF6C ModPak Address -DPort set $FF40 Disk controller base address -MPI.Slct set $FF7F Multi-Pak slot select -MPI.Slot set $03 Multi-Pak default slot -*** Eliminator addresses -WD05Port set $FF70 -A.DACIA1 set $FF60 -A.DACIA2 set A.DACIA1+4 -PPIABase set WD05Port+6 -RTC.Base set WD05Port+2 - -* -* VDG Devices -* -A.TermV set $FFC0 VDG Term -A.V1 set $FFC1 Possible additional VDG Devices -A.V2 set $FFC2 -A.V3 set $FFC3 -A.V4 set $FFC4 -A.V5 set $FFC5 -A.V6 set $FFC6 -A.V7 set $FFC7 -* -* Window Devices -* - org $FF9F -A.W rmb 1 $FF9F Generic Window Descriptor -A.TermW rmb 1 $FFA0 Windowing Term -A.W1 rmb 1 $FFA1 -A.W2 rmb 1 $FFA2 -A.W3 rmb 1 $FFA3 -A.W4 rmb 1 $FFA4 -A.W5 rmb 1 $FFA5 -A.W6 rmb 1 $FFA6 -A.W7 rmb 1 $FFA7 -A.W8 rmb 1 $FFA8 -A.W9 rmb 1 $FFA9 -A.W10 rmb 1 $FFAA -A.W11 rmb 1 $FFAB -A.W12 rmb 1 $FFAC -A.W13 rmb 1 $FFAD -A.W14 rmb 1 $FFAE -A.W15 rmb 1 $FFAF - -**************************************** -* Special character Bit position equates -* -SHIFTBIT equ %00000001 -CNTRLBIT equ %00000010 -ALTERBIT equ %00000100 -UPBIT equ %00001000 -DOWNBIT equ %00010000 -LEFTBIT equ %00100000 -RIGHTBIT equ %01000000 -SPACEBIT equ %10000000 - -********************************** -* Pointer Device Packet Definition -* - org 0 -Pt.Valid rmb 1 Is returned info valid (0=no/1=yes) -Pt.Actv rmb 1 Active Side 0=off/1=Right/2=left -Pt.ToTm rmb 1 Time out Initial value - rmb 2 reserved -Pt.TTTo rmb 1 Time Till Timeout -Pt.TSSt rmb 2 Time Since Start Counter -Pt.CBSA rmb 1 Current Button State Button A -Pt.CBSB rmb 1 Current Button State Button B -Pt.CCtA rmb 1 Click Count Button A -Pt.CCtB rmb 1 Click Count Button B -Pt.TTSA rmb 1 Time This State Counter Button A -Pt.TTSB rmb 1 Time This State Counter Button B -Pt.TLSA rmb 1 Time Last State Counter Button A -Pt.TLSB rmb 1 Time Last State Counter Button B - rmb 2 Reserved -Pt.BDX rmb 2 Button down X value EXPERIMENTAL -Pt.BDY rmb 2 Button down Y value -Pt.Stat rmb 1 Window Pointer type location -Pt.Res rmb 1 Resolution (0..640 by: 0=ten/1=one) -Pt.AcX rmb 2 Actual X Value -Pt.AcY rmb 2 Actual Y Value -Pt.WRX rmb 2 Window Relative X -Pt.WRY rmb 2 Window Relative Y -Pt.Siz equ . Packet Size 32 bytes - -************************** -* window regions for mouse -* -WR.Cntnt equ 0 content region -WR.Cntrl equ 1 control region -WR.OfWin equ 2 off window - -************************************* -* Standard system get/put buffer defs -* -* -* system group numbers -* - org 200 -Grp.Fnt rmb 1 font group -Grp.Clip rmb 1 clipboard group -Grp.Ptr rmb 1 pointer group -Grp.Pat2 rmb 1 pattern group 2 color -Grp.Pat4 rmb 1 pattern group 4 color -Grp.Pat6 rmb 1 pattern group 16 color -* -* font buffer numbers -* - org 1 -Fnt.S8x8 rmb 1 standard 8x8 font -Fnt.S6x8 rmb 1 standard 6x8 font -Fnt.G8x8 rmb 1 standard graphics 8x8 font -* -* pattern buffer numbers -* - org 1 -Pat.Dot rmb 1 -Pat.Vrt rmb 1 -Pat.Hrz rmb 1 -Pat.XHtc rmb 1 -Pat.LSnt rmb 1 -Pat.RSnt rmb 1 -Pat.SDot rmb 1 -Pat.BDot rmb 1 -* -* pointer buffer numbers -* - org 1 -Ptr.Arr rmb 1 Arrow pointer -Ptr.Pen rmb 1 Pencil pointer -Ptr.LCH rmb 1 Large cross hair pointer -Ptr.Slp rmb 1 Wait timer pointer -Ptr.Ill rmb 1 Illegal action pointer -Ptr.Txt rmb 1 Text pointer -Ptr.SCH rmb 1 Small cross hair pointer - -******************************** -* Window/Menu Bar Data Structure -* -* To be used in SS.WnSet SETSTAT to set up a Framed Window -* for use in the high level windowing package. -* -NUMMENS equ 10 maximum number of menus on menu bar -NUMITMS equ 20 maximum number of items in a menu -MXTTLEN equ 15 max chars for menu and item names -WINSYNC equ $C0C0 synch bytes for window validation -* -* Menu Item Descriptor : (MN.ITEMS) -* one required for each item within the menu -* - org 0 -MI.TTL rmb MXTTLEN item name -MI.ENBL rmb 1 enable flag -MI.RES rmb 5 reserved bytes -MI.SIZ equ . size of menu item descriptor -* -* Menu Descriptor : -* one for each menu on the manu bar -* each is pointed to by MB.MPTR below -* - org 0 -MN.TTL rmb MXTTLEN menu title -MN.ID rmb 1 menu id number (1-255) -MN.XSIZ rmb 1 horiz. size of desired pull down -MN.NITS rmb 1 number of items in menu -MN.ENBL rmb 1 enable flag -MN.RES rmb 2 reserved bytes -MN.ITEMS rmb 2 pointer to array of menu items -MN.SIZ equ . size of menu descriptor -* -* Window Descriptor: -* one required for each application in a framed window -* - org 0 -WN.TTL rmb 20 title of window for title bar -WN.NMNS rmb 1 number of menus in menu bar -WN.XMIN rmb 1 minimal horiz. size for application to run -WN.YMIN rmb 1 minimal vert. size for application to run -WN.SYNC rmb 2 synch bytes ($C0C0) -WN.RES rmb 7 reserved bytes -WN.BAR rmb 2 pointer to arry of menu descriptors -WN.SIZ equ . size of window/menu bar descriptor - -************************* -* Window Type Definitions -* -* To be used in setting up the border of the window in -* the SS.WnSel SETSTAT -* - org 0 -WT.NBox rmb 1 No Box -WT.FWin rmb 1 Framed Window -WT.FSWin rmb 1 Framed Window w/Scroll Bars -WT.SBox rmb 1 Shadowed Box -WT.DBox rmb 1 Double Box -WT.PBox rmb 1 Plain Box - -************************************* -* Pre-Defined Menu IDs for the system -* - org 1 -MId.Mov rmb 1 move box -MId.Cls rmb 1 close box -MId.Grw rmb 1 grow box -MId.SUp rmb 1 scroll up -MId.SDn rmb 1 scroll down -MId.SRt rmb 1 scroll right -MId.SLt rmb 1 scroll left -MId.Chr rmb 1 character was depressed - org 20 -MId.Tdy rmb 1 Tandy menu -MId.Fil rmb 1 Files Menu -MId.Edt rmb 1 Edit Menu -MId.Sty rmb 1 Styles menu -MId.Fnt rmb 1 Font menu - - -****************************************************************************** -****************************************************************************** -** ** -** OS-9 Windowing system Global data definitions ** -** ** -****************************************************************************** -****************************************************************************** -** ** -** System memory block 0 layout: ** -** ** -** $0000-$0001 : FHL/Isted WD 1002-05 - interface base address ** -** $0002 : FHL/Isted WD 1002-05 - boot device physical drive # ** -** $0008 : Bruce Isted Serial mouse - button counter & rx count ** -** $0009-$000B : Bruce Isted Serial mouse - RX buffer ** -** $000C-$000D : Bruce Isted Serial mouse - Current X position ** -** $000E-$000F : Bruce Isted Serial mouse - Current Y position ** -** $0010-$001F : unused (User definable) ** -** $0020-$00FF : system direct page & some IRQ vectors ** -** $0100-$011F : Task usage table ** -** $0120-$01FF : Virtual DAT tasks (pointed to by <D.TskIPt) ** -** $0200-$02FF : memory block usage map ($80=Not RAM,$01=in use,$02=module) ** -** $0300-$03FF : system's system call dispatch table ** -** $0400-$04FF : user's sysem call dispatch table ** -** $0500-$05FF : process descriptor pointer table ** -** $0600-$07FF : System task (Task 0, ID 1) process descriptor ** -** $0800-$08FF : System's stack space (initial ptr is $0900) ** -** $0900-$09FF : SMAP table ($01=in used, $80=NOT RAM) ** -** $0A00-$0FFF : module directory DAT Images (8 bytes each) ** -** $1000-$10FF : System Global memory (pointed to by D.CCMem) ** -** $1100-$11FF : GRFDRV global memory (DP=$11 in GRFDRV) ** -** $1200-$1247 : shared buffer between Grf/WindInt & GRFDRV (GP buffers) ** -** $1248-$127F : ???? ** -** $1280-$1A7F : the window tables (32 of $40 bytes each) ** -** $1A80-$1C7F : the screen tables (16 of $20 bytes each) ** -** $1C80-$2000 : the CC3 global mem stack (for windowing) ** -** ** -****************************************************************************** -****************************************************************************** - -* User settable values for CC3IO/TC9IO/GrfInt/WindInt & GrfDrv -MaxLines equ 25 Max. Y coord text value -Meg set false "true" if 1 or 2 meg machine - -COMP equ 0 composite monitor -RGB equ 1 RGB Analog monitor -MONO equ 2 monochrome monitor - -Monitor set RGB - -* Global definitions -KeyMse equ %00000001 keyboard mouse enabled -NumLck equ %00000010 Numlock enabled (TC-9 use only) -CapsLck equ %00000100 Capslock enabled -MaxRows equ 640 maximum X co-ordinate allowed on mouse - ifeq MaxLines-25 -MaxLine equ 198 maximum Y co-ordinate allowed on mouse - else -MaxLine equ 191 maximum Y co-ordinate allowed on mouse - endc - -***************************************************************************** -* Static memory area for each window (CC3IO/TC9IO) -* Should set up a write buffer (using parm area?) between SCF, CC3IO & Grfdrv -* so we can 'burst mode' text output (copy up to 48 chars to Grfdrv's parm -* area, and have grfdrv loop through & write all 48 chars to screen in 1 loop -* May have to have smaller limit for text to gfx screens, as it will run much -* slower, unless GrfDrv is made Partially/Fully Re-Entrant -* -* STRONG CAUTION: scfdefs MUST be included first before this file if -* V.SCF is to be resolved properly in pass 1!! - org V.SCF - -WinType rmb 1 window type (0=Windint/GrfInt,2=VDGInt) $1D -InfVld rmb 1 Rest of info here valid? (0=NO, >0 = YES) $1E -DevPar rmb 2 high bit=window device $1F -ULCase rmb 1 special key flags (Capslck & keyboard mouse) $21 -KySnsFlg rmb 1 flag for key sense setstat $22 -ScrChg rmb 1 screen change flag $23 -SS.SigID rmb 1 data ready process ID $24 -SS.SigSg rmb 1 data ready signal code $25 -MS.SigID rmb 1 mouse signal process ID $26 -MS.SigSg rmb 1 mouse signal signal code $27 -MS.Smpl rmb 1 mouse sample rate $28 -MS.Time rmb 1 mouse timeout value $29 -MS.Side rmb 1 MSB of mouse auto-follow flag $2A -PrtSide rmb 1 auto follow mouse flag $2B -ParmCnt rmb 1 parameter count $2C -ParmVct rmb 2 parameter vector $2D -PrmStrt rmb 2 pointer to params start $2F -NxtPrm rmb 2 pointer to next param storage $31 -EndPtr rmb 1 last character read offset $33 -InpPtr rmb 1 next character read offset $34 -WinNum rmb 1 window table entry # $35 -DWNum rmb 1 dwnum from descriptor $36 -CallCde rmb 1 internal comod call code # $37 -CC3Parm rmb 128-. global parameter area -ReadBuf rmb 256-. read input buffer (keyboard) -CC3DSiz equ . - -***************************************************************************** -* GrfInt/WindInt global memory area -* This area sits in system block 0 from $1000 to $10ff -WGlobal equ $1000 useful value (points to address starting below) - org 0 -G.CurTik rmb 1 Constant - # Clock ticks/cursor updates (2) -G.CntTik rmb 1 Current tick count for cursor updates -G.GfBusy rmb 1 Grfdrv is busy flag (1=busy) -g0003 rmb 2 NEW: UNUSED -g0005 rmb 2 ??? -G.GrfStk rmb 2 grfdrv stack pointer ($07) -G.MonTyp rmb 1 monitor type -g000A equ . Old label for compatibility -G.CrDvFl rmb 1 Are we current device flag (only set when all -* Parms have been moved to Dev Mem) -* 0=We are not on our device -* 1=We are the current device -* (Used by comod (GRF/WIND/VDGInt) to determine -* whether or not to update GIME regs themselves -* If not current device, they don't.) -g000B rmb 1 current device's V.TYPE -G.CurDvM rmb 2 current device memory pointer for co-module use -G.WIBusy rmb 1 WindInt is busy flag (1=busy) -G.AlPckt rmb 6 F$Alarm time packet -G.AlPID rmb 1 F$Alarm proc ID ($15) -G.AlSig rmb 1 F$Alarm signal code ($16) -G.BelVec rmb 2 BELL routine vector -G.DefPal rmb 2 pointer to default palette data in global mem -G.TnCnt rmb 1 SS.Tone duration counter -G.BelTnF rmb 1 BELL tone flag -g001D rmb 3 -G.CurDev rmb 2 current device's static memory pointer ($20) -G.PrWMPt rmb 2 previous window static mem pointer $(22) -G.BCFFlg rmb 1 bit coded co-module found flags ($24) -* 00000010 : VDGInt found -* 10000000 : GrfDrv found -g0025 rmb 1 -G.KTblLC rmb 1 Key table entry# last checked (1-3) -* ifeq TC9-true -*CurLght rmb 1 current keyboard light settings -* else -G.LastCh rmb 1 last keyboard character (ASCII value) -* endc -G.LKeyCd rmb 1 last keyboard code -G.KyRept rmb 1 key repeat counter -* A secondary 3 key table (same format as g002D below) -G.2Key1 rmb 1 -G.2Key2 rmb 1 -G.2Key3 rmb 1 -* Up to 3 keys can be registerd at once, and they are stored here. If more -* than 3 are hit, the last key is overwritten with the very last key down that -* was checked. Format for all three is the same as the PIA column/row byte @ -* KeyFlag below. -G.Key1 rmb 1 Key 1 being held down (Row/Column #) -G.Key2 rmb 1 Key 2 being held down (Row/Column #) -G.Key3 rmb 1 Key 3 being held down (Row/Column #) -G.ShftDn rmb 1 SHIFT key down flag (COM'd) ($30) -G.CntlDn rmb 1 CTRL key down flag (0=NO) -G.KeyFlg rmb 1 Keyboard PIA bit #'s for columns/rows -* %00000111-Column # (Output, 0-7) -* %00111000-Row # (Input, 0-6) -G.AltDwn rmb 1 ALT key down flag (0=NO) -G.KySns rmb 1 key sense byte -G.KySame rmb 1 same key flag -G.CapLok rmb 1 CapsLock/SysRq key down flag - rmb 1 -g0038 rmb 1 grfdrv initialized flag - rmb 2 -G.MSmpRt rmb 1 Current mouse sample # (# ticks till next read) -G.Mouse rmb Pt.Siz mouse packet ($3C) -g005C rmb 2 Temp for relative mouse X coord calculation -g005E rmb 2 Temp for relative mouse Y coord calculation -G.MSmpRV rmb 1 Mouse sample reset value (# ticks till next read) -G.KyDly rmb 1 initial key repeat delay constant -G.KySpd rmb 1 secondary key repeat delay constant -* ifeq TC9-true -*KeyParm rmb 1 keyboard command parameter byte -* else -G.KyMse rmb 1 keyboard mouse flag -* endc -G.Clear rmb 1 "one-shot" CapsLock/SysRq key flag -G.KyButt rmb 1 keyboard F1 and F2 "fire" button info -G.AutoMs rmb 1 Auto-follow mouse flag for current device (0=NO) -G.MseMv rmb 1 mouse moved flag -G.CoTble rmb 6 co-module table -G.GrfEnt rmb 2 GRFDRV Entry address ($6E) -g0070 rmb 1 # bytes to move in 1 block (1-72) -G.WUseTb rmb 4 windows in use bit table (0=unused, 32 windows) ($71) -G.GfxTbl rmb 2 Pointer to GFX tables ($75) -G.WrkWTb rmb $40 Work window table. WindInt only ($77) -g00B7 rmb 2 Current Device static mem ptr for WindInt -g00B9 rmb 2 Current window table ptr for WindInt -g00BB rmb 2 Pointer to work window table (g0077+$10) -g00BD rmb 1 Current screen type for work window table -g00BE rmb 1 Topmost overlay window # when check for title bars -g00BF rmb 1 Flag for keypress while processing menu select -g00C0 rmb 2 Ptr to current path descriptor -G.WindBk rmb 2 shift-clear routine vector -G.MsInit rmb 2 set mouse routine vector -G.MsSig rmb 1 mouse signal flag -G.DefPls rmb 16 Default palettes (2 repeats of 8 is default) ($C7) -g00D7 rmb 41 - -***************************************************************************** -* GrfDrv global memory data definitions -* This area sits in system block 0 from $1100 to $119E -GrfMem equ $1100 useful label used to point to mem starting below - org 0 -gr0000 rmb 1 Pixel mask for 1st byte of GP line -gr0001 rmb 1 Pixel mask for last byte of a GP line -gr0002 rmb 2 Ptr to table of bit masks for colors -gr0004 rmb 1 # of bytes wide GP buffer is (including partials) -gr0005 rmb 1 # pixels per byte in GP Buffer -gr0006 rmb 1 # of pixels used in 1st byte of GP buffer line -gr0007 rmb 1 # of pixels used in last byte of GP buffer line -gr0008 rmb 1 Bit mask that is common to both screen & GP buffer -gr0009 rmb 1 # bytes for width of overlay window -gr000A rmb 1 # bytes to offset to get to next line after -* overlay width has been copied -gr000B rmb 1 -gr000C rmb 2 Cursor address for proportional spacing? -gr000E rmb 1 -gr000F rmb 1 Left-based bit mask for proportional spacing? -gr0010 rmb 2 Vector for text to gfx screen (either prop. or normal) -gr0012 rmb 6 -gr0018 rmb 2 Working Center X coord for Circle/Ellipse -gr001A rmb 2 Working Center Y coord for Circle/Ellipse -gr001C rmb 2 Some variable for Circle/Ellipse (initially 0) -gr001E rmb 2 Working Y radius value for Circle/Ellipse -gr0020 rmb 2 Arc 'clip line' X01 -gr0022 rmb 2 Arc 'clip line' Y01 -gr0024 rmb 2 Arc 'clip line' X02 -gr0026 rmb 2 Arc 'clip line' Y02 -gr0028 rmb 1 full-byte background color to FFILL on mask -gr0029 rmb 1 pixels per byte: set up by FFILL -gr002A rmb 1 Flag for FFill: 1=no error, 0=Stack overflow error -gr002B rmb 1 current Y-direction to travel in FFILL -gr002C rmb 2 -gr002E rmb 2 current window table entry -gr0030 rmb 2 current screen table ptr -gr0032 rmb 1 Last block # we used for buffers -gr0033 rmb 2 Last offset we used for buffers -gr0035 rmb 1 group -gr0036 rmb 2 offset -gr0038 rmb 1 group returned (new) -gr0039 rmb 1 0=Text cursor inverted off, >0 is inverted on -gr003A rmb 1 0=Graphics cursor XOR'd off,>0 is XOR'd on scrn -gr003B rmb 2 end of vars ptr? -gr003D rmb 2 Last X coordinate Graphics cursor was ON at -gr003F rmb 2 Last Y coordinate Graphics cursor was ON at -gr0041 rmb 2 Screen address for start of current gfx cursor -gr0043 rmb 1 Pixel mask for start of gfx cursor -gr0044 rmb 1 Block # Graphics cursor is in -gr0045 rmb 2 Offset in block Graphics cursor is in -gr0047 rmb 2 'Working' X coordinate -gr0049 rmb 2 'Working' Y coordinate -gr004B rmb 2 current X -gr004D rmb 2 current Y -gr004F rmb 2 X Size (in bytes) -gr0051 rmb 2 Y Size (in bytes) -gr0053 rmb 2 Horizontal radius (circle/ellipse/arc) -gr0055 rmb 2 Vertical radius (circle/ellipse/arc) -gr0057 rmb 1 group -gr0058 rmb 1 buffer # -gr0059 rmb 1 save switch for overlay -gr005A rmb 1 PRN -gr005B rmb 2 X coordinate of Graphics cursor -gr005D rmb 2 Y coordinate of Graphics cursor -gr005F rmb 1 ATD: new video mode for 24/25/28-line windows -Gr.STYMk rmb 1 STY marker -gr0061 rmb 1 foreground RGB data -gr0062 rmb 1 background RGB data -gr0063 rmb 1 bytes/row (on current screen...not window) -gr0064 rmb 2 PSet vector -gr0066 rmb 2 pset offset -gr0068 rmb 2 LSet vector -gr006A rmb 2 max X co-ordinate -gr006C rmb 2 max Y co-ordinate -gr006E rmb 2 X pixel count -gr0070 rmb 2 Y pixel count -gr0072 rmb 2 Screen address of pixel we are doing -gr0074 rmb 1 Pixel mask for pixel we are doing -gr0075 rmb 2 ??? Pixel mask for last byte of GP buffer? -gr0077 rmb 2 Vector for right direction FFill -gr0079 rmb 1 bit mask for 1st pixel in byte for right dir. FFill -gr007A rmb 2 Vector for left direction FFill -gr007C rmb 1 bit mask for last pixel in byte for left dir. FFill -gr007D rmb 1 buffer block # -gr007E rmb 2 buffer offset # -gr0080 rmb 2 Buffer length (in bytes) -gr0082 rmb 3 3 byte extended screen address -gr0085 rmb 2 temp -gr0087 rmb 16 grfdrv (sysmap 1) DAT image -gr0097 rmb 1 temp -gr0098 rmb 1 temp -* In ARC, 97-98 is the width of the clip line in pixels (after scaling) -gr0099 rmb 2 temp -* In ARC, 99-9A is the height of the clip line in pixels (after scaling) -gr009B rmb 1 counter temp -gr009C rmb 1 -gr009D rmb 2 offset to buffer in block -gr009F rmb 1 -gr00A0 rmb 1 # lines left to do of GP buffer onto screen -gr00A1 rmb 2 vector routine for (changes lots) -* In ARC A1-A2 is the vector to the proper clipping routine -gr00A3 rmb 2 Vector for shifting GP buffers -gr00A5 rmb 2 Vector for shifting GP buffers (can dupe A1) -gr00A7 rmb 2 -gr00A9 rmb 2 NEW: Window tbl ptr for last window GRFDRV used -gr00AB rmb 256-. ??? UNUSED? -* GPLoad buffer - $1200 in system block 0 -GPBuf rmb 72 common move buffer for gpload/get/put -gb0000 equ 72 Size of get/put buffer ($48) - -***************************************************************************** -* Window table entry structure -* These tables sit in system block 0 and there is 1 for every window init'd -* including any overlay windows. -MaxWind equ 32 maximum allowable window tables -WinBase equ $1290 base address to start of window tables - org -$10 -Wt.STbl rmb 2 Screen table pointer ($FFFF=Not used) -$10 -Wt.BLnk rmb 1 overlay window parent entry # ($FF=base) -$0E -Wt.LStrt rmb 2 screen logical start address -$0D -Wt.CPX rmb 1 current X coord. start -$0B -Wt.CPY rmb 1 current Y coord. start -$0A -Wt.SZX rmb 1 current X size (CWArea) -$09 -Wt.SZY rmb 1 current Y size (CWArea) -$08 -Wt.SXFct rmb 1 X scaling factor -$07 -Wt.SYFct rmb 1 Y scaling factor (0=no scaling) -$06 -Wt.Cur rmb 2 cursor physical address on screen -$05 -Wt.FMsk rmb 1 font bit mask (based from left) -$03 -Wt.CurX rmb 2 X coord of cursor -$02 -Wt.CurY rmb 2 Y Coord of cursor $00 -Wt.XBCnt rmb 1 width of window (in bytes) $02 -Wt.CWTmp rmb 1 bytes wide each text chr (1,2,4) $03 -Wt.BRow rmb 2 bytes/text row (8x width in gfx) $04 -Wt.Fore rmb 1 foreground palette # $06 -Wt.Back rmb 1 background palette # $07 -Wt.Attr rmb 1 default attributes (FUTTTBBB) $08 -Wt.BSW rmb 1 character BSW switches $09 -Wt.LSet rmb 1 LSet type $0A -Wt.FBlk rmb 1 Font memory block # $0B -Wt.FOff rmb 2 Font offset in block $0C -Wt.PBlk rmb 1 PSet memory block # $0E -Wt.POff rmb 2 PSet offset in block $0F -Wt.OBlk rmb 1 Overlay memory block # $11 -Wt.OOff rmb 2 Overlay offset in block $12 -Wt.LVec rmb 2 LSet vector $14 -Wt.PVec rmb 2 PSet vector $16 -Wt.GBlk rmb 1 GCursor memory block # $18 -Wt.GOff rmb 2 GCursor offset in block $19 -Wt.MaxX rmb 2 Maximum X cord. (0-79,0-639) $1B -Wt.MaxY rmb 2 Maximum Y cord. (0-24,0-191) $1D -Wt.BLen rmb 2 bytes left in GPLoad block below $1F -Wt.NBlk rmb 1 memory block # for next GPLoad $21 -Wt.NOff rmb 2 Offset in block for next GPLoad $22 -Wt.LStDf rmb 2 screen logical start default $24 -* NOTE: The following default settings are what the window was initialized -* with, and thus are the MAXIMUM start/size the window can handle -* until it is restarted (DWEnd & DWSet) -* They also appear to be used in WindInt to determine the coords & -* sizes for control+content regions -Wt.DfCPX rmb 1 default X cord. start $26 -Wt.DfCPY rmb 1 default Y cord. start $27 -Wt.DfSZX rmb 1 default X size $28 -Wt.DfSZY rmb 1 default Y size $29 -Wt.Res rmb 6 unused $2A-$2F -Wt.Siz equ .+$10 - -***************************************************************************** -* Screen table entrys -* These tables sit in system block 0 base=$1A80 - -STblMax equ 16 Maximum number of screen tables -STblBse equ $1A80 base address of screen tables - org 0 -St.Sty rmb 1 Screen type $00 -St.SBlk rmb 1 Ram block start # $01 -St.LStrt rmb 2 Screen logical start (for GIME) $02 -St.BRow rmb 1 Bytes per row $04 -St.Brdr rmb 1 Border palette register # $05 -St.Fore rmb 1 Foreground palette register # $06 -St.Back rmb 1 Background palette register # $07 -St.ScSiz rmb 1 screen size: 24..28 lines $08 -St.Res rmb 7 UNUSED??? $09 -* NOTE: SHOULD USE ONE OF THESE UNUSED BYTES TO KEEP THE # OF DEVICE WINDOW -* TABLES THAT ARE USING THIS SCREEN TABLE. DWSET & DWEND WOULD KEEP TRACK OF -* THESE, AND THE WINDINT TITLE BAR ROUTINE WOULD CHECK IT. IF IT IS ONLY 1, -* IT WON'T BOTHER CHANGING THE TITLE BAR WHEN SELECTING WINDOWS -St.Pals rmb 16 Palette register contents $10 -St.Siz equ . - -***************************************************************************** -* Graphics buffer tables -* They contain a 20 byte header (shown below), followed by the raw pixel -* data. - org 0 -Grf.Bck rmb 1 back block link # $00 -Grf.Off rmb 2 back block header offset $01 -Grf.Grp rmb 1 group # $03 -Grf.Buff rmb 1 buffer # $04 -Grf.BSz rmb 2 buffer size (not including header) $05 -Grf.XSz rmb 2 X size (in pixels) $07 -Grf.YSz rmb 2 Y size (in pixels/bytes) $09 -Grf.XBSz rmb 1 X size in bytes $0B -Grf.LfPx rmb 1 # pixels used in first byte of line $0C -Grf.RtPx rmb 1 # pixels used in last byte of line $0D -Grf.STY rmb 1 Screen type buffer intended for $0E -Grf.NBlk rmb 1 number blocks used $0F -Grf.Pal rmb 16 Copy of palette registers? $10 -Grf.Siz equ . $20 - -***************************************************************************** -* GFX tables (1 for each window, 18 ($12) bytes each) pointed to by -* $1075-$0176 -* GRFINT only uses gt0001-gt0004, the rest is exclusive to WINDINT - org 0 -Gt.WTyp rmb 1 WindInt window type (Framed, Scroll Bar, etc.) $00 -Gt.GXCur rmb 2 X coord of graphics cursor $01 -Gt.GYCur rmb 2 Y coord of graphics cursor $03 -Gt.DPtr rmb 2 Ptr to WindInt window descriptor $05 -Gt.FClr rmb 1 Foreground color $07 -Gt.BClr rmb 1 Background color $08 -Gt.FMsk rmb 1 Foreground mask $09 -Gt.BMsk rmb 1 Background mask $0A -Gt.GBlk rmb 1 Block # of graphics cursor $0B -Gt.GOff rmb 2 Offset into block of graphics cursor $0C -Gt.Proc rmb 1 Process # of window creator $0E -Gt.PBlk rmb 1 Process descriptor block # of creator $0F -Gt.Res rmb 2 ??? RESERVED ??? $10 -GTabSz equ . - -***************************************************************************** -* This table is located in the graphics table memory and is offset from -* graphics table pointer stored at $1075-$1076. This is used exclusively by -* WindInt. -* NOTE: USING UNUSED BYTES IN CC3 GLOBAL MEM, SET UP SEPARATE PTRS FOR EACH -* OF THE BELOW SO WE CAN SPEED UP ACCESS BY NOT HAVING TO DO A LOAD/LEAx -* COMBINATION EVERY TIME - org $0240 - rmb WN.SIZ copy of last accessed window descriptor - rmb MN.SIZ copy of last accessed menu descriptor - rmb MI.SIZ copy of last accessed item descriptor - rmb 65 menu handling table (16 entrys of 4 bytes) - -***************************************************************************** -* WindInt menu handling table entry definition - org 0 -MnuXNum rmb 1 menu # -MnuXStrt rmb 1 X start text co-ordinate -MnuXEnd rmb 1 X end text co-ordinate - rmb 1 unused? -MnuHSiz equ . - -***************************************************************************** -* Character binary switches -TChr equ %10000000 transparent characters -Under equ %01000000 underline characters -Bold equ %00100000 bold characters -Prop equ %00010000 proportional spacing of characters -Scale equ %00001000 automatic window scaling -Invers equ %00000100 inverse characters -NoCurs equ %00000010 no cursor display -Protect equ %00000001 device window protection - -***************************************************************************** -* Screen types (high bit set=hardware text, else graphics) in GRFDRV -Current equ $ff Current screen -* equ 1 640x200x2 -* equ 2 320x200x4 -* equ 3 640x200x4 -* equ 4 320x200x16 -* equ $85 80 column text -* equ $86 40 column text - -************************************* -* Window default palette color codes -* - org 0 -White. rmb 1 -Blue. rmb 1 -Black. rmb 1 -Green. rmb 1 -Red. rmb 1 -Yellow. rmb 1 -Magenta. rmb 1 -Cyan. rmb 1 - -* end of cc3global.defs
--- a/CoCoOS9/level2v3/CMDS/Makefile Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -# OS-9 Level 2 V3 Commands/Utilities -# - -include ../../Makefile.rules - -#AS = os9 /mnt2/src/ocem/os9/asm -#ASOUT = o= -AS = xasm -ASOUT = -o= -AFLAGS = -q -DEPENDS = ./Makefile - -CMDS = attr askmontype binex build cobbler copy date \ - deiniz del deldir ddir dir dirm display dmem dump echo exbin \ - free ident idir iniz link list load login makdir mdir \ - merge mfree mmap montype pmap proc procs pwd pxd rename save \ - setime shell_21 sleep swread swset tee tmode tsmon unlink \ - verify wcreate xmode -SUBS = gfx inkey -ALLOBJS = $(CMDS) $(SUBS) - -SHELLMODS = shell_21 build copy date deiniz del dir display echo iniz \ - link list load mdir merge mfree procs tmode unlink -UTILPAK1 = attr deldir dirm dmem free ident mmap proc rename setime tmode -UTILPAK2 = ddir idir pmap xmode - -all: $(ALLOBJS) shell utilpak1 utilpak2 $(DEPENDS) - chmod a+rx $(ALLOBJS) shell utilpak1 utilpak2 - -shell: $(SHELLMODS) $(DEPENDS) - cat $(SHELLMODS)>$@ - @echo "*** Be sure the size of this file is less than 7681 bytes! ***" - @ls -l $@ - @echo - -utilpak1: $(UTILPAK1) $(DEPENDS) - cat $(UTILPAK1)>$@ - @echo "*** Be sure the size of this file is less than 7681 bytes! ***" - @ls -l $@ - @echo - -utilpak2: $(UTILPAK2) $(DEPENDS) - cat $(UTILPAK2)>$@ - @echo "*** Be sure the size of this file is less than 7681 bytes! ***" - @ls -l $@ - @echo - -clean: - $(RM) $(ALLOBJS) shell utilpak1 utilpak2 -
--- a/CoCoOS9/level2v3/CMDS/askmontype.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -******************************************************************** -* AskMonType - Query based monitor type utility -* -* $Id: askmontype.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 1 Created BG 97/??/?? - - nam AskMonType - ttl Query based monitor type utility - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 1 - - mod eom,name,tylg,atrv,start,size - -key rmb 1 -orgopts rmb 32 -modopts rmb 32 -stack rmb 200 -size equ . - -name fcs /AskMonType/ - fcb edition - -start leax >CurOff,pcr - ldy #CurOffL - lbsr WriteMsg - clra - clrb - leax orgopts,u - os9 I$GetStt - leax modopts,u - os9 I$GetStt - clr 4,x - clr 16,x - clr 17,x - clrb - os9 I$SetStt -AskMon leax >MonSelct,pcr - ldy #MonSelL - lbsr WriteMsg -AskMon2 lbsr ReadKey - cmpa #'1 - beq DoTV - cmpa #'2 - beq DoMono - cmpa #'3 - beq DoRGB - leax >Bell,pcr - ldy #BellL - lbsr WriteMsg - bra AskMon2 -DoTV ldx #$0000 TV/composite monitor - bra ChgMon -DoMono ldx #$0002 monochrome monitor - bra ChgMon -DoRGB ldx #$0001 RGB monitor -ChgMon ldd #$01*256+SS.Montr - os9 I$SetStt make the monitor setting - leax >CurOn,pcr - ldy #CurOnL - lbsr WriteMsg - leax orgopts,u - clra - clrb - os9 I$SetStt - clrb - os9 F$Exit - -ReadKey pshs y,x,b - clra stdin - leax key,u - ldy #1 - os9 I$Read - lda key,u - puls pc,y,x,b - -WriteMsg pshs y,x,b,a - lda #1 stdout - os9 I$Write - puls pc,y,x,b,a - - -CurOff fdb $0520 -CurOffL equ *-CurOff -CurOn fdb $0521 -CurOnL equ *-CurOn - -MonSelct fcb C$FORM - fcb $02,$20,$22 - fcc / SELECT YOUR DISPLAY TYPE/ - fcb C$LF,C$CR,C$LF,C$CR,C$LF,C$CR - fcc " (1) TV/Composite Monitor" - fcb C$LF,C$CR,C$LF,C$CR - fcc / (2) Monochrome Monitor/ - fcb C$LF,C$CR,C$LF,C$CR - fcc / (3) RGB Monitor/ - fcb C$LF,C$CR -MonSelL equ *-MonSelct - -Bell fcb C$BELL -BellL equ *-Bell - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/attr.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,257 +0,0 @@ -******************************************************************** -* Attr - Modify file attributes -* -* $Id: attr.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 11 Original Tandy distribution version - - nam Attr - ttl Modify file attributes - -* Disassembled 98/09/11 11:44:51 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - use rbfdefs - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 11 - - mod eom,name,tylg,atrv,start,size - -fpath rmb 1 -rawpath rmb 1 -parmptr rmb 2 -cmdperms rmb 2 -u0006 rmb 1 -u0007 rmb 1 -pathopts rmb 20 -u001C rmb 2 -u001E rmb 1 -u001F rmb 9 -u0028 rmb 32 -filename rmb 32 -fdesc rmb 16 -u0078 rmb 46 -u00A6 rmb 414 -size equ . - -name fcs /Attr/ - fcb edition - -L0012 fcb C$LF - fcc "Use: Attr <pathname> {[-]<opts>}" - fcb C$LF - fcc " opts: -d s r w e pr pw pe -a" - fcb C$CR -L0052 fcb C$LF - fcc "You do not own that file." - fcb C$CR -L006D fcb C$LF - fcc "Use Makdir to create a directory" - fcb C$CR -L008F fcb C$LF - fcc "ERROR; the directory is not empty" - fcb C$CR -L00B2 fcc "dsewrewr" - fcb $FF - -start stx <parmptr save param ptr - clr <u0007 - com <u0007 - clra - os9 I$Open open file on commandline - bcc L00D9 branch if ok - ldx <parmptr get saved param ptr - lda #DIR.!READ. load perms - os9 I$Open open as directory - bcc L00D9 branch if ok - ldx <parmptr get param ptr - lda #DIR. load different perms - os9 I$Open try one more time - bcs L0114 branch if error -L00D9 sta <fpath save off path - stx <cmdperms save updated parm ptr - leax pathopts,u point X to buffer - ldb #SS.Opt load with status code - os9 I$GetStt get status - bcs L0114 branch if error - clrb - lda ,x get path type - cmpa #DT.RBF check if rbf path - lbne L01AC branch if not - ldx <parmptr else get parm ptr - leay <filename,u point to buffer - lda ,x+ get file name character - cmpa #PDELIM path delimiter? - bne L0106 no -L00FA sta ,y+ else save char in Y - lda ,x+ get next file name char - cmpa #C$PERD period? - bcs L0106 branch if not - cmpa #PDELIM path delimiter? - bne L00FA branch if not -L0106 lda #'@ - ldb #C$SPAC - std ,y++ - leax <filename,u point X to filename - lda #READ.!WRITE. load perms - os9 I$Open open in raw mode -L0114 lbcs L01AC branch if error - sta <rawpath - lda <fpath - clr <u001F,u - pshs u - ldx <u001C,u get MS 16 bits - ldu <u001E,u get LS 16 bits - lda <rawpath get path - os9 I$Seek seek - puls u - bcs L01AC branch if error - leax <fdesc,u point to buffer - ldy #FD.SEG - os9 I$Read - bcs L01AC - os9 F$ID get ID - cmpy #$0000 super user? - beq L014B branch if so - cmpy <fdesc+FD.OWN,u is user same as file's owner? - bne L01C1 branch if not -L014B ldx <cmdperms point to perms on cmd line - lbsr L021D - bcs L018B -L0152 lbsr L021D - bcc L0152 - clrb - lda ,x - cmpa #$0D - bne L01AC - pshs u - ldx <u001C,u - ldu <u001E,u - lda <rawpath - os9 I$Seek seek - puls u - bcs L01AC branch if error - leax <fdesc,u point to file desc - ldy #1 only 1 byte - os9 I$Write write out new attributes - bcs L01AC branch if error - os9 I$Close close file - bcs L01AC branch if error - lda <fpath get file path - os9 I$Close close file - bcs L01AC branch if error - ldb <u0007 - beq L01BE -L018B ldb <fdesc,u get attribute - leax >L00B2,pcr - leay <u0078,u - lda ,x+ -L0197 lslb - bcs L019C - lda #'- -L019C sta ,y+ - lda ,x+ - bpl L0197 - lda #C$CR - sta ,y+ - leax <u0078,u - clrb - bra L01B0 -L01AC leax >L0012,pcr -L01B0 pshs b - lda #2 - ldy #256 - os9 I$WritLn - comb - puls b -L01BE os9 F$Exit -L01C1 clrb - leax >L0052,pcr - bra L01B0 -L01C8 leax >L006D,pcr - clrb - bra L01B0 -L01CF pshs u,y,x - lda <fpath - ldx #$0000 - ldu #$0040 - os9 I$Seek - ldu $04,s - bcs L01BE -L01E0 leax <u0028,u - ldy #$0020 - os9 I$Read - bcs L01F7 - tst ,x - beq L01E0 - leax >L008F,pcr - clrb - bra L01B0 -L01F7 puls u,y,x - cmpb #$D3 - bne L01AC - rts -L01FE fdb $ff41 - fdb $ff80,$44ff,$4053,$ff01,$52ff,$0257,$ff04,$45ff - fdb $0850,$52ff,$1050,$57ff,$2050,$45ff - fcb $00 -L021D clr <u0006 -L021F lda ,x+ - cmpa #C$SPAC - beq L021F - cmpa #C$COMA - beq L021F - cmpa #'- - bne L0231 - com <u0006 - lda ,x+ -L0231 leax -1,x - leay >L01FE,pcr -L0237 ldb ,y+ - pshs y,x - beq L027F -L023D lda ,x+ - eora ,y+ - anda #$DF - beq L023D - lda -1,y - bmi L0251 - puls y,x -L024B lda ,y+ - bpl L024B - bra L0237 -L0251 lda ,-x - cmpa #$30 - bcc L027F - cmpb #$FF - beq L0278 - bitb #$80 - beq L0268 - tst <u0006 - lbeq L01C8 - lbsr L01CF -L0268 puls y,b,a - lda <fdesc,u - eora <u0006 - ora -$01,y - eora <u0006 - sta <fdesc,u - clrb - rts -L0278 eorb <u0006 - stb <u0007 - clrb - puls pc,y,b,a -L027F coma - puls pc,y,x - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/binex.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,245 +0,0 @@ -******************************************************************** -* Binex - Motorola S-Record utility -* -* $Id: binex.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 67 Original Tandy distribution version - - nam Binex - ttl Motorola S-Record utility - -* Disassembled 98/09/15 00:08:52 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 67 - - mod eom,name,tylg,atrv,start,size - -u0000 rmb 1 -u0001 rmb 1 -u0002 rmb 2 -u0004 rmb 1 -u0005 rmb 1 -u0006 rmb 1 -u0007 rmb 2 -u0009 rmb 1 -u000A rmb 2 -u000C rmb 1 -u000D rmb 31 -u002C rmb 1 -u002D rmb 1 -u002E rmb 1 -u002F rmb 2 -u0031 rmb 2 -u0033 rmb 2 -u0035 rmb 656 -size equ . - -name fcs /Binex/ - fcc "Copyright 1982 Motorola, Inc." - fcb $01 - -start stx <u0002 - lda #$01 - os9 I$Open - bcc L003C -L0039 os9 F$Exit -L003C sta <u0000 - stx <u0002 - lda #$02 - ldb #$7F - os9 I$Create - bcs L0039 - sta <u0001 - stx <u0002 - ldd #$0000 - sta <u0006 - std <u000A - std <u002F - ldx #$5330 - stx <u002D - ldx #$3030 - stx <u0031 - stx <u0033 -L0062 leax >L0217,pcr - lda #$01 - ldy #$0022 - os9 I$Write - leax <u0031,u - lda #$00 - ldy #$0005 - os9 I$ReadLn - leay -$01,y - cmpy #$0000 - beq L0062 - cmpy #$0004 - bhi L0062 - beq L00A7 - tfr y,d - pshs b - decb - leax <u0031,u - leay $04,x -L0095 lda b,x - sta ,-y - decb - bpl L0095 - ldb #$04 - subb ,s+ - lda #$30 -L00A2 sta ,-y - decb - bgt L00A2 -L00A7 lbsr L0178 - leax >L01F9,pcr - lda #$01 - ldy #$001E - os9 I$Write - leax u000C,u - lda #$00 - ldy #$0015 - os9 I$ReadLn - leay -$01,y - cmpy #$0000 - bne L0120 -L00CA lda <u0000 - leax u000C,u - ldy #$0020 - os9 I$Read - lbcs L0160 - cmpy #$0000 - lbeq L0160 - lda <u0006 - bne L0120 - inc <u0006 - lda #$31 - sta <u002E - ldx <u0004 - stx <u000A - ldx u000C,u - cmpx #$87CD - beq L0120 - leax >L0239,pcr - pshs y - ldy #$003C - lda #$01 - os9 I$Write - leax <u0035,u - ldy #$0002 - lda #$00 - os9 I$ReadLn - puls y - lda <u0035,u - anda #$DF - cmpa #$59 - beq L0120 -L011C clrb - os9 F$Exit -L0120 sty <u0007 - tfr y,d - addb #$03 - stb <u0009 - leax u0009,u - clra - ldb ,x -L012E adda ,x+ - decb - bne L012E - coma - sta ,x - leax u0009,u - leay <u002F,u - ldb ,x - incb -L013E bsr L01B6 - decb - bne L013E - ldb #$0D - stb ,y - leax <u002D,u - ldy #$0073 - lda <u0001 - os9 I$WritLn - lbcs L0039 - ldd <u000A - addd <u0007 - std <u000A - lbra L00CA -L0160 cmpb #$D3 - lbne L0039 - lda #$39 - cmpa <u002E - beq L011C - sta <u002E - ldx <u0004 - stx <u000A - ldy #$0000 - bra L0120 -L0178 bsr L017C - sta <u0004 -L017C lda ,x+ - bsr L0197 - lsla - lsla - lsla - lsla - anda #$F0 - pshs a - lda ,x+ - bsr L0197 - adda ,s+ - sta <u0005 - adda <u002C - sta <u002C - lda <u0005 - rts -L0197 suba #$30 - bmi L01A6 - cmpa #$09 - ble L01A5 - suba #$07 - cmpa #$0F - bhi L01A6 -L01A5 rts -L01A6 leax >L01D7,pcr - lda #$02 - ldy #$00FF - os9 I$WritLn - lbra L011C -L01B6 pshs b,a - lda ,x+ - tfr a,b - lsra - lsra - lsra - lsra - bsr L01CC - sta ,y+ - tfr b,a - bsr L01CC - sta ,y+ - puls pc,b,a -L01CC anda #$0F - adda #$30 - cmpa #$39 - bls L01D6 - adda #$07 -L01D6 rts -L01D7 fcc "** NON-HEX CHARACTER ENCOUNTERED" - fcb $07,C$CR -L01F9 fcc "Enter name for header record: " -L0217 fcc "Enter starting address for file: $" -L0239 fcb $07,C$CR,C$LF - fcc "** Not a binary load module file. Proceed anyway (Y/N)? " - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/build.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -******************************************************************** -* Build - Simple text file creation utility -* -* $Id: build.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 6 Original Tandy distribution version - - nam Build - ttl Simple text file creation utility - -* Disassembled 98/09/10 23:19:12 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 6 - - mod eom,name,tylg,atrv,start,size - -FPath rmb 1 -LineBuff rmb 578 -size equ . - -name fcs /Build/ - fcb edition - -start ldd #(WRITE.*256)+UPDAT. - os9 I$Create - bcs Exit - sta <FPath -InpLoop lda #1 - leax <Prompt,pcr - ldy #PromptL - os9 I$WritLn - clra - leax LineBuff,u - ldy #128 - os9 I$ReadLn - bcs Close - cmpy #$0001 - beq Close - lda <FPath - os9 I$WritLn - bcc InpLoop - bra Exit -Close lda <FPath - os9 I$Close - bcs Exit - clrb -Exit os9 F$Exit - -Prompt fcc "? " -PromptL equ *-Prompt - - emod -eom equ * - end -
--- a/CoCoOS9/level2v3/CMDS/cobbler.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,416 +0,0 @@ -******************************************************************** -* Cobbler - Boot generation utility -* -* $Id: cobbler.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 7 Reworked AD -* 8 Fixed error where $40+C$CR should have been BGP 98/10/20 -* $40*256+C$CR - - nam Cobbler - ttl Boot generation utility - -* Disassembled 94/10/23 11:19:48 by Alan DeKok - -* WARNING: This is a LEVEL II Cobbler only! - - ifp1 - use os9defs - use scfdefs - use rbfdefs - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 8 - - mod eom,name,tylg,atrv,start,size -u0000 rmb 3 -u0003 rmb 1 -u0004 rmb 12 -u0010 rmb 5 - -u0015 rmb 1 -u0016 rmb 2 -u0018 rmb 2 -* Everything before here is the DD.foo equivalent -PathO rmb 1 path output to OS9boot file -Path rmb 3 path to /DEVICE@ -KernelF rmb 1 0=write kernel track, 1= don't -BootF rmb 1 0=write boot track, 1=don't -FileNm rmb 20 /DEVICE/OS9Boot memory - rmb 16 -SysDAT rmb 16 copy of the system DAT image -FileDesc rmb $20 room for first bit of file descriptor -AllMap rmb 1024 allocation map is entirely too large... -Buffer rmb $2000 only copy 8k at a time - rmb 200 room for the stack -size equ . - -name fcs /Cobbler/ - fcb edition my version of cobbler - -L0015 fdb $0000 minimal DAT image for checking out the system. - -OS9Boot fcs '/OS9Boot' -Rel fcc /Rel/ - -start clr <KernelF force a write of the kernel track - clr <BootF force a write of the boot track -skip ldd ,x+ - cmpa #C$SPAC space? - beq skip - cmpa #'- hyphen? - bne s.001 - - andb #$DF make it uppercase - cmpb #'K force no write of kernel track? - bne check.b no, check for the boot track stuff - stb <KernelF save the kernel flag - bra s.000 - -check.b cmpb #'B don't write boot? - bne go.help no, print out help message - stb <BootF save the boot flag - -s.000 leax 1,x skip the character - lda ,x++ get the next character, and point to the next one - cmpa #$20 space? - bne go.help no, print out a help message - -s.001 leax -1,x - lda #'/ - cmpa ,x is the first character a slash? -Go.help lbne Help not a device name, error out - os9 F$PrsNam parse the name - lbcs Exit exit on error - lda #'/ is the next character a slash? - cmpa ,y check it - lbeq Help yes, dump out a help message - ldy #FileNm point to the filename buffer -L013C sta ,y+ make first character a slash - lda ,x+ copy the name over - decb - bpl L013C - ldd #$40*256+C$CR '@+CR' - std ,y save in the buffer - ldx #FileNm point to the filename again - lda #UPDAT. - os9 I$Open open /DEVICE@ - sta <Path save the path to the file - lbcs Exit dump out help on an error - leax ,y point to end of '/DEVICE' name - leay >OS9Boot,pcr point to the OS9Boot name -L0162 lda ,y+ get a byte from the name - sta ,x+ save in my buffer - bpl L0162 copy it over - - leax ,u both are zero in a level II system - lda <Path - os9 I$Seek seek to LSN0 - lbcs Exit dump out error if encountered - -* X is implicitely zero from the call above - ldy #DD.BSZ+2 read everything up to the boot size - lda <Path - os9 I$Read get it - lbcs Exit - - tst <BootF replace OS9Boot? - lbne no.boot no, go write the kernel track - - ldd <DD.BSZ get the boot size - lbeq L019F if non-existent, don't delete it - ldx #FileNm point to /DEVICE/OS9boot - os9 I$Delete delete it, if it exists - clra - clrb - sta <DD.BT NO OS9boot file on this disk - std <DD.BT+1 - std <DD.BSZ - lbsr L045A dump out LSN0 information again - -L019F ldd #(UPDAT.*256)+UPDAT. - ldx #FileNm create a /DEVICE/OS9Boot file - os9 I$Create - lbcs Exit - sta <PathO - - leax >L0015,pcr temporary DAT image - tfr x,d - ldx #$0000 get copy of direct page - ldy #$0090 first $90 bytes - ldu #Buffer to a buffer - os9 F$CpyMem copy memory - lbcs Exit - - leax >L0015,pcr - tfr x,d use it as temporary DAT image - ldx >Buffer+D.SysDAT get pointer to system DAT image - ldy #$0010 get a copy of it - ldu #SysDAT point to room for the system DAT image - os9 F$CpyMem get the system DAT image - lbcs Exit - ldx #Buffer - ldd <D.BtPtr,x address of boot in system memory - pshs d save a copy of it - ldd <D.BtSz,x size of the OS9Boot file in system memory - std <DD.BSZ save in the boot size info for LSN0 - pshs d save the size -L01F7 ldy #$2000 only do 8k at a time - cmpy ,s default to one block??? - bls L0203 - ldy ,s get the actual boot size -L0203 pshs y save a copy of it - ldx #SysDAT get dat image - tfr x,d save it - ldx $04,s get start of boot in memory - ldu #Buffer - os9 F$CpyMem copy one block at a time - lbcs Exit - ldy ,s get how much we're copying - ldx #Buffer point to the buffer - lda <PathO dump it to /DEVICE/OS9Boot file - os9 I$Write - lbcs Exit - puls d get size of what we're copying - ldy $02,s get start address of boot file in system memory - leay d,y go to the next group of data - sty $02,s save new start a address - nega - negb - sbca #$00 - ldy ,s get size of boot file left - leay d,y take out what we've done - sty ,s save it - bne L01F7 if not done, continue - leas $04,s remove start,size from the stack - - lda <PathO path to OS9Boot - ldb #SS.FD get FD information - ldx #FileDesc read the file descriptor sector - ldy #$0020 only get the first 32 bytes of it - os9 I$GetStt - lbcs Exit - - os9 I$Close close the path - lbcs Exit - - ldd <FD.SEG+3+2+3,x get size of SECOND segment in file - lbne L0488 if not zero, the file is fragmented - ldb <FD.SEG,x get first byte of address - stb <DD.BT save starting sector of the bootstrap file - ldd <FD.SEG+1,x - std <DD.BT+1 save the rest of the LSN# - lbsr L045A seek to LSN0 and dump out this information, too - - lda <KernelF do we do a kernel track? - bne ClnExit no, don't even check for floppy stuff - - lda <DD.FMT is it a HD? (Bit 7 set) - bpl Floppy if bit 7 is clear, go do track 34 stuff. - -ClnExit clrb no error -Exit1 OS9 F$Exit and exit - -no.boot lda <DD.FMT is it a HD? (bit 7 set) - bpl Floppy if OK, go write it - coma set carry - ldb #E$BTyp bad media type - bra Exit1 - -Floppy ldd #$0001 track 0, sector 1: LSN 1 - lbsr L0440 seek to it - - ldx #AllMap point to the allocation map buffer - ldy <DD.MAP get the size of the map - lda <Path - os9 I$Read read in the allocation map - bcs Exit1 - - ldd <DD.MAP get number of bytes in the map - leau d,x point to the END of the map - ldd #$2200 track 34, sector 0 - lbsr Tk2LSN get LSN of this in D - pshs d save it for later - ldy #0018 force the boot track to be 18 sectors long - OS9 F$SchBit search for 18 free sectors at D,X: ending at U - cmpd ,s++ did we find bits at the starting bit number? - bne Check no, check for REL on the disk - cmpy #0018 if found at the right spot, did we find 18 bits? - beq AllClr if so, go allocate them - -Check ldd #$2200 track 34, sector 0 - lbsr L0440 seek to it - - ldx #Buffer - ldy #$0100 read one sector - lda <Path - os9 I$Read get the first sector of the boot track - lbcs Exit - - ldd ,x++ get the first 2 bytes - cmpd #$4F53 is it 'OS'? - lbne L0496 files present on track 34, give error - ldd ,x++ - cmpa #$20 is it a BRA? - lbne L0496 - ldd ,x get some bytes from the sector - cmpd #M$ID12 is it a module header? - beq map.blk yes, go write out the kernel track - leax 2,x skip the $1205 sync bytes - ldd ,x grab the header - cmpd #M$ID12 is there a module here? - lbne L0496 no, error out - bra map.blk don't allocate track 34, REL already exists on it - -* We've found 18 bytes at D,X in the allocation bit map -* D,X,Y are set up from above -AllClr OS9 F$AllBit allocate the bits in the bitmap - -* possible problems here, as the r/w of the allocation bitmap is NOT atomic. -* some other process may come along and grab the sectors we want. -L0315 ldd #$0001 track 0, sector 1 - bsr L0440 seek to it - ldx #AllMap - ldy <DD.MAP - lda <Path - os9 I$Write dump out the allocation map again - lbcs Exit - -* Do a F$Link to REL? -map.blk ldx #$003F the boot track is in block 63 - ldb #1 one block - OS9 F$MapBlk map the block in - lbcs L049D error finding boot track in memory - - ldd #$2200 track 34, sector 0 - bsr L0440 seek to it - lda <Path - leax $0D00,u the boot track starts out at $ED00 - ldy #$1200 dump out 18 sectors - os9 I$Write dump out REL, Boot, OS9p1 - pshs cc,b - ldb #1 - OS9 F$ClrBlk un-map block $3F - puls cc,b restore possible error code - bcs L048F if there was an error, print it out and exit - os9 I$Close close the path - clrb no erros - bra Exit - -****************************** -* Convert track,sector to LSN -* -* Entry: A = track number -* B = sector number -* Exit : D = LSN# of that sector -Tk2LSN pshs b - ldb <DD.FMT - andb #$01 - beq L037F - ldb #$02 disk is 2-sided - bra L0381 - -L037F ldb #$01 disk is 1-sided -L0381 mul multiply sides by tracks - lda <DD.TKS track size in sectors - mul get LSN of the track - addb ,s add in the sector - adca #$00 make it 16-bit - leas $01,s dumb dumb dumb people... - rts - -L0440 pshs u,y,x,d - bsr Tk2LSN convert track,sector to LSN - pshs a - tfr b,a - clrb shuffle so 16-bit LSN goes to - tfr d,u 32-bit address, with the lower - puls b 16 bits all zero - clra - tfr d,x - lda <Path - os9 I$Seek seek to it - bcs L048F - puls pc,u,y,x,d - -L045A clra - clrb - tfr d,x - tfr d,u go to LSN0 - - lda <Path - os9 I$Seek seek to LSN0 - - ldy #DD.DAT X=$0000 already... - lda <Path - os9 I$Write dump it out - bcs Exit - rts - -Help leax <HelpMsg,pcr - clrb - -Print pshs b,cc - lda #$02 - ldy #$0200 - os9 I$WritLn - comb - puls b,cc - -Exit os9 F$Exit - -L0488 leax >L00D1,pcr - clrb - bra Print - -L048F leax >L0051,pcr - clrb - bra Print - -L0496 leax >L008E,pcr - clrb - bra Print - -L049D leax >L00F2,pcr - bra Print - -HelpMsg fcb C$LF - fcc 'Use: COBBLER [-k] [-b] </devname>' - fcb C$LF - fcc / to create a new system disk by writing an OS9Boot file/ - fcb C$LF - fcc / and a boot (kernel) track to the specified drive./ - fcb C$LF,C$LF - fcc / -k = don't write the kernel track/ - fcb C$LF - fcc / Hard disk drives never have the kernel track written./ - fcb C$LF - fcc / -b = don't write the OS9Boot file/ - fcb C$CR - -L0051 fcb C$LF - fcc /Error writing kernel track or LSN0./ - fcb C$CR - -L008E fcb C$LF - fcc /Warning - file(s) present on track 34/ - fcb C$LF - fcc / - this track not rewritten./ - fcb C$CR - -L00D1 fcb C$LF - fcc /Error - OS9boot file fragmented/ - fcb C$CR - -L00F2 fcb C$LF - fcc /Error - can't find boot track in memory/ - fcb C$CR - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/copy.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,320 +0,0 @@ -******************************************************************** -* Copy - File copy utility -* -* $Id: copy.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 10 Reworked RML - - nam Copy - ttl File copy utility - -* Edition 10 rewrite 10/28/88 - RML - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 10 - - mod eom,name,tylg,atrv,start,size - -inpath rmb 1 input path number -outpath rmb 1 output path number -indevtyp rmb 1 input device type (1 = RBF) -verify rmb 1 verify on/off (1=on) -bufsize rmb 2 read/write buffer size -fsizemsb rmb 2 msb's of file size -fsizelsb rmb 2 lsb's of file size -writemsb rmb 2 msb's of bytes written to output -writelsb rmb 2 lsb's of bytes written to output -single rmb 1 single drive copy flag (1=yes) -attribs rmb 1 file attributes -fdbuff rmb 16 File Descriptor buffer -optbuff rmb 32 Path Descriptor Options Buffer -stack rmb 448 stack storage -vfybuff rmb 256 verify buffer -buffer rmb $2000-. read/write buffer (minimum..will expand with mem mod) -size equ . - -name fcs /Copy/ - fcb edition - -start leas vfybuff,u set stack pointer to 512 - pshs u save u reg - leau <optbuff,u point u to 20th byte - -clearit clr ,-u clear byte - cmpu ,s done ? - bhi clearit loop back - tfr y,d move in top of mem (after param area) - subd ,s++ subtract current stack - subd #$0300 and back off variable storage - clrb round off to page bondary - std <bufsize buffer size - pshs x save x register - -getopt lda ,x+ get a char - cmpa #'- was it a '-'?? - beq chkopt yes..go check opt - cmpa #C$CR was it a <cr>?? - bne getopt no..check next char - bra openin else done..go finish processing - -chkopt ldd ,x+ get next 2 chars - eora #'S check if its an S - anda #$DF make upper case - lbne sndinstr not an s.. send instructions - cmpb #$30 else check if next char is number or letter - lbhs sndinstr yup...send instructions - inc <single set s option - bra getopt and check next char - -openin puls x restore line pointer - lda #READ. open first file - os9 I$Open - lbcs chkerr error..go see what it was - sta <inpath save path number - pshs x save second path name start - leax <fdbuff,u point to FD buffer - ldy #16 bytes to read - ldb #SS.FD get file descriptor - os9 I$GetStt - puls x restore line pointer - bcs getintyp skip this on eror - tst <single single drive copy ? - beq getintyp no..skip this stuff - lda ,x get first char of path name - ldb #E$BPNam load bad path name error message - cmpa #'/ was it a path separaor ? - bne errjump nope..error - -getintyp pshs x save out path name start - lda <inpath get path number - bsr getopts get option section - lda ,x get device type - sta <indevtyp save it - ldb #$0F default attributes...read,write,execute,public - cmpa #DT.RBF was device type RBF ? - bne openout nope...don't get file size/attributes - pshs u,x save registers - lda <inpath get path number - ldb #SS.Size Get File size - bsr getstat do the GetStt call..exit on error - stx <fsizemsb save 2 msb's of file size - stu <fsizelsb save 2 lsb's of file size - puls u,x restore registers - ldb <$13,x get file attributes - -openout stb <attribs save attributes - ldx ,s get start of second path name - lbsr destsnd send destination msg - lda #UPDAT. open file for update - ldb <attribs get attributes - os9 I$Create create the file - puls x restore x register - bcc open010 no error..skip this - inc <verify set verify off - lda #WRITE. open filein write only mode - ldb <attribs get atributes - os9 I$Create create the file - bcs errjump exit on error - -open010 sta <outpath save second path number - bsr getopts get option section - ldb ,x get device type - cmpb #DT.RBF was it RBF - beq setvfy yup...skip this - inc <verify set verify off - bra mainloop and skip all this - -errjump lbra errexit nope....error - -getopts leax <optbuff,u point to buffer - ldb #SS.Opt get option section of path descritor - -getstat os9 I$GetStt - bcs errjump exit on error - rts - -setvfy tst <verify do we want verify on - bne setsiz nope...dont set driver verify on - ldb #1 verify - stb 8,x turn verify on - ldb #SS.OPT set options - os9 I$SetStt - bcs errjump exit on error - -setsiz lda <indevtyp get device type - cmpa #DT.RBF is it an RBF file - bne mainloop nope...dont preset file size - pshs u save register - lda <outpath get out path number - ldb #SS.Size set file size - ldx <fsizemsb get 2 msb's of in file size - ldu <fsizelsb get 2 lsb's of in file size - os9 I$SetStt set the size - bcs errjump exit on error - puls u restore register - lda <outpath get out path number - leax <fdbuff,u point to FD buffer - ldy #16 number of bytes to write - ldb #SS.FD write out the FD (for dates,etc.) - os9 I$SetStt - -mainloop leax buffer,u point to buffer - clra source drive code - lbsr chkdrive send source switch msg - lda <inpath get in path number - ldy <bufsize get buffer size - os9 I$Read read a block - bcs chkeof2 if error..go check which one - lbsr destsnd send destination switch msg - lda <outpath get out path number - os9 I$Write write the block out - bcs errjump exit on error - tst <verify are we verifying ? - bne chkeof skip this - pshs u,y save registers - ldx <writemsb get 2 msb's of last write - ldu <writelsb get 2 lsb's of last write - lda <outpath get out path number - os9 I$Seek - bcs errjump exit on error - ldu 2,s get original u back - leau buffer,u point to buffer start - ldd ,s get bytes written - addd <writelsb add on to current 2 lsb positions - std <writelsb save them - ldd ,s get bytes written - bcc vfy000 skip if no carry - leax 1,x bump up 2 msb's - stx <writemsb and save them - -vfy000 ldy #$0100 chars to read for verify - std ,s save it - tsta did we write more than 255 bytes ? - bne vfy010 yes...only read 256 - tfr d,y else xfer amount we did write - -vfy010 ldx 2,s get u register - leax $200,x point to start of verify buffer - lda <outpath get output path number - os9 I$Read read a block in - bcs errexit exit on error - -vfy020 lda ,u+ get char from in buffer - cmpa ,x+ get char from out buffer - bne snderr1 not equal...send write verfiy msg - leay -1,y decrement read count - bne vfy020 if more..loop back - ldd ,s get write count back - subd #$0100 subtract verify buffer size - bhi vfy000 if more left...loop back - puls u,y else restore registers - -chkeof lda <inpath get in path number - ldb #SS.EOF check for end of file - os9 I$GetStt - bcc mainloop nope...loop back - cmpb #E$EOF are we at end of file ? - beq closeout yes...close file - - -chkeof2 cmpb #E$EOF check for end of file - bne errexit nope...error exit - bsr destsnd send msg for disk switch - -closeout lda <outpath get out path number - os9 I$Close close the file - bcc exitok exit w/o error if o.k. - bra errexit else error exit - -errmsg1 fcb $07 - fcc /Error - write verification failed./ - fcb $0D - -snderr1 leax errmsg1,pcr address of 'write verify failed' msg - bsr sndline send it - comb set carry - ldb #$01 set error - bra errexit exit - -chkerr cmpb #E$BPNam was it bad path name - bne errexit error exit - -sndinstr leax Help,pcr get instructions - bsr sndline send them -exitok clrb -errexit os9 F$Exit - -sndline ldy #256 max chars to send - lda #1 std out - os9 I$WritLn write the line - rts - -* Send message and wait for disk switch for single drive copy - -destsnd lda #1 set flag for destination message - -chkdrive tst <single are we doing single drive copy - beq msgrts nope..just exit - pshs y,x else save registers - -sndsrc pshs a save drive flag - tsta do we want source drive ? - bne snddst nope..do destination message - leax srcmsg,pcr point to 'source' msg - ldy #srcmsgsz chars to send - bra msgsnd go send it - -srcmsg fcc /Ready SOURCE/ -srcmsgsz equ *-srcmsg - -dstmsg fcc /Ready DESTINATION/ -dstmsgsz equ *-dstmsg - -cntmsg fcc /, hit C to continue: / -cntmsgsz equ *-cntmsg - - -snddst leax dstmsg,pcr point to 'destination' msg - ldy #dstmsgsz chars to send - -msgsnd lda #1 std out - os9 I$Write write it - leax cntmsg,pcr point to 'hit C ...' - ldy #cntmsgsz get size of message - os9 I$Write write it - leax ,-s back up for dummy buffer - ldy #1 chars to read - clra std in - os9 I$Read read one char - lda ,s+ - pshs y,x,a save registers - leax crmsg,pcr point to <cr> - bsr sndline write it - puls y,x,a restore registers - eora #'C check if its a C - anda #$DF make it upper case - puls a restore drive status - bne sndsrc loop back & send message - puls y,x restore registers -msgrts rts - -Help fcc /Use: Copy <Path1> <Path2> [-s]/ - fcb C$LF - fcc / -s = single drive copy/ - fcc / (Path2 must be complete pathlist)/ - fcb C$CR - -crmsg - fcb C$CR - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/date.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,166 +0,0 @@ -******************************************************************** -* Date - Print Date/Time -* -* $Id: date.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Greetings; September 25, 1996 -* -* This 'Date' module, date5, has been expanded a wee bit to -* make it smart enough to handle dates to the year 2099. -* -* In order to have it do it in a math conversion, I would have had to -* make the 8 bit math it does into 16 bit, and there aren't enough -* registers in the 6809 to pull that off in a reasonable code size. -* So it still does 8 bit math, but only has a 1900-2099 year total -* range. This is more than the recently converted clock for the Disto -* 4n1 I just uploaded, as that clock now has a range from 1980 to 2079. -* A simple subtraction determines if it prints a leading 20, and the -* contents of the register after the subtraction, or it reloads the -* string pointer to point at 19 and reloads the year register to get -* the year 00-99 to print. -* -* This contains no 6309 specific code, so Nitros9 and a 6309 cpu -* are not required to use it, box stock is fine. -* -* Gene Heskett, <gene_heskett@wvlink.mpl.com> -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 5 Made Y2K compliant GH 96/09/25 -* 6 Made compliant with 1900-2155 BGP 99/05/07 - - nam Date - ttl Print Date/Time - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 6 - - mod eom,name,tylg,atrv,start,size - -SysYear rmb 1 -SysMonth rmb 1 -SysDay rmb 1 -SysHour rmb 1 -SysMin rmb 1 -SysSec rmb 1 -u0006 rmb 2 -u0008 rmb 440 -size equ . - -name fcs /Date/ - fcb edition - -DtComa fcs ', ' -MonTable fcs '??? ' - fcs 'January ' - fcs 'February ' - fcs 'March ' - fcs 'April ' - fcs 'May ' - fcs 'June ' - fcs 'July ' - fcs 'August ' - fcs 'September ' - fcs 'October ' - fcs 'November ' - fcs 'December ' - -start pshs x - leax ,u - leau u0008,u - stu <u0006 - os9 F$Time - bsr PrntDate go print the date in buffer - lda [,s++] now, did we have a -t - eora #$54 option on the commandline? - anda #$DF - bne L008C wasn't a t - ldd #C$SPAC*256+C$SPAC else space it out - std ,u++ - bsr L00A1 and go add the time to the buffer -L008C lda #C$CR terminate the line to print - sta ,u+ - lda #1 standard out - ldx <u0006 - ldy #$0028 - os9 I$WritLn and go print it - bcs L009E - clrb -L009E os9 F$Exit -L00A1 ldb <SysHour - bsr L00D2 - ldb <SysMin - bsr L00AB - ldb <SysSec -L00AB lda #$3A - sta ,u+ - bra L00D2 -PrntDate leay >MonTable,pcr - ldb <SysMonth - beq L00C4 - cmpb #$0C - bhi L00C4 -L00BD lda ,y+ - bpl L00BD - decb - bne L00BD -L00C4 bsr PrtStrng - ldb <SysDay - bsr L00D2 - leay >DtComa,pcr - bsr PrtStrng - ldb <SysYear get year - cmpb #100 compare against 100 (2000) - blo is19 if less than, it's 19XX, so branch - subb #100 else subtract 100 - cmpb #100 compare against 100 - blo is20 if less than, it's 20XX, so branch - subb #100 - pshs b - ldb #21 - bra pr -is20 pshs b - ldb #20 - bra pr -is19 pshs b - ldb #19 -pr bsr L00D2 - puls b -L00D2 lda #$2F -L00D4 inca - subb #$64 - bcc L00D4 - sta ,u+ - cmpa #$30 - bne L00E1 - leau -1,u -L00E1 lda #$3A -L00E3 deca - addb #$0A - bcc L00E3 - sta ,u+ - addb #$30 - stb ,u+ - rts - -* * * * * * * * * * * -* make fcs strings printable -PrtStrng lda ,y - anda #$7F - sta ,u+ - lda ,y+ - bpl PrtStrng - rts - -* * * * * * * * * * * -* all done here folks - emod -eom equ * - end -
--- a/CoCoOS9/level2v3/CMDS/ddir.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,265 +0,0 @@ -******************************************************************** -* DDir - Show device table entries -* -* $Id: ddir.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 2 Reworked AD - - nam DDir - ttl program module - -* Disassembled 94/11/05 14:18:05 by Alan DeKok -* -* Future revisions: -* Check <D.Init and DevCnt for entries in device polling table -* check 9/D for size of table - go to V$DESC and look for $87CD - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 2 - - mod eom,name,tylg,atrv,start,size - -MemStrt rmb 2 -DATImg rmb 4 -u0006 rmb 2 -u0008 rmb 1 -u0009 rmb 8 -DevTbl rmb 2 -u0013 rmb 1 -u0014 rmb 80 -u0064 rmb 512 -u0264 rmb 512 -u0464 rmb 712 -size equ . - -name fcs /DDir/ - fcb edition - -L0012 fcc /Device Table at: / -x12Len equ *-L0012 -Header fcc /Device Desc Driver Static File Usr/ - fcb $0D -L004B fcc /Name Port Name Mem Manager Cnt/ - fcb $0D -L0073 fcc /----------- ------------- ------- ---/ -MyCR fcb $0D - -start ldd ,x get parameter bytes - cmpd #$2D3F -? - lbeq Help - - lda #$01 - stu <MemStrt - leax >MyCR,pcr - ldy #$0001 - os9 I$WritLn output a CR - lbcs Exit - leax >L0012,pcr dump out header - ldy #x12Len - os9 I$Write - lbcs Exit - lda #$01 - leax >u0464,u - os9 F$GPrDsc get system process descriptor - bcs Exit - leax <P$DATImg,x - stx <DATImg save address of system's DAT image - bra L00D3 - -ClnExit clrb -Exit os9 F$Exit - -L00D3 ldu <MemStrt - leau >u0064,u - ldd <DATImg - ldx #D.DevTbl I/O device table - ldy #$0002 size of the pointer - os9 F$CpyMem - lbcs Exit - - ldu <MemStrt - leay <u0014,u - sty <u0006 - ldd <u0064,u get the pointer - std <DevTbl save it - lbsr L0222 - lbsr L01E6 - - lda #$01 - leax >MyCR,pcr dump out another CR - ldy #$0001 - os9 I$WritLn - lbcs Exit - - leax >Header,pcr - ldy #$0028 - os9 I$WritLn - lbcs Exit - - leax >L004B,pcr - ldy #$0028 - os9 I$WritLn - lbcs Exit - leax >L0073,pcr - ldy #$0028 - os9 I$WritLn - lbcs Exit - - ldu <MemStrt - leau >u0064,u - ldx <DevTbl - ldy #$0100 - ldd <DATImg - os9 F$CpyMem copy the device table over - lbcs Exit - ldb #256/DEVSIZ - stb <u0008 total number of entries to get - stu <u0009 save pointer to start of DevTbl - -L0155 bsr L0165 - dec <u0008 - lbeq ClnExit if done them all, exit - - ldx <u0009 get current pointer - leax DEVSIZ,x go to the next one - stx <u0009 save the pointer again - bra L0155 and loop back - -L0165 ldu <MemStrt - leay <u0014,u - sty <u0006 - lda #C$SPAC space - ldb #$05 -L0171 sta ,y+ save 5 spaces - decb - bne L0171 - - ldx <u0009 get the current pointer - ldx V$DESC,x descriptor? - bne L017D if exists, go do it - rts otherwise exit - -L017D pshs u - leau >u0264,u to another buffer - ldd <DATImg system DAT image - ldy #200 get 200 bytes - os9 F$CpyMem - puls u - lbcs Exit - - leax >u0264,u point to the start of the buffer - ldd M$Name,x pointer to the name - leax d,x - lda #$05 - bsr L01FF dump out the first 5 bytes of the name? - - leax >u0264,u - lda M$Port,x port address of the device - lbsr L0228 - ldy <u0006 - leay -$01,y - sty <u0006 - ldd M$Port+1,x - lbsr L0222 - lbsr L022A - leax >u0264,u - ldd M$PDev,x device driver name offset - leax d,x - lda #$09 - bsr L01FF dump out 9 bytes of the driver name - ldx <u0009 - ldd V$STAT,x - lbsr L0222 - lbsr L022A - leax >u0264,u - ldd M$FMGr,x file manager name offset - leax d,x point to it - lda #$09 - bsr L01FF dump out 9 bytes of the file manager's name - ldx <u0009 - lda V$USRS,x use count - lbsr L0228 print it - ldx <u0006 - leax -$01,x - bra L01E8 - -L01E6 ldx <u0006 - -L01E8 lda #C$CR save a CR in memory - sta ,x - ldu <MemStrt - leax <u0014,u to the buffer - ldy #$0050 80 characters max. - lda #$01 - os9 I$WritLn dump the buffer out - lbcs Exit - rts - -L01FF sta <u0013 dump out A bytes at X - clrb - bra L0207 - -L0204 lbsr L0242 -L0207 incb - cmpb <u0013 - bcc L0219 - lda ,x+ - bpl L0204 - anda #$7F - lbsr L0242 dump it out - cmpb <u0013 - bcc L0221 - -L0219 lbsr L022A - incb - cmpb <u0013 - bcs L0219 -L0221 rts - -L0222 pshs b - bsr L022E - puls a -L0228 bsr L022E -L022A lda #C$SPAC output a space - bra L0242 - -L022E tfr a,b - lsra - lsra - lsra - lsra - bsr L0238 - tfr b,a -L0238 anda #$0F get the number - cmpa #$0A >10? - bcs L0240 no, make it a number - adda #$07 if so, make it A-F -L0240 adda #$30 -L0242 pshs x - ldx <u0006 get buffer pointer - sta ,x+ - stx <u0006 - puls pc,x - -Help lda #1 to STDOUT - leax HMsg,pcr - ldy #HLen - OS9 I$Write - clrb - OS9 F$Exit - -HMsg fcc /ddir: NitrOS-9 v1.21 or greater only./ - fdb C$CR,C$LF -HLen equ *-HMsg - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/defsfile Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ - use ../defsfile - use scfdefs
--- a/CoCoOS9/level2v3/CMDS/deiniz.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -******************************************************************** -* DeIniz - Deinitialize a device -* -* $Id: deiniz.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 3 Original Tandy distribution version BGP - - nam DeIniz - ttl Deinitialize a device - -* Disassembled 98/09/10 22:57:23 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 3 - - mod eom,name,tylg,atrv,start,size -u0000 rmb 2 -u0002 rmb 330 -size equ . - -name fcs /DeIniz/ - fcb edition - -start lda ,x - cmpa #C$CR - beq L0020 - bsr L0041 - bra L0030 -L001E bsr L0041 -L0020 bsr L0034 - bcs L002C - lda ,x - cmpa #C$CR - bne L001E - ldb #E$EOF -L002C cmpb #E$EOF - bne L0030 -L0030 clrb - os9 F$Exit -L0034 clra - leax u0002,u - ldy #80 - os9 I$ReadLn - bcc L0040 -L0040 rts -L0041 lda #C$SPAC -L0043 cmpa ,x+ - beq L0043 - leax -1,x - stx <u0000 - lda #PDELIM - cmpa ,x - bne L0053 - leax 1,x -L0053 clra - os9 I$Attach - bcs L0070 - os9 I$Detach - bcs L0070 - os9 I$Detach - bcs L0070 - lda ,x+ - cmpa #C$COMA - beq L0041 - lda ,-x - cmpa #C$CR - bne L0041 - rts -L0070 pshs b - lda #$02 - ldx <u0000 - ldy #80 - os9 I$WritLn - puls b - os9 F$PErr - rts - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/del.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -******************************************************************** -* Del - File deletion utility -* -* $Id: del.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 3 Original Tandy distribution version BGP - - nam Del - ttl File deletion utility - -* Disassembled 98/09/10 22:43:13 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 5 - - mod eom,name,tylg,atrv,start,size - -InPath rmb 1 - rmb 450 -size equ . - -name fcs /Del/ - fcb edition - -HelpMsg fcb C$LF - fcc "Use: Del [-x] <path> {<path>} [-x]" - fcb C$CR - -start lda ,x - cmpa #C$CR - beq L0093 - lda #1 - sta <InPath - bsr L0054 - leax -1,x -L0043 lda <InPath - os9 I$DeletX - bcs L0051 - lda ,x - cmpa #C$CR - bne L0043 - clrb -L0051 os9 F$Exit -L0054 lda ,x+ - cmpa #C$SPAC - beq L0054 - cmpa #C$COMA - beq L0054 - cmpa #'- - bne L0067 - bsr L0086 - leax 1,x - rts -L0067 pshs x -L0069 lda ,x+ - cmpa #C$SPAC - beq L0069 - cmpa #C$COMA - beq L0069 - cmpa #'- - beq L007E - cmpa #C$CR - bne L0069 -L007B puls x - rts -L007E bsr L0086 - lda #C$CR - sta -2,x - bra L007B -L0086 lda ,x+ - eora #$58 - anda #$DF - bne L0093 - lda #$04 - sta <InPath - rts -L0093 leax >HelpMsg,pcr - ldy #80 - clra - os9 I$WritLn - clrb - bra L0051 - - emod -eom equ * - end -
--- a/CoCoOS9/level2v3/CMDS/deldir.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,300 +0,0 @@ -******************************************************************** -* Deldir - Delete a directory -* -* $Id: deldir.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 3 Original Tandy distribution version BGP - - nam Deldir - ttl Delete a directory - -* Disassembled 98/09/10 23:18:11 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 3 - - mod eom,name,tylg,atrv,start,size - -u0000 rmb 2 -u0002 rmb 1 -u0003 rmb 1 -u0004 rmb 24 -u001C rmb 4 -u0020 rmb 4 -u0024 rmb 10 -u002E rmb 6 -u0034 rmb 15 -u0043 rmb 1 -u0044 rmb 1 -u0045 rmb 1 -u0046 rmb 2 -u0048 rmb 2 -u004A rmb 2 -u004C rmb 334 -size equ . - -name fcs /Deldir/ - fcb edition - -start bsr L0050 - bcs L0042 - bsr L0091 - bcc L002B - lbsr L010C - bcs L0042 - lbsr L01C3 - bcs L0042 - lbsr L0242 - bcs L0042 -L002B lda <u0002 - os9 I$Close - bcs L004D - ldx <u0000 - os9 I$Delete - bcs L004D - lda ,x - cmpa #$0D - bne start - clrb - bra L004D -L0042 pshs b - lda <u0002 - os9 I$Close - puls b - orcc #$01 -L004D os9 F$Exit -L0050 stx <u0000 - lda #$03 - os9 I$Open - bcs L005D - sta <u0002 - bra L0089 -L005D ldx <u0000 - lda #$81 - os9 I$Open - bcs L0090 - sta <u0002 -L0068 ldx <u0000 - os9 F$PrsNam - clra - incb - std <u0046 - lda ,y - cmpa #$2F - bne L0089 - lda #$0D - sta ,y+ - lda #$03 - ldx <u0000 - os9 I$ChgDir - bcs L0090 - sty <u0000 - bra L0068 -L0089 leax <-u001C,u - stx <u0044 - clr <u0003 -L0090 rts -L0091 lda <u0002 - ldb #$00 - leax u0004,u - os9 I$GetStt - bcs L00AB - ldx <u0044 - lda <$33,x - anda #$80 - beq L00AA - clrb - orcc #$01 - bra L00AB -L00AA clrb -L00AB rts -L00AC fcb C$LF - fcc "Deleting directory file. " - fcb C$LF - fcc "List directory, delete directory, or quit ? (l/d/q) " -L00FB fcb C$LF - fcc "Continue? (y/n) " -L010C tstb - bne L013E - lda #$01 - leax <L00AC,pcr - ldy #$004F - os9 I$WritLn -L011B bcs L013E - bsr L0179 - bcs L013E - ldb <u0003 - cmpb #$01 - bne L012A - clrb - bra L013E -L012A bsr L0145 -L012C bcs L013E - leax <L00FB,pcr - ldy #$0011 - lda #$01 - os9 I$WritLn - bcs L013E - bsr L0179 -L013E rts -L013F fcc "DIR" - fcb C$CR -L0143 fcc "E " -L0145 pshs u - leau <u004A,u - pshs u - ldb #$02 - leax <L0143,pcr - lbsr L0270 - ldx <u0000 - ldd <u0046 - decb - lbsr L0270 - lda #$0D -L015E sta ,u+ - tfr u,d - subd ,s - tfr d,y - puls u - leax <L013F,pcr - lda #$11 - clrb - os9 F$Fork - puls u - bcs L013E - os9 F$Wait -L0178 rts -L0179 leax <u004A,u - ldy #$0050 - lda #$00 - os9 I$ReadLn - bcs L01B8 -L0187 lda ,x+ - cmpa #$20 - beq L0187 - eora #$59 - anda #$DF - beq L01AD - lda ,-x - eora #$4C - anda #$DF - beq L01A9 - lda ,x - eora #$44 - anda #$DF - beq L01A5 - bra L01B4 -L01A5 ldb #$01 - bra L01AF -L01A9 ldb #$02 - bra L01AF -L01AD ldb #$04 -L01AF stb <u0003 - clrb - bra L01B8 -L01B4 ldb #$01 - orcc #$01 -L01B8 rts -L01B9 fcc "DELDIR" - fcb C$CR -L01C0 fcc ".." - fcb C$CR -L01C3 ldb <u0003 - bitb #$05 - beq L0210 - lda <u0002 - pshs u - ldu #$0040 -L01D0 ldx #$0000 - os9 I$Seek - puls u -L01D8 bsr L0215 - bcs L0209 - ldx <u0000 - lda #$03 - os9 I$ChgDir - bcs L0214 - ldy <u0048 - clrb - lda #$11 - pshs u - leau <u0024,u - leax <L01B9,pcr - os9 F$Fork - puls u - bcs L0214 - os9 F$Wait - bcs L0214 - leax <L01C0,pcr - lda #$03 - os9 I$ChgDir - bcc L01D8 -L0209 cmpb #$D3 - bne L0214 - clrb - bra L0214 -L0210 ldb #$01 - orcc #$01 -L0214 rts -L0215 lda <u0002 - leax <u0024,u - ldy #$0020 - os9 I$Read - bcs L0238 - lda ,x - beq L0215 - os9 F$PrsNam - lda -$01,y - anda #$7F - sta -$01,y - lda #$0D - sta ,y - clra - incb - std <u0048 -L0238 rts -L0239 fcc "ATTR" - fcb C$CR -L023E fcc " -d" - fcb C$CR -L0242 pshs u - leau <u004A,u - pshs u - ldd <u0046 - decb - ldx <u0000 - bsr L0270 - leax <L023E,pcr - ldb #$04 - bsr L0270 - tfr u,d - subd ,s - tfr d,y - puls u - leax <L0239,pcr - clrb - lda #$11 - os9 F$Fork - bcs L026D - os9 F$Wait -L026D puls u - rts -L0270 decb - lda ,x+ - sta ,u+ - tstb - bne L0270 - rts - - emod -eom equ * - end -
--- a/CoCoOS9/level2v3/CMDS/dir.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,380 +0,0 @@ -******************************************************************** -* Dir - Show directory -* -* $Id: dir.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* This dir initially started from the dir command that came with -* the OS-9 Level Two package, then incorporated Glenside's Y2K -* fix. -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 10 Incorporated Glenside Y2K fixes BGP 99/05/11 - - nam Dir - ttl Show directory - - ttl program module - -* Disassembled 99/04/11 16:36:40 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $00 -edition set 10 - - mod eom,name,tylg,atrv,start,size - -u0000 rmb 2 -u0002 rmb 1 -u0003 rmb 1 -u0004 rmb 1 -u0005 rmb 1 -u0006 rmb 2 -u0008 rmb 1 -u0009 rmb 1 -u000A rmb 1 -u000B rmb 1 -u000C rmb 1 -u000D rmb 3 -u0010 rmb 3 -u0013 rmb 29 -u0030 rmb 1 -u0031 rmb 1 -u0032 rmb 1 -u0033 rmb 1 -u0034 rmb 2 -u0036 rmb 6 -u003C rmb 2 -u003E rmb 2 -u0040 rmb 530 -size equ . - -name fcs /Dir/ - fcb edition - -L0011 fcb C$LF - fcs " Directory of " -L0020 fcc "." - fcb C$CR -L0022 fcc "@" - fcb C$CR -L0024 fcb C$CR,C$LF - fcc "Owner Last modified Attributes Sector Bytecount Name" - fcb C$CR,C$LF - fcc "----- ---------------- ---------- ------ --------- ----------" - fcb C$CR,C$LF -L00A0 fcb C$CR,C$LF - fcc "Modified on Owner Name" - fcb C$CR,C$LF - fcc " Attr Sector Size" - fcb C$CR,C$LF - fcc "===============================" - fcb C$CR - fcb C$LF - -start leay <u0040,u - sty <u000B - clr <u0004 - clr <u0003 - clr <u000A - lda #$10 - ldb #$30 - std <u0008 - pshs y,x,b,a - lda #$01 - ldb #$26 - os9 I$GetStt - bcc L0120 - cmpb #$D0 - beq L012D - puls y,x,b,a - lbra L0268 -L0120 cmpx #$0040 - bge L012D - inc <u000A - lda #$0A - ldb #$14 - std <u0008 -L012D puls y,x,b,a - lbsr L0370 - lda ,-x - cmpa #$0D - bne L013C - leax >L0020,pcr -L013C stx <u0000 - lda #$81 - ora <u0004 - pshs x,a - os9 I$Open - sta <u0002 - puls x,a - lbcs L0268 - os9 I$ChgDir - lbcs L0268 - pshs x - leay >L0011,pcr - lbsr L02E6 - ldx <u0000 -L0161 lda ,x+ - lbsr L02B7 - cmpx ,s - bcs L0161 - leas $02,s - lbsr L0370 - lbsr L02B5 - lbsr L02B5 - leax u000D,u - os9 F$Time - leax <u0010,u - lbsr L0328 - lbsr L02F5 - tst <u0003 - beq L01B3 - lda #$01 - ora <u0004 - leax >L0022,pcr - os9 I$Open - lbcs L0268 - sta <u0005 - tst <u000A - bne L01A6 - leax >L0024,pcr - ldy #$007C - bra L01AE -L01A6 leax >L00A0,pcr - ldy #$005A -L01AE lda #$01 - os9 I$Write -L01B3 lda <u0002 - ldx #$0000 - pshs u - ldu #$0040 - os9 I$Seek - puls u - lbra L0253 -L01C5 tst <u0013 - lbeq L0253 - tst <u0003 - bne L01E8 - leay <u0013,u - lbsr L02E6 -L01D5 lbsr L02B5 - ldb <u000C - subb #$40 - cmpb <u0009 - bhi L022C -L01E0 subb <u0008 - bhi L01E0 - bne L01D5 - bra L0253 -L01E8 pshs u - lda <u0032 - clrb - tfr d,u - ldx <u0030 - lda <u0005 - os9 I$Seek - puls u - bcs L0268 - leax <u0033,u - ldy #$000D - os9 I$Read - bcs L0268 - tst <u000A - bne L0231 - ldd <u0034 - clr <u0006 - bsr L0274 - lbsr L02B5 - lbsr L030B - lbsr L02B5 - lbsr L02D3 - lbsr L02B5 - lbsr L02B5 - bsr L026E - bsr L0280 - leay <u0013,u - lbsr L02E6 -L022C lbsr L02F5 - bra L0253 -L0231 lbsr L030B - ldd <u0034 - clr <u0006 - bsr L0274 - bsr L02B5 - leay <u0013,u - lbsr L02E6 - lbsr L02F5 - lbsr L02D3 - bsr L02B5 - bsr L02B5 - bsr L026E - bsr L0280 - lbsr L02F5 -L0253 leax <u0013,u - ldy #$0020 - lda <u0002 - os9 I$Read - lbcc L01C5 - cmpb #$D3 - bne L0268 - clrb -L0268 lbsr L02F5 - os9 F$Exit -L026E lda <u0030 - bsr L0298 - ldd <u0031 -L0274 bsr L029A - tfr b,a - bsr L028E - inc <u0006 - bsr L029C - bra L02B5 -L0280 ldd <u003C - bsr L0298 - tfr b,a - bsr L029A - bsr L02B5 - ldd <u003E - bra L0274 -L028E pshs a - lsra - lsra - lsra - lsra - bsr L029E - puls pc,a -L0298 clr <u0006 -L029A bsr L028E -L029C anda #$0F -L029E tsta - beq L02A3 - sta <u0006 -L02A3 tst <u0006 - bne L02AB - lda #$20 - bra L02B7 -L02AB adda #$30 - cmpa #$39 - bls L02B7 - adda #$07 - bra L02B7 -L02B5 lda #$20 -L02B7 pshs x - ldx <u000B - cmpx #$0090 - bcs L02C4 - bsr L02F1 - ldx <u000B -L02C4 sta ,x+ - stx <u000B - puls pc,x -L02CA fcc "dsewrewr" - fcb $FF -L02D3 fcb $D6,$33,$30,$8C,$F2 - lda ,x+ -L02DA lslb - bcs L02DF - lda #$2D -L02DF bsr L02B7 - lda ,x+ - bpl L02DA - rts -L02E6 lda ,y - anda #$7F - bsr L02B7 - lda ,y+ - bpl L02E6 - rts -L02F1 pshs y,x,b,a - bra L02FB -L02F5 pshs y,x,b,a - lda #$0D - bsr L02B7 -L02FB leax <u0040,u - stx <u000B - ldy #$0050 - lda #$01 - os9 I$WritLn - puls pc,y,x,b,a -L030B leax <u0036,u -L030E bsr L0338 - bsr L0324 - bsr L0324 - bsr L02B5 - bsr L034F - tst <u000A - beq L0320 - bsr L034F - bra L02B5 -L0320 bsr L0332 - bra L02B5 -L0324 lda #$2F - bra L0334 -L0328 tst <u000A - bne L0330 - leax u000D,u - bra L030E -L0330 bsr L034F -L0332 lda #$3A -L0334 bsr L02B7 - bra L034F -L0338 lda #$AE - ldb ,x -L033C inca - subb #$64 - bcc L033C - stb ,x - tfr a,b - tst <u000A - bne L034B - bsr L035F -L034B ldb ,x+ - bra L035F -L034F ldb ,x+ - lda #$2F -L0353 inca - subb #$64 - bcc L0353 - cmpa #$30 - beq L035F - lbsr L02B7 -L035F lda #$3A -L0361 deca - addb #$0A - bcc L0361 - lbsr L02B7 - tfr b,a - adda #$30 - lbra L02B7 -L0370 ldd ,x+ - cmpa #$20 - beq L0370 - cmpa #$2C - beq L0370 - eora #$45 - anda #$DF - bne L0388 - cmpb #$30 - bcc L039A - inc <u0003 - bra L0370 -L0388 lda -$01,x - eora #$58 - anda #$DF - bne L039A - cmpb #$30 - bcc L039A - lda #$04 - sta <u0004 - bra L0370 -L039A rts - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/dirm.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,256 +0,0 @@ -******************************************************************** -* DirM - Show module directory -* -* $Id: dirm.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Changes: -* -* Added internal print buffer, so an I$Write call is not performed for every -* byte printed out. Halves printout time. -* -* Added SS.ScSiz check, and goes to 32-column output if display is 40 columns -* or less. -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* ? Disassembled at 8:18:38 AD 94/11/10 -* 5 Added internal print buffer, so an I$Write AD ??/??/?? -* call is not performed for every byte printed -* out. Halves printout time. Added SS.ScSiz -* check, and goes to 32-column output if display -* is 40 columns or less. - - nam DirM - ttl Show module directory - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 5 - -Bound equ 40 width at which change is made to 32-col printing - - - mod eom,name,tylg,atrv,start,size - -MD.DAT rmb 2 -MD.Crnt rmb 2 -MD.Strt rmb 2 -MD.End rmb 2 -MD.MPDAT rmb 5 -PntCnt rmb 1 - -*Single rmb 1 single entry/line? -Width rmb 1 width of the output device - -PBuffer rmb 31 internal print buffer -Buffer rmb 40 room for a name buffer -MD.Data rmb 2048 size of the module directory - rmb 200 for the stack -size equ . -name equ * - fcs /DirM/ - fcb edition - -H2 fcc / Bk Ofst Size Ty At Link Name/ - fcb $0d -H3 fcc / -- ---- ---- -- -- ---- -----/ -H1 fcb $0d - -* Believe it or not, all this internal crap is still smaller than having -* a different version of the header for 32/80 columns. -Dump ldu #PBuffer output print buffer - lda ,x+ get first character - sta ,u+ move it over - ldb <Width get the width - -D.01 cmpa #C$CR CR? - beq D.Print yup, dump it out - - lda ,x+ grab a character - sta ,u+ save it - cmpa #C$SPAC was it a space? - bne D.01 no, just save it - - cmpb #Bound 40-column screen? - bls D.01 yes, don't add the space - sta ,u+ if a space, save another copy of it - bra D.01 - -D.Print lda #$01 to STDOUT - ldx #PBuffer - ldy #50 max. size of data to print - OS9 I$WritLn dump it out - bcs Exit - rts - -start equ * - stu <MD.DAT u=$0000 always on startup in OS-9 LII - ldd #$0100+SS.ScSiz stdout, get screen size - OS9 I$GetStt - bcs s.01 - tfr x,d - bra s.02 save actual screen size - -s.01 cmpb #E$UnkSvc - bne Exit - ldb #80 default to 80 columns if error -s.02 stb <Width - - leax <H1,pcr print out initial CR - bsr Dump - leax >H2,pcr header of names - bsr Dump - leax <H3,pcr and hyphens - bsr Dump - - ldx #MD.Data - os9 F$GModDr - bcs Exit - stu <MD.Strt save start address of system module dir - - sty <MD.End save end of the module directory - bra L00B5 - -ClnExit clrb -Exit os9 F$Exit - -L00AD ldx <MD.Crnt - leax MD$ESIZE,x go to the next entry - cmpx <MD.End - bcc ClnExit - -L00B5 stx <MD.Crnt - ldu #PBuffer temporary print buffer - ldd MD$MPDAT,x get module DAT image - beq L00AD if zero, skip this entry - pshs d - cmpd <MD.DAT - beq L00CD - std <MD.DAT save the current DAT image - lda #'- start of this block - fcb $8C skip 2 bytes - -L00CD lda #C$SPAC space - sta ,u+ store it in the data buffer -L00D0 puls d restore current DAT image - subd <MD.Strt take out start of the block - ldy #MD.Data point to module directory data - leay d,y to the DAT image within it - tfr y,d - std <MD.MPDAT save pointer to DAT - lda MD$MPtr,x module pointer - lsra - lsra - lsra - lsra turn address into block offset - anda #$0E keep low bits only - inca DAT image is (junk),(block) - lda a,y get the starting block number - bsr L0165 dump it out - ldd MD$MPtr,x get real pointer - anda #$1F get offset inside block - bsr L0159 print it out - ldx MD$MPtr,x and get pointer again - - pshs u save print buffer pointer - ldu #Buffer to a name buffer - ldy #$000A move first 10 bytes of the module? - ldd <MD.MPDAT - os9 F$CpyMem copy it over - puls u restore print buffer ptr - bcs Exit - - ldd <Buffer+M$Size - bsr L0159 print out the size of the module - lda <Buffer+M$Type - bsr L0165 print out the Ty/Lg - lda <Buffer+M$Revs - bsr L0165 print out At/Rv - ldx <MD.Crnt get current module pointer - ldd MD$Link,x link count - bsr L0159 - ldd <Buffer+M$Name - ldx <MD.Crnt - ldx MD$MPtr,x start address of the module - leax d,x point to the name - - pshs u save print buffer ptr - ldu #Buffer to the buffer again - lda <Width - cmpa #Bound - bhi n.01 - leau -6,u discount 6 spaces - -n.01 ldd <MD.MPDAT - ldy #$0028 copy over 40 bytes of the name - os9 F$CpyMem - tfr u,x save copy of the start of the buffer - puls u restore print buffer ptr - lbcs Exit - - ldb #39 maximum number of characters to check -L013F lda ,x+ get a character - bpl L013F if it's OK - anda #$7F force it to be printable - sta -$01,x save it again - lda #C$CR drop a CR after the last character of the name - - sta ,x save it - ldx #PBuffer point to the start of the buffer - ldy #$0040 64 characters - lda #$01 - os9 I$WritLn print out the name - lbra L00AD start all over again - -* Print out a 2-byte hex number in D -L0159 pshs b save low order character - ldb #$03 3 digits to print out - bsr L0171 print out A - puls a restore low byte - bsr L0173 print it, too - bra L0167 and dump out 2 spaces - -* print out a 1-digit hex number in A -L0165 bsr L016F -L0167 lda <Width check the width - cmpa #Bound - bls L016B if 40 columns or smaller, don't print extra space - lda #C$SPAC space - sta ,u+ -L016B lda #C$SPAC and another space - sta ,u+ - rts - -L016F ldb #$01 -L0171 stb <PntCnt -L0173 tfr a,b save a copy of the number in B - lsra - lsra - lsra - lsra move high nibble into the lower nibble - bsr L017D print out lower nibble of A as hex number - tfr b,a restore lower nibble - -L017D anda #$0F make 0-15 - beq L019C if zero, skip printing it out - clr <PntCnt - cmpa #$0A higher than A? - bcs L0189 no, add in ascii zero - adda #$07 yes, add difference between 9 and A -L0189 adda #'0 turn it into an ascii number - -Print sta ,u+ save the character in the buffer - rts - -L019C dec <PntCnt count down of number of characters to print - bmi L0189 if last one, print out a zero - bra L016B otherwise print out a space - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/display.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,191 +0,0 @@ -******************************************************************** -* Display - Character display utility -* -* $Id: display.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 2 Original Tandy/Microware version -* 3 Added decimal, text features AD - - nam Display - ttl Character display utility - -* Disassembled 94/12/10 12:27:37 by Alan DeKok - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 3 - - mod eom,name,tylg,atrv,start,size - - org 0 -T.Delim rmb 1 text delimiter -D.Len rmb 1 length of decimal bytes: 0=1 byte, 1=2 bytes -D.Word rmb 2 decimal byte to output - rmb 200 room for the stack -size equ . - -name fcs /Display/ - fcb edition - -Start pshs x save start address of text to output - leay ,x destination buffer=input buffer (always shrinks it) - leau Hex,pcr point to routine to ouput hex characters - -Loop jsr ,u grab a character - bcs S.01 if error, dump it - stb ,x+ save character in internal buffer - bra Loop and get another one - -S.01 tfr x,d get current pointer into D - subd ,s take out start address - tfr d,y length of the data to print - puls x restore start address - - lda #$01 to STDOUT - os9 I$Write dump it out - bcs Exit exit if error - -ClnExit clrb no error -Exit os9 F$Exit and exit - -Do.Hex leau <Hex,pcr point to main hex routine -Hex ldb ,y+ grab a character - cmpb #', comma? - bne Hex.2 nope, do more checks - -Hex.1 ldb ,y+ grab another character -Hex.2 cmpb #C$SPAC space? - beq Hex.1 yup, skip it - - cmpb #'/ slash? - beq Do.Text yes, go output straight text - cmpb #'\ back-slash? - beq Do.Text yes, output straight text - cmpb #'" double-quote? - beq Do.Text yes, output straight text - - cmpb #'. period? - beq Decimal yes, do a one-time output of decimal byte(s) - - leay -1,y - bsr Nibble turn character in B into a nibble - bcs OK.2 - pshs b save high nibble - bsr Nibble get current character - bcs Hex.3 skip move if next character is not a number - lsl ,s move low nibble into high nibble - lsl ,s - lsl ,s - can't do it before now, because hex number - lsl ,s might be 1 digit long - - addb ,s add high nibble to low nibble - stb ,s save it -Hex.3 clrb no error - puls b,pc restore byte to output, and exit - -Nibble ldb ,y get the current character - cmpb #C$CR end of parameters? - beq Error yes, exit - - cmpb #'0 error if B<'0' - blo Error - - cmpb #'9 - bls OK allow '0' to '9' inclusive - - cmpb #'A error if B<'A' - blo Error - - andb #$DF make the character lowercase - cmpb #'F - bhi Error error if B>'F' - - subb #$07 map 'A' down to $0A -OK subb #$30 take out ascii zero, now B=nibble 0-F - -OK.0 leay 1,y -OK.1 clra set to no error -OK.2 rts - -Error comb set carry - rts - -Do.Text leau <Text,pcr - stb <T.Delim save text delimiter -Text ldb ,y+ grab a character - cmpb <T.Delim text delimiter again? - beq T.Check check for some stuff - cmpb #C$CR end of text? - beq Error yes, signal it - bra OK.1 otherwise allow the character - -T.Check lda ,y get the next character after the delimiter - cmpa <T.Delim is it the same, i.e. 2 delimiters in a row? - beq OK.0 yes, skip the second and output the first - bra Do.Hex otherwise go to hex mode again - -Decimal lda ,y get next character - anda #$DF make it uppercase - cmpa #'W force a word? - bne D.One no, do a straight decimal conversion - leay 1,y skip the 'w' character - lda #1 force 2 bytes - fcb $21 skip the 'clra' following - -D.One clra force 1 byte (may expand to 2) - sta <D.Len save length of the decimal character - - clra start off at zero - clrb - std <D.Word sav starting value of the decimal word to output - -D.Read lda ,y+ grab a decimal digit - cmpa #C$CR done the list? - beq D.CR yes, output the characters and then exit - - cmpa #'0 smaller than zero? - bls D.Done0 yes, we're done this decimal digit - cmpa #'9 - bhi Error - suba #'0 convert ascii to number - - pshs a save the character for later - ldd <D.Word get the current word - aslb - rola N*2 - aslb - rola N*4 - aslb - rola N*8 - addd <D.Word N*8+N=N*9 - addd <D.Word N*9+N=N*10 - addb ,s+ add in our latest character - adca #0 make it 16-bit - std <D.Word - bra D.Read go get another character - -D.Done0 leay -1,y point to character we've tried to convert to dec. -D.Done ldd <D.Word get the byte(s) to output - tst <D.Len check length flag - bne D.Two if forcing 2 bytes, output them - tst <D.Word is high byte zero? - beq D.Exit yes, only output low order byte - -D.Two sta ,x+ save high byte in the output buffer -D.Exit clra - rts - -D.CR leau Error,pcr point to error routine: no more characters - bra D.Done output these characters, and the exit - - emod -eom equ * - end -
--- a/CoCoOS9/level2v3/CMDS/dmem.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,141 +0,0 @@ -******************************************************************** -* DMem - Dump memory from system -* -* $Id: dmem.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 2 Written by Kevin Darling - - nam DMem - ttl Dump memory from system - -* Disassembled 98/09/14 19:24:59 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 2 - - mod eom,name,tylg,atrv,start,size - -u0000 rmb 1 -u0001 rmb 1 -u0002 rmb 1 -u0003 rmb 2 -u0005 rmb 3 -u0008 rmb 64 -u0048 rmb 1 -u0049 rmb 447 -u0208 rmb 4296 -size equ . - -name fcs /DMem/ - fcb edition - -L0012 clr <u0000 - clr <u0001 -L0016 lda ,x+ - cmpa #C$SPAC - beq L0046 - cmpa #C$CR - beq L0046 - suba #$30 - cmpa #$0A - bcs L002A - anda #$07 - adda #$09 -L002A lsla - lsla - lsla - lsla - sta <u0002 - ldd <u0000 - rol <u0002 - rolb - rola - rol <u0002 - rolb - rola - rol <u0002 - rolb - rola - rol <u0002 - rolb - rola - std <u0000 - bra L0016 -L0046 leax -1,x - ldd <u0000 - rts - -start lbsr L0128 - lbeq L0119 - cmpa #'- - bne L006D - leax 1,x - bsr L0012 - tfr b,a - pshs x - leax >u0008,u - os9 F$GPrDsc - lbcs L00BC - puls x - bra L0073 -L006D bsr L0012 - clr <u0048 - stb <u0049 -L0073 lbsr L0128 - lbeq L0119 - lbsr L0012 - std <u0003 - lbsr L0128 - beq L0092 - lbsr L0012 - cmpd #$1000 - bls L0095 - ldd #$1000 - bra L0095 -L0092 ldd #$0100 -L0095 std <u0005 - leax >u0048,u - tfr x,d - ldy <u0005 - ldx <u0003 - pshs u - leau >u0208,u - os9 F$CpyMem - puls u - bcs L00BC - ldy <u0005 - leax >u0208,u - lda #$01 - os9 I$Write -L00BB clrb -L00BC os9 F$Exit - -HelpTxt fcc "Use: DMem <block> <offset> [<length>] ! dump" - fcb C$LF - fcc " or: DMem -<id> <offset> [<length>] ! dump" - fcb C$CR -HelpTxtL equ *-HelpTxt - -L0119 leax >HelpTxt,pcr -L011D ldy #HelpTxtL - lda #$02 - os9 I$WritLn - bra L00BB -L0128 lda ,x+ - cmpa #C$SPAC - beq L0128 - leax -1,x - cmpa #C$CR - rts - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/dump.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,218 +0,0 @@ -******************************************************************** -* Dump - Show file contents in hex -* -* $Id: dump.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 6 Original Tandy distribution version - - nam Dump - ttl Show file contents in hex - -* Disassembled 98/09/14 23:34:34 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 6 - - mod eom,name,tylg,atrv,start,size - -u0000 rmb 1 -u0001 rmb 1 -u0002 rmb 1 -u0003 rmb 1 -u0004 rmb 1 -u0005 rmb 1 -u0006 rmb 2 -u0008 rmb 2 -u000A rmb 2 -u000C rmb 16 -u001C rmb 5 -u0021 rmb 1 -u0022 rmb 16 -u0032 rmb 8 -u003A rmb 17 -u004B rmb 16 -u005B rmb 201 -size equ . - -name fcs /Dump/ - fcb edition -L0012 fcc "Addr 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 2 4 6 8 A C E" - fcb C$CR -L0051 fcc "---- ---- ---- ---- ---- ---- ---- ---- ---- ----------------" -L0090 fcb C$CR -L0091 fcb C$LF - fcb C$LF - fcb C$LF - fcb C$LF - fcc " 0 1 2 3 4 5 6 7 0 2 4 6" - fcb C$LF - fcc "ADDR 8 9 A B C D E F 8 A C E"" - fcb C$CR -L00D1 fcc "==== +-+-+-+-+-+-+-+- + + + + " - fcb C$CR - -L00F0 lda ,x+ - cmpa #$20 - beq L00F0 - leax -$01,x - cmpa #$0D - rts - -start lda #63 - sta <u000A - clr <u0000 - pshs y,x,b,a - lda #1 - ldb #SS.ScSiz - os9 I$GetStt get size of window - bcc L0115 - cmpb #E$UnkSvc - beq L0120 - puls y,x,b,a - lbra L01FE -L0115 cmpx #63 - bge L0120 - ldb #31 - stb <u000A - inc <u0000 -L0120 puls y,x,b,a - ldd #$0001 - std <u0001 - bsr L00F0 - beq L0147 - lda #READ. - os9 I$Open - lbcs L01FE - sta <u0001 - bsr L00F0 - beq L0147 - lda #WRITE. - ldb #$0B - os9 I$Create - lbcs L01FE - sta <u0002 -L0147 ldd #$0000 -L014A std <u0003 - tst <u0000 - beq L0156 - bitb #$3F - bne L017D - bra L0159 -L0156 tstb - bne L017D -L0159 leax >L0090,pcr - lbsr L01EF - leax >L0012,pcr - tst <u0000 - beq L016C - leax >L0091,pcr -L016C lbsr L01EF - leax >L0051,pcr - tst <u0000 - beq L017B - leax >L00D1,pcr -L017B bsr L01EF -L017D leax <u001C,u - lda #$20 - ldb <u000A -L0184 sta ,x+ - decb - bne L0184 - leax <u001C,u - stx <u0006 - lda <u0003 - bsr L0201 - lda <u0004 - bsr L0201 - leax <u0022,u - stx <u0006 - leax <u004B,u - stx <u0008 - ldy #$0010 - tst <u0000 - beq L01B6 - leax <u0021,u - stx <u0006 - leax <u0032,u - stx <u0008 - ldy #$0008 -L01B6 leax u000C,u - lda <u0001 - os9 I$Read - bcs L01F9 - tfr y,d - stb <u0005 -L01C3 bsr L0223 - decb - beq L01D5 - bsr L0223 - tst <u0000 - bne L01D2 - lda #$20 - bsr L0219 -L01D2 decb - bne L01C3 -L01D5 lda #$0D - sta <u005B - tst <u0000 - beq L01DF - sta <u003A -L01DF leax <u001C,u - bsr L01EF - bcs L01FE - ldd <u0003 - addb <u0005 - adca #$00 - lbra L014A -L01EF ldy #$0050 - lda <u0002 - os9 I$WritLn - rts -L01F9 cmpb #E$EOF - bne L01FE - clrb -L01FE os9 F$Exit -L0201 pshs a - lsra - lsra - lsra - lsra - bsr L020F - lda ,s - bsr L020F - puls pc,a -L020F anda #$0F - cmpa #$09 - bls L0217 - adda #$07 -L0217 adda #$30 -L0219 pshs x - ldx <u0006 - sta ,x+ - stx <u0006 - puls pc,x -L0223 lda ,x+ - bsr L0201 - pshs x,a - anda #$7F - cmpa #$20 - bcs L0233 - cmpa #$7E - bcs L0235 -L0233 lda #$2E -L0235 ldx <u0008 - sta ,x+ - stx <u0008 - puls pc,x,a - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/echo.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -******************************************************************** -* Echo - Echo text -* -* $Id: echo.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 5 Original Tandy distribution version - - nam Echo - ttl Echo text - -* Disassembled 98/09/10 22:44:14 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 5 - - mod eom,name,tylg,atrv,start,size - -u0000 rmb 450 -size equ . - -name fcs /Echo/ - fcb edition - -start tfr d,y - lda #1 - os9 I$WritLn - bcs Exit - clrb -Exit os9 F$Exit - - emod -eom equ * - end -
--- a/CoCoOS9/level2v3/CMDS/exbin.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,187 +0,0 @@ -******************************************************************** -* Exbin - Motorola S-Record utility -* -* $Id: exbin.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 67 Original Tandy distribution version - - nam Exbin - ttl Motorola S-Record utility - -* Disassembled 98/09/15 00:16:49 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $01 - - mod eom,name,tylg,atrv,start,size - -u0000 rmb 1 -u0001 rmb 1 -u0002 rmb 2 -u0004 rmb 1 -u0005 rmb 1 -u0006 rmb 2 -u0008 rmb 1 -u0009 rmb 2 -u000B rmb 1 -u000C rmb 1 -u000D rmb 1 -u000E rmb 1 -u000F rmb 1 -u0010 rmb 2 -u0012 rmb 2 -u0014 rmb 2 -u0016 rmb 656 -size equ . - -name fcs /Exbin/ - fcc "Copyright 1982 Motorola, Inc." - fcb $01 - -start stx <u0002 - lda #$01 - os9 I$Open - bcc L003C -L0039 os9 F$Exit -L003C sta <u0000 - stx <u0002 - lda #$02 - ldb #$7F - os9 I$Create - bcs L0039 - sta <u0001 - stx <u0002 - ldd #$0000 - std <u0009 - std <u000B - sta <u000F - ldx #$4E61 - stx <u0010 - ldx #$6D65 - stx <u0012 - ldx #$3D20 - stx <u0014 -L0065 lda <u0000 - leax <u0016,u - ldy #$0100 - os9 I$ReadLn - lbcs L0114 - leax <u0016,u - tfr x,y - tfr x,d - addd #$0100 - std <u0006 -L0081 lda ,x+ - cmpa #$53 - beq L008D - cmpx <u0006 - bne L0081 - bra L0065 -L008D lda ,x+ - suba #$30 - sta <u000E - beq L009E - cmpa #$09 - bne L009B - bra L0065 -L009B deca - bne L0065 -L009E bsr L011F - sta <u0008 - suba #$03 - sta <u000C - sta <u000D - bsr L011B - tst <u000E - beq L00CD - pshs x - ldx <u0009 - lda <u000F - beq L00C0 - cmpx <u0004 - beq L00C6 - leax >L018D,pcr - bra L00DE -L00C0 ldx <u0004 - lda #$01 - sta <u000F -L00C6 ldb <u000C - abx - stx <u0009 - puls x -L00CD bsr L011F - sta ,y+ - dec <u000D - bpl L00CD - lda <u0008 - inca - beq L00EB - leax >L0171,pcr -L00DE lda #$02 - ldy #$00FF - os9 I$WritLn -L00E7 clrb - lbra L0039 -L00EB lda <u000E - bne L0102 - lda #$0D - sta ,-y - lda #$01 - ldy #$00FF - leax <u0010,u - os9 I$WritLn - lbra L0065 -L0102 lda <u0001 - ldy <u000B - leax <u0016,u - os9 I$Write - lbcc L0065 - lbra L0039 -L0114 cmpb #$D3 - beq L00E7 - lbra L0039 -L011B bsr L011F - sta <u0004 -L011F lda ,x+ - bsr L013A - lsla - lsla - lsla - lsla - anda #$F0 - pshs a - lda ,x+ - bsr L013A - adda ,s+ - sta <u0005 - adda <u0008 - sta <u0008 - lda <u0005 - rts -L013A suba #$30 - bmi L0149 - cmpa #$09 - ble L0148 - suba #$07 - cmpa #$0F - bhi L0149 -L0148 rts -L0149 leax >L014F,pcr - bra L00DE -L014F fcc "** NON-HEX CHARACTER ENCOUNTERED" - fcb $07,C$CR -L0171 fcc "** CHECKSUM ERROR DETECTED" - fcb $07,C$CR -L018D fcc "** NON-CONTIGUOUS ADDRESS SPACE DETECTED" - fcb $07,C$CR - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/free.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,316 +0,0 @@ -******************************************************************** -* Free - Print disk free space -* -* $Id: free.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 6 Original Tandy/Microware version -* 7 Incorporated Glenside Y2K fixes BGP 99/05/11 - - nam Free - ttl Print disk free space - -* Disassembled 98/09/11 16:58:25 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Prgrm+Objct -atrv set ReEnt+rev -rev set $00 -edition set 7 - - mod eom,name,tylg,atrv,start,size - -u0000 rmb 1 -u0001 rmb 1 -u0002 rmb 1 -u0003 rmb 1 -u0004 rmb 1 -u0005 rmb 2 -u0007 rmb 1 -u0008 rmb 1 -u0009 rmb 1 -u000A rmb 1 -u000B rmb 1 -u000C rmb 1 -u000D rmb 26 -u0027 rmb 54 -u005D rmb 4 -u0061 rmb 2 -u0063 rmb 1 -u0064 rmb 19 -u0077 rmb 5 -u007C rmb 26 -u0096 rmb 6 -u009C rmb 2 -u009E rmb 2 -u00A0 rmb 4544 -size equ . - -name fcs /Free/ - fcb edition -L0012 fcb C$LF - fcc "Use: free [/diskname]" - fcb C$LF - fcc " tells how many disk sectors are unused" - fcb C$CR -L0052 fcs /" created on:/ -L005F fcs "Capacity:" -L0068 fcs " sectors (" -L0072 fcs "-sector clusters)" -L0083 fcs " free sectors, largest block" -L009F fcs " sectors" - -start leay u000D,u - sty <u0001 - cmpd #$0000 - beq L00E0 - lda ,x+ - cmpa #C$CR - beq L00E0 - cmpa #PDELIM - beq L00CC -L00BC leax >L0012,pcr - ldy #$0040 - lda #$02 - os9 I$WritLn - lbra L01CC -L00CC leax -$01,x - pshs x - os9 F$PrsNam - puls x - bcs L00BC -L00D7 lda ,x+ - lbsr L0218 - subb #$01 - bcc L00D7 -L00E0 lda #$40 - lbsr L0218 - lbsr L0216 - leax u000D,u - stx <u0001 - lda #READ. - os9 I$Open - sta <u0003 - bcs L00FF - leax <u005D,u - ldy #$003F - os9 I$Read -L00FF lbcs L01CD - lbsr L0222 - lda #$22 - lbsr L0218 - leay <u007C,u - lbsr L020C - dec <u0002 - leay >L0052,pcr - lbsr L020C - lbsr L0293 - lbsr L0222 - leay >L005F,pcr - lbsr L020C - leax <u005D,u - lbsr L024F - leay >L0068,pcr - lbsr L020C - dec <u0002 - ldd <u0063 - pshs b,a - clr ,-s - leax ,s - lbsr L024F - leas $03,s - leay >L0072,pcr - lbsr L020C - lbsr L0222 - clra - clrb - sta <u0004 - std <u0005 - sta <u000A - std <u000B - sta <u0007 - std <u0008 - lda <u0003 - ldx #$0000 - pshs u - ldu #$0100 - os9 I$Seek - puls u -L016A leax >u009E,u - ldd #$1000 - cmpd <u0061 - bls L0178 - ldd <u0061 -L0178 leay d,x - sty <u009C - tfr d,y - lda <u0003 - os9 I$Read - bcs L01CD -L0186 lda ,x+ - bsr L01D0 - stb ,-s - beq L019C -L018E ldd <u0005 - addd <u0063 - std <u0005 - bcc L0198 - inc <u0004 -L0198 dec ,s - bne L018E -L019C leas $01,s - cmpx <u009C - bcs L0186 - ldd <u0061 - subd #$1000 - std <u0061 - bhi L016A - bsr L01ED - leax u0004,u - lbsr L024F - leay >L0083,pcr - bsr L020C - leax u0007,u - lbsr L024F - leay >L009F,pcr - bsr L020C - bsr L0222 - lda <u0003 - os9 I$Close - bcs L01CD -L01CC clrb -L01CD os9 F$Exit -L01D0 clrb - cmpa #$FF - beq L01ED - bsr L01D7 -L01D7 bsr L01D9 -L01D9 bsr L01DB -L01DB lsla - bcs L01ED - incb - pshs b,a - ldd <u000B - addd <u0063 - std <u000B - bcc L01EB - inc <u000A -L01EB puls pc,b,a -L01ED pshs b,a - ldd <u000A - cmpd <u0007 - bhi L01FE - bne L0204 - ldb <u000C - cmpb <u0009 - bls L0204 -L01FE sta <u0007 - ldd <u000B - std <u0008 -L0204 clr <u000A - clr <u000B - clr <u000C - puls pc,b,a -L020C lda ,y - anda #$7F - bsr L0218 - lda ,y+ - bpl L020C -L0216 lda #$20 -L0218 pshs x - ldx <u0001 - sta ,x+ - stx <u0001 - puls pc,x -L0222 pshs y,x,a - lda #$0D - bsr L0218 - leax u000D,u - stx <u0001 - ldy #$0050 - lda #$01 - os9 I$WritLn - puls pc,y,x,a -L0237 fcb $98 - fdb $9680,$0f42,$4001,$86a0,$0027,$1000,$03e8,$0000 - fdb $6400,$000a,$0000 - fcb $01 -L024F lda #$0A - pshs y,x,b,a - leay <L0237,pcr - clr <u0000 - ldb ,x - ldx $01,x -L025C lda #$FF -L025E inca - exg d,x - subd $01,y - exg d,x - sbcb ,y - bcc L025E - bsr L02B9 - exg d,x - addd $01,y - exg d,x - adcb ,y - leay $03,y - dec ,s - beq L0291 - lda ,s - cmpa #$01 - bne L0281 - sta <u0000 -L0281 bita #$03 - bne L025C - dec ,s - tst <u0000 - beq L025C - lda #$2C - bsr L0218 - bra L025C -L0291 puls pc,y,x,b,a -L0293 leax <u0077,u - bsr L02C3 - bsr L029A -L029A lda #$2F - lbsr L0218 - clr <u0000 - ldb ,x+ - lda #$FF -L02A5 inca - subb #$64 - bcc L02A5 - bsr L02B9 -L02AC lda #$0A - sta <u0000 -L02B0 deca - addb #$0A - bcc L02B0 - bsr L02B9 - tfr b,a -L02B9 tsta - beq L02BE - sta <u0000 -L02BE tst <u0000 - bne L02D6 - rts -L02C3 ldb ,x+ - lda #$AE -L02C7 inca - subb #$64 - bcc L02C7 - pshs b - tfr a,b - bsr L02AC - puls b - bra L02AC -L02D6 adda #$30 - lbra L0218 - - emod -eom equ * - end
--- a/CoCoOS9/level2v3/CMDS/gfx.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,284 +0,0 @@ -******************************************************************** -* GFX - CoCo 2 graphics subroutine module -* -* $Id: gfx.asm,v 1.1.1.1 2001/02/21 23:30:54 boisy Exp $ -* -* Ed. Comments Who YY/MM/DD -* ------------------------------------------------------------------ -* 1 Original Tandy/Microware version - - nam GFX - ttl CoCo 2 graphics subroutine module - -* Disassembled 98/09/25 21:47:16 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Sbrtn+Objct -atrv set ReEnt+rev -rev set $01 -edition set 1 - - mod eom,name,tylg,atrv,start,size -u0000 rmb 0 -size equ . - -name fcs /GFX/ - fcb edition - -FuncTbl fdb Alpha-FuncTbl - fcc "Alpha" - fcb $FF - fdb Circle-FuncTbl - fcc "Circle" - fcb $FF - fdb Clear-FuncTbl - fcc "Clear" - fcb $FF - fdb CColor-FuncTbl - fcc "Color" - fcb $FF - fdb GColr-FuncTbl - fcc "GColr" - fcb $FF - fdb GLoc-FuncTbl - fcc "GLoc" - fcb $FF - fdb JoyStk-FuncTbl - fcc "JoyStk" - fcb $FF - fdb Line-FuncTbl - fcc "Line" - fcb $FF - fdb Mode-FuncTbl - fcc "Mode" - fcb $FF - fdb Move-FuncTbl - fcc "Move" - fcb $FF - fdb Point-FuncTbl - fcc "Point" - fcb $FF - fdb Quit-FuncTbl - fcc "Quit" - fcb $FF - fdb $0000 - -stkdepth set 9 - -start leas -stkdepth,s - ldd 2+stkdepth,s get parameter count - beq BadFunc - tsta param count greater than 255? - bne BadFunc yep, branch to error - leau >FuncTbl,pcr point to function pointer table -L007D ldy ,u++ get pointer to function - beq NoFunc - -* Compare passed function name to our list - ldx 4+stkdepth,s -L0084 lda ,x+ get passed param char - eora ,u+ XOR it with compared param char - anda #$DF make case same - beq L0094 branch if equal - leau -1,u back up one -L008E tst ,u+ - bpl L008E - bra L007D -L0094 tst -1,u - bpl L0084 - tfr y,d put funcion pointer in D - leay >FuncTbl,pcr point Y to table - leay d,y get function address - leax ,s - leau <$11,s - ldd stkdepth+2,s put parameter count in D - jmp ,y - -NoFunc ldb #E$NoRout - bra L00AF -BadFunc ldb #E$ParmEr $38 -L00AF coma - leas stkdepth,s - rts - -* Each subroutine enters with the following parameters -* B = parameter count -* X = temporary stack -* U = pointer to size of first parameter - -Mode lda #$0F - bra L00B9 - -Move lda #$15 -L00B9 cmpb #$03 correct number of params? - bne BadFunc - bra L010B - -CColor lda #$11 - bra L00DE - -Point cmpb #$03 correct number of params? - beq L00D4 - cmpb #$04 - bne BadFunc - leau <$19,s - lbsr L015E - leau <$11,s -L00D4 lda #$18 - bra L010B - -Clear cmpb #$01 correct number of params? - beq L00E4 - lda #$10 -L00DE cmpb #$02 - bne BadFunc - bra L0136 - -L00E4 lda #$13 - bra L0142 - -Line cmpb #$06 correct number of params? - bhi BadFunc - cmpb #$03 - bcs L015B - bitb #$01 - bne L0103 - leau <$19,s - cmpb #$04 - beq L00FE - leau <$21,s -L00FE bsr L015E - leau <$11,s -L0103 cmpb #$04 - bls L0109 - bsr L0164 -L0109 lda #$16 -L010B sta ,x+ - bsr L016E - bsr L016E - bra L0144 - -Circle cmpb #$05 correct number of params? - bhi L015B - cmpb #$02 - bcs L015B - bitb #$01 - beq L012E - leau <$15,s - cmpb #$03 - beq L0129 - leau <$1D,s -L0129 bsr L015E - leau <$11,s -L012E cmpb #$03 - bls L0134 - bsr L0164 -L0134 lda #$1A -L0136 sta ,x+ - bsr L016E - bra L0144 - -Alpha lda #$0E - bra L0142 - -Quit lda #$12 -L0142 sta ,x+ -L0144 bsr L0149 - leas stkdepth,s - rts - -L0149 tfr x,d - leax 2,s - pshs x - subd ,s++ - tfr d,y - lda #1 - os9 I$Write - rts - -L0159 leas $06,s -L015B lbra BadFunc -L015E lda #$11 - sta ,x+ - bra L016E -L0164 puls y - lda #$15 - sta ,x+ - bsr L016E - pshs y -L016E pshs y,b,a - ldd [,u++] - sta ,x+ - pulu y - leay -$01,y - beq L0183 - leay -$01,y - bne L0159 - tsta - bne L0159 - stb -$01,x -L0183 puls pc,y,b,a - -GLoc cmpb #$02 correct number of params? - bne L015B - ldx <$13,s - leax -$02,x - bne L015B - lda #1 standard out - ldb #SS.DStat - os9 I$GetStt - bcs L019C - stx [<$11,s] -L019C leas stkdepth,s - rts - -GColr cmpb #2 correct number of params? - beq L01AD - cmpb #$04 - bne L015B - bsr L0164 - bsr L0149 - bcs L019C -L01AD lda #$01 - ldb #$12 - os9 I$GetStt - bcs L019C - tfr a,b - bra L01ED -L01BA leau $04,u - pshs u,x - ldx -$02,u - ldu -$04,u - leax -$01,x - beq L01CC - leax -$01,x - bne L0159 - clr ,u+ -L01CC stb ,u+ - puls pc,u,x - -JoyStk cmpb #5 correct number of params? - bne L015B - clr ,x+ - bsr L016E - ldx -2,x - lda #1 - ldb #SS.Joy - os9 I$GetStt - bcs L019C - tfr a,b - bsr L01BA - tfr x,d - bsr L01BA - tfr y,d -L01ED bsr L01BA - leas stkdepth,s - rts - - emod -eom equ * - end -
--- a/CoCoOS9/level2v3/CMDS/grfdrv.asm Sat Jul 14 15:16:39 2018 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3977 +0,0 @@ - nam GrfDrv - ttl os9 system module - -* Disassembled 98/09/22 22:15:01 by Disasm v1.6 (C) 1988 by RML - - ifp1 - use defsfile - endc - -tylg set Systm+Objct -atrv set ReEnt+rev -rev set $01 -edition set 18 - - mod eom,name,tylg,atrv,start,size - -u0000 rmb 0 -size equ . - fcb $07 - -name fcs /GrfDrv/ - fcb edition - -start ldx #FlipSys+MemPos get return vector address - pshs x,b,a save it and call # - tfr u,d set up my DP - tfr a,dp - leax <L002B,pcr point to call vector table - ldb $01,s get call # - ldd b,x get offset - leax d,x point to routine - puls b,a purge stack - jmp ,x execute routine - -****************************** -* -* GrfDrv funtcion vector table -* - -L002B fdb $0060 - fdb $00b9 - fdb $0143 - fdb $0331 - fdb $0335 - fdb $03cf - fdb $0485 - fdb $04b2 - fdb $06ce - fdb $054e - fdb $0629 - fdb $0604 - fdb $0575 - fdb $05bd - fdb $0613 - fdb $05d4 - fdb $0631 - fdb $0653 - fdb $05f7 - fdb $06c1 - fdb $06c6 - fdb $06ca - fdb $07d6 - fdb $091f - fdb $0a15 - fdb $0a4d - fdb $0a7f - fdb $0b9b - fdb $0dfa - fdb $0e3b - fdb $102a - fdb $1031 - fdb $1361 - fdb $103d - fdb $13df - fdb $13c6 - fdb $1544 - fdb $1550 - fdb $1674 - fdb $1779 - fdb $17c1 - fdb $1831 - fdb $17D0 - fdb $1bf1 - fdb $167a - fdb $17bc - fdb $182c - fdb $150b - -Init tst >g0038 am I initalized already? - bmi L00E2 yes, return - lda #$FF get init code - sta <$0038 save it - -* Initialize window tables - - leax >$0180,u point to window table start position - ldb #$FF get init code - ldy #32 get max # windows -L009D std ,x initalize window -L009F leax <Wt.Siz,x point to next one - leay -$01,y done? - bne L009D no, keep going - -* Initialize screen tables - - leay <16,y get # of screen tables -L00A9 clr St.SBlk,x initialize table entry block # - leax <St.Siz,x move to next one - leay -$01,y done? - bne L00A9 no keep going - leax <$18,x get end of var pointer - stx <$003B save it - clra - clrb - std <$0030 init current screen table pointer - std <$002E init current window table pointer - stb <$0032 init next GP buffer block start # - stb <$0035 - std <$0039 - std <$003D - std <$003F - incb - std <$00B3 - ldb #$20 - std <$00B5 - exg a,b - std <$00B7 - lda #$7E get opcode for JMP instruction - ldx #$414F get address of window switch vector - sta <$00B9 save it for easier access - stx <$00BA - ldx #$4154 get address of GP buffer MMU load - sta <$00BC - stx <$00BD -L00E2 clrb clear errors - rts return - -****************************** -* -* Terminatione routine -* - -L00E4 clr <$0038 clear init flag - clr <$007D clear any buffer block # - ldb <$0032 any GP buffers used? - beq L00F3 no, exit - ldx <$0033 get GP buffer offset - lbsr L0963 delete them - bcc L00E4 keep going till done -L00F3 rts - -****************************** -* -* Swap back to System -* - -L00F4 pshs cc save IRQ status - orcc #IntMasks disable IRQ's - ldx >$1007 get my stack pointer - clr >$1002 clear map side - clra reset DP - tfr a,dp - puls a purge stack - jmp [>D.Flip0] return to system - -****************************** -* -* Setup MMU for a window change -* - -L0107 pshs y,x,b,a preserve regs - ldx -$10,y get screen table pointer - stx 2,s save it in X on stack -L010D leay Wt.POff,y move to PSet offset - ldd $07,y get LSet vector - std <$0064 save LSet vector for this window - ldd $05,y get LSet table pointer - std <$0068 save it for this window - ldd -$09,y get fore/back colors - std <$0061 save 'em for this window - ldd $0C,y get max X coordinate - std <$006A save it for this window - ldd $0E,y get max Y coordinate - std <$006C save it for this window - ldb St.Sty,x get screen type - andb #$8F keep only what we need - stb <$0060 save it for this window - ldb St.BRow,x get # bytes per row - stb <$0063 save it for this window - ldb St.SBlk,x get 1st block # -L012F leax >$008F,u point to my DAT images' 4th entry - ldy #$FFAC get MMU start - clra get block type -L0138 std ,x++ save it to my image - stb ,y+ save it to MMU - incb get next block # - cmpy #$FFAF done? - bls L0138 no, keep going - puls pc,y,x,b,a restore & return - -****************************** -* -* Setup MMU -* - -L0145 pshs y,x,b,a - bra L012F - -L0149 pshs y,x,b,a - ldx -$10,y - bra L010D - bsr L0107 - lbra L13FB - clr <$0089 - stb <$008A - stb >$FFA9 - rts -L015C pshs a - os9 F$AllRAM - puls pc,a -L0163 pshs a - os9 F$AlHRAM - puls pc,a -L016A os9 F$DelRAM - rts - bsr L0198 - bcs L0197 - lda <$0060 - cmpa #$FF - bne L0182 - lda [<-$10,y] - sta <$0060 - lbsr L13FB - bra L0187 -L0182 lbsr L01D5 - bcs L0197 -L0187 lbsr L0107 - lbsr L02EE - lda #$FF - sta -$0E,y - ldb $08,y - lbsr L129C - clrb -L0197 rts -L0198 lda <$0060 - cmpa #$FF - bne L01A1 - lda [<-$10,y] -L01A1 leax <L01CF,pcr - anda #$01 - ldb -$0B,y - cmpb a,x - bhi L01CB - addb -$09,y - cmpb a,x - bhi L01CB - lda [<-$10,y] - anda #$30 - ldb #$10 - mul - ldb -$0A,y - leax <L01D1,pcr - cmpb a,x - bhi L01CB - addb -$08,y - cmpb a,x - bhi L01CB - clrb - rts -L01CB comb - ldb #$BD - rts -L01CF bvc L0221 -L01D1 fcb $18 - daa - rora - rora -L01D5 bsr L01F4 - bcs L01F3 - stx -$10,y - ldb <$0060 - stb ,x - bsr L0208 - bcs L01F3 - ldb <$005A - stb $05,x - lbsr L06D2 - stb $06,x - lbsr L02A0 - lbsr L0640 -L01F2 clrb -L01F3 rts -L01F4 leax >$0980,u - ldb #$10 -L01FA tst $01,x - beq L01F2 - leax <$20,x - decb - bne L01FA - comb - ldb #$C1 - rts -L0208 pshs y - ldb <$0060 - bpl L0228 - leay >$0980,u - lda #$10 -L0214 tst ,y - bpl L0220 - ldb $01,y - beq L0220 - bsr L026F - bcc L0247 -L0220 leay <$20,y - deca - bne L0214 - ldb <$0060 -L0228 leay <L0262,pcr - andb #$0F - ldb b,y - lbsr L0163 - bcs L0258 - ldy #$8000 - pshs y,b - lbsr L0145 - ldb #$FF -L023F stb ,y - bsr L025A - bcs L023F - puls y,b -L0247 stb $01,x - sty $02,x - lda <$0060 - anda #$0F - leay <L0268,pcr - lda a,y - sta $04,x - clrb -L0258 puls pc,y -L025A leay >$0800,y - cmpy #$A000 -L0262 rts - aim #$02,<$0004 - lsr <$0001 -L0268 oim #$50,<$0050 - suba ,y+ - suba -$10,u -L026F pshs y,x,b,a - lbsr L0145 - ldy #$8000 - ldb #$FF -L027A cmpb ,y - beq L0285 -L027E bsr L025A - bcs L027A -L0282 comb - puls pc,y,x,b,a -L0285 lda <$0060 - anda #$8F - cmpa #$86 - beq L029A - leax >$0800,y - cmpx #$A000 - bcc L0282 - cmpb ,x - bne L027E -L029A clrb - puls x,b,a - leas $02,s - rts -L02A0 pshs y,x - stb <$0097 - stb <$0098 - lda ,x - bpl L02AE - ldb #$20 - stb <$0097 -L02AE pshs x - ldd -$0B,y - bne L02C9 - ldb ,x - leax >L01CF,pcr - andb #$01 - abx - ldd -$09,y - cmpa ,x - bne L02C9 - cmpb #$18 - bne L02C9 - puls pc,y,x,b,a -L02C9 puls x - ldy $02,x - lda ,x - anda #$0F - lsla - leax <L02E0,pcr - ldx a,x - ldd <$0097 -L02DA std ,y++ - leax -$01,x - bne L02DA -L02E0 puls pc,y,x - tfr s,d - tfr s,d - fcb $3E > - suba #$3E - suba #$07 - subb <$0003 - eorb -$0C,y - clrd - sta <$18,y - sta $0A,y - sta $0E,y - ldx #$5F9A - stx <$14,y - ldx #$5F83 - stx <$16,y - lda #$89 - sta $09,y - bsr L0325 - stb <$0061 - bsr L032F - stb <$0062 - lbsr L06DC - puls x - ldd $02,x - bsr L0337 - clr $0B,y - ldd #$C801 - std <$0057 - lbsr L05A2 - clrb - rts -L0325 ldb $06,y - lbsr L0698 - stb $06,y - rts -L032D bsr L0325 -L032F ldb $07,y - lbsr L0698 - stb $07,y - rts -L0337 lbsr L04ED - ldd -$0D,y - std <$24,y - ldd -$0B,y - std <$26,y - clr -$0B,y - clr -$0A,y - ldd -$09,y - std <$28,y - rts -L034E tsta - beq L0355 - orb $09,y - bra L0358 -L0355 comb - andb $09,y -L0358 stb $09,y - bra L038E - ldb #$01 - bra L034E - jsr <$00B9 - ldd #$FFFE - std -$10,y - bsr L0390 - bcs L0387 - bsr L03A8 - cmpy <$002E - bne L038E - clra - clrb - std <$002E - std <$0030 - ldx #$FFB0 - ldd #$1008 - stb >$FF9A -L0381 stb ,x+ - deca - bhi L0381 - rts -L0387 ldb $06,x - stb <$0062 - lbsr L129C -L038E clrb - rts -L0390 pshs y - leay >$0190,u - ldb #$20 -L0398 cmpx -$10,y - beq L03A5 - leay <$40,y - decb - bne L0398 - clrb - bra L03A6 -L03A5 comb -L03A6 puls pc,y -L03A8 pshs y - lda ,x - bpl L03D0 - ldy $02,x - ldb #$FF - stb ,y - anda #$CF - cmpa #$85 - bne L03BF - stb >$0800,y -L03BF ldy #$8000 -L03C3 cmpb ,y - bne L03E6 - lbsr L025A - bcs L03C3 - ldb #$01 - bra L03D8 -L03D0 anda #$0F - leay >L0262,pcr - ldb a,y -L03D8 pshs x,b - clra - ldb $01,x - tfr d,x - puls b - lbsr L016A - puls x -L03E6 clr $01,x - puls pc,y -L03EA puls b,a - pshs y,b,a - ldb -$0E,y - lda #$40 - mul - leay >$0190,u - leay d,y - rts - bsr L03EA - jsr <$00B9 - tfr y,d - ldy ,s - std ,s - bsr L042D - bcs L042B - ldd -$10,x - std -$10,y - lbsr L0149 - bsr L045C - tst <$0059 - beq L0421 - bsr L048E - bcs L042B - ldb $07,y - stb <$0062 - lbsr L129C -L0421 ldx ,s - cmpx <$002E - bne L042A - sty <$002E -L042A clrb -L042B puls pc,x -L042D bsr L044A -L042F ldb -$0B,y - bmi L0447 - addb -$09,y - cmpb <$28,x - bhi L0447 - ldb -$0A,y - bmi L0447 - addb -$08,y - cmpb <$29,x - bhi L0447 - clrb - rts -L0447 lbra L01CB -L044A tfr y,x -L044C ldb -$0E,x - bmi L045B - leax >$0190,u - lda #$40 - mul - leax d,x - bra L044C -L045B rts -L045C clr <$11,y - lda $09,x - sta $09,y - lbsr L06DC - lda $08,x - anda #$C0 - ora $08,y - sta $08,y - ldd #$050A - bsr L0481 - ldd #$0714 - bsr L0481 - lbsr L032D - ldd -$0D,x - lbsr L0337 - rts -L0481 pshs a -L0483 lda b,x - sta b,y - incb - dec ,s - bne L0483 - puls pc,a -L048E pshs x - clra - ldb -$09,y - tst <$0060 - bmi L049A - lda #$08 - mul -L049A std <$004F - clra - ldb -$08,y - tst <$0060 - bmi L04A6 - lslb - lslb - lslb -L04A6 std <$0051 - clrb - std <$0047 - lbsr L0AF5 - puls pc,x - jsr <$00B9 - cmpy <$002E - bne L04BF - lbsr L03EA - sty <$002E - puls y -L04BF ldb <$11,y - beq L04D6 - jsr <$00BC - stb <$007D - ldd <$12,y - std <$007E - lbsr L0C01 - lbsr L084C - lbsr L0963 -L04D6 ldd #$FFFF - std -$10,y - bra L04EB - jsr <$00B9 - tfr y,x - lbsr L042F - bcs L04EC - ldd <$24,y - bsr L04ED -L04EB clrb -L04EC rts -L04ED pshs x,b,a - ldb <$0060 - andb #$0F - leax >L0548,pcr - ldb b,x - stb $03,y - lda -$09,y - mul - stb $02,y - clra - ldb <$0063 - tst <$0060 - bmi L050A - lda #$08 - mul -L050A std $04,y - ldb -$0A,y - ldx $04,y - lbsr L1E21 - std <$0097 - lda -$0B,y - ldb $03,y - mul - addd ,s++ - addd <$0097 - std -$0D,y - lbsr L10A7 - ldb <$0060 - bmi L0529 - bsr L054F -L0529 clra - ldb -$09,y - tst <$0060 - bmi L0533 - lda #$08 - mul -L0533 subd <$00B3 - std <$1B,y - clra - ldb -$08,y - tst <$0060 - bmi L0542 - lda #$08 - mul -L0542 subb #$01 - std <$1D,y - puls pc,x - oim #$02,<$0002 - lsr <$0002 - aim #$34,<$0010 - clra - ldb -$09,y - tfr d,x - lda #$03 - mul - pshs b - ldb #$33 - lbsr L1E00 - addb ,s+ - stb -$07,y - clra - ldb -$08,y - tfr d,x - lda #$0A - mul - pshs b - ldb #$AB - lbsr L1E00 - addb ,s+ - stb -$06,y - puls pc,x - ldb <$0057 - bne L0584 - stb $0E,y - ldx #$5F83 - bra L059B -L0584 lbsr L0851 - bcs L059F - stb $0E,y - leax <$20,x - stx $0F,y - ldx -$10,y - ldb ,x - ldx #$5F0A - ldb b,x - leax b,x -L059B stx <$16,y -L059E clrb -L059F rts - jsr <$00B9 -L05A2 ldb <$0057 - bne L05A9 - stb $0B,y - rts -L05A9 lbsr L0F31 - lbsr L0851 - bcs L05E2 - pshs x,b - ldd $07,x - tsta - bne L05E3 - cmpb #$06 - beq L05C0 - cmpb #$08 - bne L05E3 -L05C0 ldd $09,x - cmpd #$0008 - bne L05E3 - stb $0B,x - ldd $07,x - cmpd <$006E - beq L05DB - tst $0B,y - beq L05DB - lbsr L112D - lbsr L1119 -L05DB puls x,b - stb $0B,y - stx $0C,y - clrb -L05E2 rts -L05E3 ldb #$C2 - coma - puls pc,x,a - jsr <$00B9 - ldb <$0057 - bne L05F2 - stb <$18,y - rts -L05F2 lbsr L0851 - bcs L059F - stb <$18,y - stx <$19,y - bra L059E - leax <L0616,pcr - ldb $0A,y - cmpb #$05 - bhi L0612 - lslb - ldd b,x - leax d,x - stx <$14,y - bra L062D -L0612 comb - ldb #$BB - rts -L0616 daa - anda #$19 - sbca #$19 - adca #$19 - jmp >$1972 - daa - ror >$E629 - orb #$80 - tsta - beq L062B - andb #$7F -L062B stb $09,y -L062D clrb - rts - ldb <$0086 - ldx -$10,y - leax <$10,x - lda <$005A - anda #$0F - stb a,x - bra L062D - ldx -$10,y -L0640 pshs y,x - leay <$10,x - ldx >$1019 - clra -L0649 ldb ,x+ - stb a,y - inca - cmpa #$0F - ble L0649 - puls pc,y,x - ldb <$005A - ldx -$10,y - stb $05,x - bra L0696 - bsr L0673 - stb $06,y - ldb $09,y - bitb #$04 - bne L0688 -L0666 ldb <$005A - lslb - lslb - lslb - andb #$38 - lda $08,y - anda #$C7 - bra L0690 -L0673 ldx -$10,y - ldb ,x - stb <$0060 - ldb <$005A - bsr L0698 - rts - bsr L0673 - stb $07,y - ldb $09,y - bitb #$04 - bne L0666 -L0688 ldb <$005A - andb #$07 - lda $08,y - anda #$F8 -L0690 stb <$0097 - ora <$0097 - sta $08,y -L0696 clrb - rts -L0698 pshs x,a - lda <$0060 - bmi L06A2 - tfr b,a - bsr L06AC -L06A2 puls pc,x,a -L06A4 leax <L06B4,pcr - ldb <$0060 - ldb b,x - rts -L06AC bsr L06A4 - leax b,x - anda ,x+ - ldb a,x -L06B4 rts - eim #$08,<$0008 - tst <$0001 - neg <$00FF - com <$0000 - fcb $55 U - ora [>$0F00] - fcb $11 - bhi L06F9 - lsra - fcb $55 U - ror -$09,s - eora #$99 - ora [d,y] - ldd #$DDEE - stu >$6D84 - bpl L06D9 - andb #$07 - rts -L06D9 bsr L0698 - rts -L06DC ldd $06,y - anda #$07 - lsla - lsla - lsla - andb #$07 - stb <$0097 - ora <$0097 - sta $08,y - rts - ldb #$10 -L06EE lbra L034E - ldb #$08 - bra L06EE - ldb #$20 - bra L06EE -L06F9 ldx <$002E - pshs y,x - ldy -$10,y - lda $01,y - ldx $02,y - lbsr L07E9 - ldx #$FF90 - ldb >$0090 - andb #$7F - stb >$0090 - stb ,x - leax <L078D,pcr - ldb ,y - andb #$0F - lslb - abx - lda >$0098 - anda #$78 - ora ,x+ - ldb ,y - andb #$10 - lslb - orb ,x - ldx #$FF90 - std >$0098 - std $08,x - ldd <$0082 - lsra - rorb - ror <$0084 - lsra - rorb - ror <$0084 - lsra - rorb - ror <$0084 - clra - std >$009C - std $0C,x - lda <$0084 - clrb - std >$009E - std $0E,x - ldb $05,y - leay <$10,y - ldb b,y - stb >$009A - bsr L079B - stb $0A,x - ldx #$FFB0 - lda #$10 -L0762 ldb ,y+ - bsr L079B - stb ,x+ - deca - bhi L0762 - ldy ,s++ - beq L0772 - jsr <$00B9 -L0772 puls y - lbsr L0107 - sty <$002E - stx <$0030 - ldb >$1000 - stb >$1001 - ldd <$003D - std <$005B - ldd <$003F - std <$005D - lbsr L142A -L078D clrb - rts - suba #$14 - suba #$15 - suba #$1D - suba #$1E - com <$0015 - com <$0005 -L079B pshs x - tst >$1009 - bne L07A7 - leax <L07A9,pcr - ldb b,x -L07A7 puls pc,x -L07A9 - - fcb $03 - fdb $0534,$107d,$1009 - fdb $2605,$308c,$04e6,$8535,$9000,$0c02,$0e07,$0905 - fdb $101c,$2c0d,$1d0b,$1b0a,$2b22,$1112,$2103,$0113 - fdb $321e,$2d1f,$2e0f,$3c2f,$3d17,$0815,$0627,$1626 - fdb $3619,$2a1a,$3a18,$2928,$3814 - fdb $0423,$3325,$3524 - fdb $3420,$3b31,$3e37,$393f - fcb $30 - -L07E9 clrb - lsra - rorb - lsra - rorb -L07EE lsra - rorb - std <$0082 - clr <$0084 - tfr x,d - suba #$80 - addd <$0083 - std <$0083 - bcc L0800 - inc <$0082 -L0800 rts -L0801 ldd <$0080 - addd #$001F -L0806 andb #$E0 - std <$0080 - ldb <$0057 - cmpb #$FF - beq L0818 - tst <$0032 - beq L0818 - bsr L0851 - bcc L0848 -L0818 ldd <$0080 - cmpd <$00B7 - bhi L0829 - bsr L0891 - bcs L0829 - lda #$01 - sta $0F,x - bra L082E -L0829 lbsr L08C1 - bcs L0847 -L082E stb <$007D - stx <$007E - lbsr L090D - ldd <$0057 - std $03,x - ldd <$0080 - std $05,x - clra - clrb - std $07,x - std $09,x - std $0C,x - stb $0E,x -L0847 rts -L0848 comb - ldb #$C2 - rts -L084C leax <L0860,pcr - bra L0854 -L0851 leax <L086A,pcr -L0854 stx <$00A1 - bsr L088A - ldb <$0032 - beq L0848 - ldx <$0033 - bra L0882 -L0860 cmpb <$11,y - bne L0878 - cmpx <$12,y - bra L0876 -L086A lda <$0057 - cmpa $03,x - bne L0878 - lda <$0058 - beq L0888 - cmpa $04,x -L0876 beq L0888 -L0878 stb <$007D - stx <$007E - ldb ,x - beq L0848 - ldx $01,x -L0882 jsr <$00BC - jmp [>$00A1,u] -L0888 clra - rts -L088A clra - clrb - stb <$007D - std <$007E - rts -L0891 pshs y,b - ldy <$0080 - ldx #$49E2 - stx <$00A1 - lbsr L09D5 - bcs L08BF - stb ,s - ldd $05,x - subd <$0080 - bne L08B5 - pshs x - lbsr L092D - puls x - ldb ,s - jsr <$00BC - bra L08BE -L08B5 subd <$00B5 - std $05,x - leax <$20,x - leax d,x -L08BE clra -L08BF puls pc,y,b -L08C1 ldd <$0080 - addd <$00B5 - std <$0097 - addd #$1FFF - lsra - lsra - lsra - lsra - lsra - tfr a,b - stb <$0099 - lbsr L015C - bcs L090C - pshs b - ldb <$0099 - cmpb #$01 - bhi L0901 - ldd <$00B7 - subd <$0097 - anda #$1F - std <$009B - beq L0901 - ldd <$00B7 - subd <$009B - addd <$00B7 - tfr d,x - ldb ,s - addb <$0099 - decb - jsr <$00BC - bsr L091D - ldd <$009B - subd <$00B5 - std $05,x -L0901 ldx <$00B7 - puls b - jsr <$00BC - lda <$0099 - sta $0F,x - clra -L090C rts -L090D pshs b,a - lda <$0032 - sta ,x - stb <$0032 - ldd <$0033 - std $01,x - stx <$0033 - puls pc,b,a -L091D pshs b,a - lda <$0035 - sta ,x - stb <$0035 - ldd <$0036 - std $01,x - stx <$0036 - puls pc,b,a -L092D pshs y,a - lda ,x - ldy $01,x - ldx <$007E - ldb <$007D - bne L0941 - sta <$0035 - sty <$0036 - bra L0948 -L0941 jsr <$00BC - sta ,x - sty $01,x -L0948 puls pc,y,a - ldb #$01 - stb <$0097 -L094E lbsr L0851 - bcs L095D - clr <$0097 - bsr L0963 - bcs L0962 - ldb <$0058 - beq L094E -L095D lda <$0097 - bne L0962 - clrb -L0962 rts -L0963 pshs y,x,b - lda $0F,x - sta <$009F - lda ,x - ldy $01,x - ldb <$007D - bne L0979 - sta <$0032 - sty <$0033 - bra L0982 -L0979 jsr <$00BC - ldx <$007E - sta ,x - sty $01,x -L0982 ldb ,s - lda <$009F - cmpa #$01 - bgt L09A9 - tfr b,a - bsr L09B3 - bcc L09A0 - leax <L09FA,pcr - stx <$00A1 - ldx $01,s - bsr L09D5 - jsr <$00BC - lbsr L091D - bra L09B1 -L09A0 ldx #$4A23 - stx <$00A1 - ldx $01,s - bsr L09D5 -L09A9 clra - tfr d,x - ldb <$009F - lbsr L016A -L09B1 puls pc,y,x,b -L09B3 pshs x,b - ldb <$0032 - beq L09CF - cmpa <$0032 - beq L09D2 - ldx <$0033 -L09BF jsr <$00BC - cmpa ,x - beq L09D2 - tst ,x - beq L09CF - ldb ,x - ldx $01,x - bra L09BF -L09CF clrb - puls pc,x,b -L09D2 comb - puls pc,x,b -L09D5 pshs u,x,b,a -L09D7 lbsr L088A - ldb <$0035 - beq L0A3D - ldx <$0036 - bra L0A33 - cmpy $05,x - bhi L0A27 - stb $01,s - stx $02,s - clrb - puls pc,u,x,b,a -L09EE tfr u,d - addd $05,u - addd <$00B5 - stx ,--s - cmpd ,s++ - rts -L09FA cmpb $01,s - bne L0A27 - ldu $02,s - ldb ,x - stb ,u - ldd $01,x - std $01,u - exg x,u - bsr L09EE - beq L0A14 - exg x,u - bsr L09EE - bne L0A27 -L0A14 stu $02,s - ldd $05,u - addd $05,x - addd <$00B5 - std $05,u -L0A1E lbsr L092D - bra L09D7 - cmpb ,s - beq L0A1E -L0A27 ldb <$008A - stb <$007D - stx <$007E - ldb ,x - beq L0A3D - ldx $01,x -L0A33 ldu $04,s - jsr <$00BC - ldu $04,s - jmp [>$00A1,u] -L0A3D comb - puls pc,u,x,b,a - lbsr L0851 - bcs L0A54 - pshs b - ldd <$1F,y - cmpd $05,x - puls b - bls L0A61 - lbra L0AF1 -L0A54 ldd <$1F,y - std <$0080 - lbsr L0801 - bcc L0A5F - rts -L0A5F ldb <$007D -L0A61 stb <$21,y - clra - clrb - std <$0047 - ldb <$0060 - lbsr L0B36 - lbsr L0B74 - leax <$20,x - stx <$22,y - bra L0AEF - pshs y - ldb <$21,y - stb <$0097 - jsr <$00BC - ldx <$22,y - leay >$0100,u -L0A88 ldb ,y+ - stb ,x+ - deca - beq L0A9E - cmpx #$4000 - bcs L0A88 - inc <$0097 - ldb <$0097 - jsr <$00BC - ldx <$00B7 - bra L0A88 -L0A9E puls y - ldb <$0097 - stb <$21,y - stx <$22,y - bra L0AEF - lbsr L1DA2 - bcs L0AF4 - lbsr L1DAD - ldd ,x - subd <$00B3 - cmpd <$1B,y -L0ABA lbhi L1E44 - ldd $02,x - subd <$00B3 - cmpd <$1D,y - bhi L0ABA - jsr <$00B9 - bsr L0B16 - lbsr L0851 - bcc L0AD7 - lbsr L0801 - bcc L0AE2 - rts -L0AD7 stb <$007D - stx <$007E - ldd <$0080 - cmpd $05,x - bhi L0AF1 -L0AE2 lbsr L0B74 - lbsr L1E48 - stx <$0072 - ldx <$007E - lbsr L0B98 -L0AEF clrb - rts -L0AF1 comb - ldb #$BF -L0AF4 rts -L0AF5 ldd -$0D,y - std <$0072 - bsr L0B16 - ldd #$FFFF - std <$0057 - lbsr L0801 - bcs L0B15 - ldb <$007D - stb <$11,y - ldd <$007E - std <$12,y - bsr L0B74 - lbsr L0B98 - clrb -L0B15 rts -L0B16 pshs x - ldb <$0060 - bpl L0B23 - ldd <$004F - lslb - stb <$0009 - bra L0B25 -L0B23 bsr L0B36 -L0B25 ldb <$0009 - ldx <$0051 - lbsr L1E21 - std <$0080 - ldb <$0063 - subb <$0009 - stb <$000A - puls pc,x -L0B36 lda #$07 - decb - beq L0B43 - lda #$01 - cmpb #$03 - beq L0B43 - lda #$03 -L0B43 sta <$0097 - ldb <$0048 - comb - andb <$0097 - incb - stb <$0006 - clra - cmpd <$004F - bge L0B5E - ldb <$0050 - subb <$0006 - andb <$0097 - bne L0B5E - ldb <$0097 - incb -L0B5E stb <$0007 - clra - ldb <$0048 - andb <$0097 - addd <$004F - addb <$0097 - adca #$00 -L0B6B lsra - rorb - lsr <$0097 - bne L0B6B - stb <$0009 - rts -L0B74 ldd <$004F - std $07,x - ldd <$0051 - std $09,x - ldb <$0060 - stb $0E,x - ldd <$0006 - std $0C,x - ldb <$0009 - stb $0B,x - clra - std <$004F - rts -L0B8C tfr y,x - lda <$0097 - sta <$000A - lda #$01 - sta <$0099 - bra L0B9A -L0B98 clr <$0099 -L0B9A pshs y - leay <$20,x - ldx <$0072 -L0BA1 lda <$0050 -L0BA3 tst <$0099 - bne L0BAD - ldb ,x+ - stb ,y+ - bra L0BB1 -L0BAD ldb ,y+ - stb ,x+ -L0BB1 cmpy #$4000 - bcs L0BBA - lbsr L0D63 -L0BBA deca - bne L0BA3 - ldb <$000A - abx - dec <$0052 - bne L0BA1 - puls pc,y - jsr <$00B9 - lbsr L1F65 - lbsr L0851 - bcs L0C00 - stb <$007D - stx <$007E - ldd $07,x - std <$004F - ldd $09,x - std <$0051 - lbsr L1DA2 - bcs L0C00 - lbsr L1DAD - lbsr L1E48 - stx <$0072 - stb <$0074 - ldy <$007E - lda #$01 - bsr L0C1D - bcs L0BF9 - lbsr L0CAE - bra L0BFF -L0BF9 lbsr L0D00 - lbsr L0D88 -L0BFF clrb -L0C00 rts -L0C01 pshs y - ldd -$0D,y - std <$0072 - clra - clrb - std <$0047 - ldy <$007E - bsr L0C1D - bcs L0C18 - lbsr L0B8C - clrb - puls pc,y -L0C18 comb - ldb #$BE - puls pc,y -L0C1D pshs x - ldb <$0060 - cmpb $0E,y - bne L0C6C - tstb - bpl L0C30 - ldb #$FF - stb <$0000 - stb <$0001 - bra L0C61 -L0C30 tsta - beq L0C4A - ldd <$0047 - addd $07,y - subd #$0001 - cmpd <$006A - bhi L0C6C - ldb $0A,y - addb <$004A - decb - cmpb <$006D - bhi L0C6C - ldb <$0060 -L0C4A leax <L0C78,pcr - lda <$0048 - coma - anda b,x - inca - cmpa $0C,y - bne L0C6C - bsr L0C6F - sta <$0000 - ldd $0D,y - bsr L0C6F - stb <$0001 -L0C61 bsr L0C9D - ldb <$0063 - subb <$0050 - stb <$0097 - clrb - puls pc,x -L0C6C comb - puls pc,x -L0C6F leax <L0C7C,pcr - ldb b,x - abx - lsla - ldd a,x -L0C78 rts - asr <$0003 - com <$0001 - com <$0013 - sync - fcb $1B - oim #$80,<$0003 - subb #$07 - subb $0F,x - subb >$1FF8 - swi - fcb $FC - clr >$FEFF - stu >$03C0 - clr <$00F0 - swi - fcb $FC - stu >$FF0F - subb >$FFFF -L0C9D ldd $0A,y - stb <$0050 - sta <$0052 - rts -L0CA4 ldd <$0047 - std <$00AB - ldx <$0072 - leay <$20,y - rts -L0CAE lbsr L0E3F - pshs y - bsr L0CA4 - inc <$0097 - dec <$0050 -L0CB9 ldd <$00AB - std <$0047 - ldb <$0000 - lda <$0050 - beq L0CE8 - sta <$0099 - bra L0CC9 -L0CC7 ldb #$FF -L0CC9 lda ,y+ - lbsr L1F06 - ldd <$0047 - addb <$0005 - bcc L0CD5 - inca -L0CD5 std <$0047 - leax $01,x - cmpy #$4000 - bcs L0CE2 - lbsr L0D63 -L0CE2 dec <$0099 - bne L0CC7 - ldb <$0001 -L0CE8 lda ,y+ - lbsr L1F06 - cmpy #$4000 - bcs L0CF5 - bsr L0D63 -L0CF5 ldb <$0097 - abx - inc <$004A - dec <$0052 - bne L0CB9 - puls pc,y -L0D00 pshs y - ldd <$006A - subd <$0047 - addd <$00B3 - std <$009B - ldb <$006D - subb <$004A - bra L0D27 -L0D10 pshs y - lda <$0060 - lsra - ldd #$027F - bcs L0D1D - ldd #$013F -L0D1D subd <$003D - addd <$00B3 - std <$009B - ldb #$BF - subb <$0040 -L0D27 incb - stb <$00A0 - lbsr L1E9C - lbsr L0C9D - ldd $0C,y - std <$0006 - lbsr L06A4 - abx - lda ,x+ - stx <$0002 - leax <L0D6C,pcr - ldb $0E,y - ldb b,x - abx - ldb ,x - leay b,x - sty <$00A3 - anda $01,x - sta <$0008 - ldb $02,x - stb <$0005 - ldb <$0006 - addb #$02 - ldb b,x - leay b,x - sty <$00A1 - sty <$00A5 - puls pc,y -L0D63 inc <$007D - ldb <$007D - jsr <$00BC - ldy <$00B7 -L0D6C rts - fcb $05 - fdb $1010,$635c,$5d5e,$5f60,$6162,$5603,$0458 - fdb $5254,$564d,$0f02,$514d -L0D88 lbsr L0CA4 - pshs y -L0D8D stx <$0072 - ldd <$00AB - std <$0047 - ldd <$009B - std <$009D - lda <$0050 - sta <$0004 - ldb <$0006 - stb <$0097 - ldd <$00A5 - std <$00A1 - ldb <$0074 -L0DA5 ldy ,s - cmpy #$4000 - bcs L0DB4 - stb <$0099 - bsr L0D63 - ldb <$0099 -L0DB4 lda ,y+ - sty ,s - ldy <$0002 - pshs y - leay <L0DD4,pcr - cmpy <$00A1 - puls y - beq L0DD4 - lsla - jmp [>$00A1,u] - rola - rola - rola - rola - rola - rola - rola -L0DD4 pshs b,a,cc - ldd <$009D - beq L0DEC - subd <$00B3 - std <$009D - ldd $01,s - anda <$0008 - lda a,y - lbsr L1F06 - lbsr L1EB3 - stb $02,s -L0DEC dec <$0097 - beq L0DF6 - puls b,a,cc - jmp [>$00A3,u] -L0DF6 leas $03,s - dec <$0004 - beq L0E12 - lda <$0004 - cmpa #$01 - beq L0E06 - lda <$0005 - bra L0E08 -L0E06 lda <$0007 -L0E08 sta <$0097 - ldy <$00A3 - sty <$00A1 - bra L0DA5 -L0E12 ldx <$0072 - ldb <$0063 - abx - dec <$00A0 - beq L0E23 - inc <$004A - dec <$0052 - lbne L0D8D -L0E23 puls pc,y - lbsr L0851 - bcs L0E9F - stb <$0097 - ldb $0F,x - stb <$0099 - ldd $05,x - std <$009B - leax <$20,x - tfr x,d - anda #$1F - std <$009D - bra L0E9E -L0E3F ldb <$0060 - leax >L15C3,pcr - lda b,x - tfr a,b - cmpd $0C,y - bne L0E63 - leax >L1F83,pcr - cmpx <$0064 - bne L0E63 - leax >L1F9A,pcr - cmpx <$0068 - bne L0E63 - leas $02,s - lbra L0B8C -L0E63 sta <$0005 - rts - ldb <$2A,y - rorb - bcc L0E6E - clrb - rts -L0E6E lbsr L0107 - tsta - bpl L0E8E - cmpa #$BF - bhi L0E84 - anda #$EF - suba #$90 - cmpa #$1A - bcc L0E8E -L0E80 lda #$2E - bra L0E8E -L0E84 anda #$DF - suba #$C1 - bmi L0E80 - cmpa #$19 - bhi L0E80 -L0E8E ldb <$0060 - bpl L0E96 - bsr L0EA0 - bra L0E9B -L0E96 lbsr L13FB - bsr L0EDE -L0E9B lbsr L10D0 -L0E9E clrb -L0E9F rts -L0EA0 cmpa #$60 - bne L0EA6 - lda #$27 -L0EA6 cmpa #$5F - bne L0EAC - lda #$7F -L0EAC cmpa #$5E - bne L0EB2 - lda #$60 -L0EB2 ldx -$05,y - tst $09,y - bmi L0EC6 - ldb $01,x - andb #$07 - stb $01,x - ldb $08,y - andb #$F8 - orb $01,x - bra L0EC8 -L0EC6 ldb $08,y -L0EC8 std ,x - ldd <$00B3 - std <$006E - std <$0070 - cmpy <$002E - bne L0EDD - sta <$0039 - ldb >$1000 - stb >$1001 -L0EDD rts -L0EDE pshs y,a - ldb $09,y - stb <$000E - bitb #$04 - beq L0EEE - ldd <$0061 - exg a,b - std <$0061 -L0EEE bsr L0F31 - bcs L0EFC - lda ,s - ldb $0B,x - mul - cmpd $05,x - bcs L0F01 -L0EFC leax <L0F29,pcr - bra L0F05 -L0F01 addd <$00B5 - leax d,x -L0F05 ldb <$0060 - cmpb #$01 - bne L0F1B - ldb <$006F - cmpb #$08 - bne L0F1B - ldb <$000E - bitb #$10 - bne L0F1B - bsr L0F5C - bra L0F27 -L0F1B leay >L100B,pcr - sty <$00A9 - ldy $01,s - bsr L0F9A -L0F27 puls pc,y,a -L0F29 neg <$0000 - neg <$0000 - neg <$0000 - fcb $10 - neg <$0034 - aim #$D6,<$0060 - bpl L0F3F - ldd <$00B3 - std <$006E - std <$0070 - bra L0F5A -L0F3F ldb $0B,y - bne L0F4D - ldd #$0008 - std <$006E - std <$0070 - comb - bra L0F5A -L0F4D jsr <$00BC - ldx $0C,y - ldd $07,x - std <$006E - ldd $09,x - std <$0070 - clrb -L0F5A puls pc,a -L0F5C ldy -$05,y - exg x,y - lda <$0071 - deca - sta <$0097 -L0F66 lda ,y+ - ldb <$000E - bitb #$20 - beq L0F71 - lsra - ora -$01,y -L0F71 tfr a,b - coma - tst <$000E - bmi L0F7C - anda ,x - bra L0F7E -L0F7C anda <$0062 -L0F7E sta ,x - andb <$0061 - orb ,x - stb ,x - ldb <$0063 - abx - dec <$0097 - bmi L0F99 - bne L0F66 - ldb <$000E - bitb #$40 - beq L0F66 - lda #$FF - bra L0F71 -L0F99 rts -L0F9A pshs x - leax <L0FFB,pcr - stx <$0010 - ldx ,s - ldb <$000E - bitb #$10 - beq L0FD0 - ldb <$0071 - decb - clra -L0FAD ora b,x - decb - bpl L0FAD - tsta - bne L0FB9 - lsr <$006F - bra L0FD0 -L0FB9 ldb #$FF -L0FBB incb - lsla - bcc L0FBB - ldx #$504C - ldb b,x - leax b,x - stx <$0010 - ldb #$01 -L0FCA incb - lsla - bcs L0FCA - stb <$006F -L0FD0 puls x - ldb -$03,y - stb <$000F - ldy -$05,y - exg x,y - lda <$0071 - deca - sta <$0099 - stx <$000C - lbsr L1E9C - ldx <$000C -L0FE7 lda ,y+ - ldb <$000E - bitb #$20 - beq L0FF2 - lsra - ora -$01,y -L0FF2 jmp [<$10,u] - lsla - lsla - lsla - lsla - lsla - lsla -L0FFB sta <$000B -L0FFD lda <$006F - sta <$0097 - ldb <$000F - stx <$000C -L1005 pshs b - jmp [>$00A9,u] -L100B lsl <$000B - bcs L1017 - lda <$000E - bpl L102A - lda <$0062 - bra L1019 -L1017 lda <$0061 -L1019 comb - andb ,x - stb ,x - anda ,s - ora ,x - sta ,x - bra L102A - eorb ,x - stb ,x -L102A dec <$0097 - beq L1035 - puls b - lbsr L1EB9 - bra L1005 -L1035 puls b - ldx <$000C - ldb <$0063 - abx - dec <$0099 - bmi L104C - bne L0FE7 - lda <$000E - bita #$40 - beq L0FE7 - lda #$FF - bra L0FFB -L104C rts - stx w,y - jsr <L0FFD,pcr - ora >-$5473,y - inc <$0017 - neg <$00A5 - bra L10A5 - bsr L1063 - lbsr L1485 - bra L10A5 -L1063 jsr <$00B9 - lbra L0F31 - bsr L1063 - clra - ldb <$0047 - subd <$00B5 - tfr d,x - ldb <$006F - lbsr L1E21 - std <$0047 - addd <$006E - subd <$00B3 - cmpd <$1B,y - bhi L10A5 - clra - ldb <$0049 - subd <$00B5 - tfr d,x - ldb <$0071 - lbsr L1E21 - std <$0049 - addd <$0070 - subd <$00B3 - cmpd <$1D,y - bhi L10A5 - ldd <$0047 -L109C std -$02,y - ldd <$0049 - std ,y - lbsr L1131 -L10A5 clrb - rts -L10A7 clra - clrb - std ,y - lbra L112D -L10AE ldd -$02,y - subd <$006E - std -$02,y - lbpl L1139 - ldd <$1B,y - subd <$006E - addd <$00B3 - std -$02,y - ldd ,y - subd <$0070 - std ,y - bpl L1139 - clra - clrb - std -$02,y - std ,y - rts -L10D0 ldd -$02,y - tfr d,x - addd <$006E - std -$02,y - addd <$006E - subd <$00B3 - cmpd <$1B,y - bls L1139 - lda <$2A,y - bpl L10F0 - stx -$02,y - ora #$01 - sta <$2A,y - bra L1139 -L10F0 bsr L112D - bra L1119 -L10F4 ldd ,y - subd <$0070 - bmi L10FE - std ,y - bsr L1139 -L10FE rts - cmpa #$0D - beq L112D - cmpa #$01 - beq L10A7 - cmpa #$08 - beq L10AE - cmpa #$06 - beq L10D0 - cmpa #$09 - beq L10F4 - cmpa #$0A - lbne L1267 -L1119 ldd ,y - addd <$0070 - tfr d,x - addd <$0070 - subd <$00B3 - cmpd <$1D,y - bhi L1149 - stx ,y - bra L1139 -L112D clra - clrb - std -$02,y -L1131 lda <$2A,y - anda #$FE - sta <$2A,y -L1139 ldd -$02,y - std <$0047 - ldd ,y - std <$0049 - lbsr L1E48 - stx -$05,y - stb -$03,y - rts -L1149 pshs y - ldb $02,y - lbsr L1252 - std <$0097 - clra - ldb <$0063 - std <$0099 - ldd ,y - std <$009D - lda -$08,y - deca - sta <$009B - beq L1184 - ldx -$0D,y - ldd $04,y - tfr x,y - leax d,x - tst <$0060 - bmi L1175 - lda <$009B - lsla - lsla - lsla - sta <$009B -L1175 ldd <$0097 - lbsr L121F - ldd <$0099 - leax d,x - leay d,y - dec <$009B - bne L1175 -L1184 puls y - ldd <$009D -L1188 lbra L127A -L118B lda #$80 - ora <$2A,y - bra L1197 -L1192 lda #$7E - anda <$2A,y -L1197 sta <$2A,y - clrb - rts -L119C cmpa #$26 - beq L118B - cmpa #$27 - beq L1192 - cmpa #$30 - beq L11AD - cmpa #$31 - beq L11E1 - rts -L11AD pshs y - ldd ,y - std <$009D - ldb $02,y - lbsr L1252 - std <$0097 - clra - ldb <$0063 - nega - negb - sbca #$00 - std <$0099 - ldb -$08,y - decb - lda <$0071 - mul - tfr b,a - deca - subb $01,y - cmpb <$0071 - bcs L1184 - stb <$009B - ldb <$0063 - mul - addd -$0D,y - tfr d,x - addd $04,y - tfr d,y - bra L1175 -L11E1 pshs y - ldb $02,y - bsr L1252 - std <$0097 - clra - ldb <$0063 - std <$0099 - lda -$08,y - deca - tst <$0060 - bmi L11F8 - lsla - lsla - lsla -L11F8 suba $01,y - bhi L1202 - puls y - ldd ,y - bra L1188 -L1202 sta <$009B - ldd <$1D,y - subd <$0070 - addd <$00B3 - std <$009D - lda <$0063 - ldb $01,y - mul - addd -$0D,y - tfr d,x - ldd $04,y - tfr x,y - leax d,x - lbra L1175 -L121F pshs u,y,x,dp,cc - pshs a - tstb - beq L122D -L1226 lda ,x+ - sta ,y+ - decb - bne L1226 -L122D puls b - tstb - beq L1250 - orcc #$50 - stb >$1006 - sts >$1003 - tfr x,u - tfr y,s - leas $07,s -L1241 pulu y,x,dp,b,a - pshs y,x,dp,b,a - leas $0E,s - dec >$1006 - bne L1241 - lds >$1003 -L1250 puls pc,u,y,x,dp,cc -L1252 tfr b,a - lsra - lsra - lsra - andb #$07 - pshs a - addb ,s+ -L125D cmpb #$07 - blt L1266 - subb #$07 - inca - bra L125D -L1266 rts -L1267 cmpa #$03 - beq L1278 - cmpa #$04 - beq L1285 - cmpa #$0B - beq L12B4 - cmpa #$0C - beq L129C - rts -L1278 ldd ,y -L127A std <$0049 - clra - clrb - std <$0047