mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-25 09:24:19 +00:00
Upload
Digital Research
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
VCMODE status: working 1/28/83
|
||||
VCMODE notes
|
||||
1/31/83 Changed the version check to ignore BDOS and just look for O.S.2.0.
|
||||
Changed error messages (ambiguous,etc.). FMB.
|
||||
11/4/82 I got the latest version from Danny, I'll compile and see if it works.
|
||||
10/22/82 This one needs the new XIOS...
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
$ !
|
||||
$ ! Compile, link, locate and generate hex for
|
||||
$ ! 'VCMODE'
|
||||
$ ! Concurrent CP/M-86
|
||||
$ !
|
||||
$ util := VCMODE
|
||||
$ ccpmsetup ! set up environment
|
||||
$ assign 'f$directory()' f1:
|
||||
|
||||
$ plm86 'util'.plm xref 'p1' optimize(3) debug
|
||||
$ link86 f2:scd.obj, 'util'.obj to 'util'.lnk
|
||||
$ loc86 'util'.lnk od(sm(code,dats,data,stack,const)) -
|
||||
ad(sm(code(0),dats(10000h))) ss(stack(+32)) to 'util'.
|
||||
$ h86 'util'
|
||||
$ !
|
||||
$ !pclean
|
||||
@@ -0,0 +1,194 @@
|
||||
:020000021000EC
|
||||
:0100040000FB
|
||||
:020000021000EC
|
||||
:020006000000F8
|
||||
:020000021005E7
|
||||
:0700000000000000000000F9
|
||||
:020000021007E5
|
||||
:04000C0000000000F0
|
||||
:020000021010DC
|
||||
:080000000000000000000000F8
|
||||
:020000020000FC
|
||||
:10000000EB4B90EB7690434F505952494748542060
|
||||
:1000100028432920313938332C2044494749544159
|
||||
:100020004C2052455345415243482020434F4E43B4
|
||||
:10003000555252454E542043502F4D2D38362032C4
|
||||
:100040002E302C2030332F33312F3833209C58FA68
|
||||
:100050008CD98ED18D267801509DE9FB03558BEC10
|
||||
:100060008B56048B4E06CDE0A30001891E02018948
|
||||
:0F0070000E0401891606015DC204009090909065
|
||||
:020000020010EC
|
||||
:020000000010EE
|
||||
:020000021017D5
|
||||
:100008000D0A09090956434D4F4445204558414DAD
|
||||
:05001800504C4553248B
|
||||
:020000021018D4
|
||||
:10000D000D0A0A76636D6F6465090909090928737C
|
||||
:10001D00686F77206261636B67726F756E64206DB8
|
||||
:05002D006F6465292449
|
||||
:02000002101BD1
|
||||
:100002000D0A76636D6F64652064796E616D696354
|
||||
:10001200090909092873657473206261636B677249
|
||||
:0B0022006F756E64206D6F646529240B
|
||||
:02000002101DCF
|
||||
:10000D000D0A76636D6F646520627566666572654F
|
||||
:08001D00640909090909222404
|
||||
:02000002101FCD
|
||||
:100005000D0A76636D6F64652073697A65203D20FE
|
||||
:100015003509090909287365747320627566666573
|
||||
:10002500726564206D6F6465206D61782066696C0A
|
||||
:0B003500652073697A6520696E29243C
|
||||
:020000021023C9
|
||||
:100000000D0A0909090909286B696C6F6279746521
|
||||
:10001000732C206C6567616C2072616E6765206966
|
||||
:0D00200073203120746F20383139312924CC
|
||||
:020000021025C7
|
||||
:10000D000D0A090909090928616C736F207365745C
|
||||
:10001D0073206261636B67726F756E64206D6F64C0
|
||||
:0F002D006520746F2062756666657265642924AC
|
||||
:020000021028C4
|
||||
:10000C000D0A76636D6F64652068656C700909096B
|
||||
:10001C0009287072696E74732074686973206D6539
|
||||
:07002C00737361676529246D
|
||||
:02000002102BC1
|
||||
:030003000D0A24BF
|
||||
:02000002102BC1
|
||||
:100006000D0A4261636B67726F756E64204D6F6493
|
||||
:100016006520466F72205669727475616C20436F55
|
||||
:060026006E736F6C65248F
|
||||
:02000002102DBF
|
||||
:09000C002044796E616D696324E2
|
||||
:02000002102EBE
|
||||
:100005002042756666657265640D0A4D6178696D95
|
||||
:10001500756D2066696C652073697A65203D2024BD
|
||||
:020000021030BC
|
||||
:020005004B248A
|
||||
:020000021030BC
|
||||
:030007000D0A24BB
|
||||
:020000021030BC
|
||||
:10000A000D0A496E76616C696420436F6D6D616E8D
|
||||
:0C001A0064204F7074696F6E2E0D0A2474
|
||||
:020000021012DA
|
||||
:02000C000000F2
|
||||
:020000021032BA
|
||||
:100006000D0A526571756972657320436F6E63756B
|
||||
:100016007272656E742043502F4D2D38360D0A24AA
|
||||
:020000021034B8
|
||||
:100006000D0A5669727475616C20436F6E736F6C5E
|
||||
:1000160065206E6F7420696E20666F726567726FF9
|
||||
:06002600756E640D0A2452
|
||||
:020000021036B6
|
||||
:03000C00697324F1
|
||||
:020000021036B6
|
||||
:08000F004255464645524544A6
|
||||
:020000021037B5
|
||||
:0700070044594E414D4943ED
|
||||
:020000021037B5
|
||||
:04000E0048454C50C5
|
||||
:020000021038B4
|
||||
:0400020053495A45BF
|
||||
:020000021038B4
|
||||
:100006000D0A46696C652073697A65206F757420E0
|
||||
:0B0016006F662072616E67650D0A24A2
|
||||
:02000002103AB2
|
||||
:100001000D0A496E76616C696420436F6D6D616E96
|
||||
:0C00110064204F7074696F6E2E0D0A247D
|
||||
:02000002103BB1
|
||||
:07000D0073657420746F2479
|
||||
:020000020010EC
|
||||
:10000200558BECB002508A4604B40050E84CFF5DB8
|
||||
:03001200C2020027
|
||||
:020000020011EB
|
||||
:10000500558BECB00950FF7604E83CFF5DC2020059
|
||||
:020000020012EA
|
||||
:0F000500558BECB00C50B8000050E82BFF5DC3DA
|
||||
:020000020013E9
|
||||
:0F000400558BECB08F50B8000050E81CFF5DC367
|
||||
:020000020014E8
|
||||
:0F000300558BECB09950B8000050E80DFF5DC36D
|
||||
:020000020015E7
|
||||
:0B000200558BECB02050E8A7FF5DC359
|
||||
:020000020015E7
|
||||
:10000D00558BEC8B460609C0744889C18B46083167
|
||||
:10001D00D2F7F1A230018B460831D2F7F18956089B
|
||||
:10002D0089C8BB0A0031D2F7F389460609C074139B
|
||||
:10003D00823E300100750C8A4604D0D87305E8B4B1
|
||||
:10004D00FFEBC0C6460400A03001043050E855FF58
|
||||
:06005D00EBB15DC20600DC
|
||||
:02000002001BE1
|
||||
:10000300558BECB00950B8780150E89DFEB009500B
|
||||
:10001300B88D0150E893FEB00950B8B20150E88999
|
||||
:10002300FEB00950B8DD0150E87FFEB00950B8F5C5
|
||||
:100033000150E875FEB00950B8300250E86BFEB0CD
|
||||
:100043000950B85D0250E861FEB00950B88C025007
|
||||
:10005300E857FEB00950B8B30250E84DFEE821FF5F
|
||||
:020063005DC37B
|
||||
:020000020021DB
|
||||
:10000500558BECB00950B8B60250E83BFEA0340160
|
||||
:10001500B40050B8640050B0FF50E82BFFE81DFF56
|
||||
:10002500B00950FF7604E81FFEC41E0C01268B475D
|
||||
:100035000E250100A314017508B00950B8DC02EBC8
|
||||
:1000450022B00950B8E50250E8FDFDC41E0C01269A
|
||||
:10005500FF7710B8102750B0FF50E8EBFEB00950FD
|
||||
:10006500B8050350E8E1FDB00950B8070350E8D7DB
|
||||
:05007500FD5DC2020068
|
||||
:020000020028D4
|
||||
:10000A00558BECC41E0C01268B4716A31801B08928
|
||||
:0A001A0050B8160150E8BBFD5DC3AD
|
||||
:02000002002AD2
|
||||
:10000400558BECC41E0C01268B4716A31801B08B2C
|
||||
:0A00140050B8160150E8A1FD5DC3CD
|
||||
:02000002002BD1
|
||||
:10000E00558BEC807E0430720C807E04397706802E
|
||||
:10001E006E0430EB188A46043C41720D3C4677095B
|
||||
:10002E002C41040A884604EB04C64604FF8A4604A3
|
||||
:04003E005DC202009D
|
||||
:02000002002FCD
|
||||
:10000200558BEC807E0430720C807E04397706803A
|
||||
:100012006E0430EB04C64604FF8A46045DC2020049
|
||||
:020000020031CB
|
||||
:10000200558BECC606320100C70626010000C47EED
|
||||
:1000120004B048B90500FC8BD1E306F2AE75F82BAB
|
||||
:10002200D14A8816330183FAFF7447A03201B40023
|
||||
:1000320089C6C45E0426FF30E871FFA231013CFF8D
|
||||
:10004200B0FF7501408A0E3201503A0E3301B0FF03
|
||||
:100052007201405922C1D0D87367A12601B104D3DD
|
||||
:10006200E08A0E3101B50003C1A32601FE0632016A
|
||||
:10007200EBB9A03201B40089C6C45E0426FF30E8A1
|
||||
:100082005EFFA231013CFFB0FF75014050803E325D
|
||||
:100092000105B0FF7201405922C1D0D87323A126B5
|
||||
:1000A20001B90A00F7E18A0E3101B50003C1A326A6
|
||||
:1000B20001803E3201047503A32801FE063201EBE2
|
||||
:1000C200B1A128013B0626017606C7062601FFFFDD
|
||||
:0700D200A126015DC204003C
|
||||
:02000002003EBE
|
||||
:10000900558BECC4760C06C47E088A4E04B5005A9A
|
||||
:100019001E8EDAFC8BD1E306F3A674F82BD14A1FA6
|
||||
:1000290089162A0183FAFF742289D6C45E0C2680B8
|
||||
:100039003820B0FF7401408A4E06B500503BD1B05C
|
||||
:10004900FF7301405922C1D0D87304B0FFEB1CC41F
|
||||
:100059005E0C8B362A0126803820750DB00950B800
|
||||
:0F0069000A0350E80EFCE861FDB0005DC20C0018
|
||||
:020000020045B7
|
||||
:10000800558BECE8C7FCA32C01A12C0188E03C141B
|
||||
:100018007410B8260350E8A4FCB000B4005050E8AF
|
||||
:10002800E3FBB09A50B8000050E8D9FB891E0801DC
|
||||
:100038008C060A01891E0C018C060E01B09950B875
|
||||
:10004800000050E8BFFBA23401B400B92C00F7E16E
|
||||
:10005800C41E080126034754A30C01E8D4FDC41E9E
|
||||
:100068000C0126F7470E0200740DB00950B846037C
|
||||
:1000780050E891FBE9D400823E8000007506B86C18
|
||||
:1000880003E9C300C6066500208D065D001E508D7D
|
||||
:10009800066F031E50B00150B00850E8F3FED0D8E8
|
||||
:1000A800730CC41E0C0126814F0E0100EB238D0634
|
||||
:1000B8005D001E508D0677031E50B00150B00750EA
|
||||
:1000C800E8CEFED0D8730CC41E0C012681670EFE44
|
||||
:1000D800FFEB718D065D001E508D067E031E50B02D
|
||||
:1000E8000150B00450E8A9FED0D872558D065D00C5
|
||||
:1000F8001E508D0682031E50B00150B00450E89087
|
||||
:10010800FED0D873328D066D001E50E8ACFDA32ECC
|
||||
:1001180001A12E0109C0740F3D0020730AC41E0CF2
|
||||
:100128000126894710EB0DB00950B8860350E8D472
|
||||
:10013800FAE827FCE96BFFB00950B8A10350E8C4FE
|
||||
:10014800FAE817FCB8BD0350E872FCE88EFB5DC303
|
||||
:00000001FF
|
||||
@@ -0,0 +1,951 @@
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE VCMODE
|
||||
OBJECT MODULE PLACED IN VCMODE.OBJ
|
||||
COMPILER INVOKED BY: :F0: VCMODE.PLM XREF OPTIMIZE(3) DEBUG
|
||||
|
||||
|
||||
|
||||
$title('VCMODE.CMD - Set Virtual Console Background Mode')
|
||||
$compact
|
||||
1 vcmode:
|
||||
do;
|
||||
|
||||
$include (:f2:copyrt.lit)
|
||||
=
|
||||
= /*
|
||||
= Copyright (C) 1983
|
||||
= Digital Research
|
||||
= P.O. Box 579
|
||||
= Pacific Grove, CA 93950
|
||||
= */
|
||||
=
|
||||
$include (:f2:vaxcmd.lit)
|
||||
=
|
||||
= /**** VAX commands for generation - read the name of this program
|
||||
= for PROGNAME below.
|
||||
=
|
||||
= $ util := PROGNAME
|
||||
= $ ccpmsetup ! set up environment
|
||||
= $ assign 'f$directory()' f1: ! use local dir for temp files
|
||||
= $ plm86 'util'.plm xref 'p1' optimize(3) debug
|
||||
= $ link86 f2:scd.obj, 'util'.obj to 'util'.lnk
|
||||
= $ loc86 'util'.lnk od(sm(code,dats,data,stack,const)) -
|
||||
= ad(sm(code(0),dats(10000h))) ss(stack(+32)) to 'util'.
|
||||
= $ h86 'util'
|
||||
=
|
||||
= ***** Then, on a micro:
|
||||
= A>vax progname.h86 $fans
|
||||
= A>gencmd progname data[b1000]
|
||||
=
|
||||
= ***** Notes: Stack is increased for interrupts. Const(ants) are last
|
||||
= to force hex generation.
|
||||
= ****/
|
||||
$include (:f2:comlit.lit)
|
||||
=
|
||||
2 1 = declare
|
||||
= lit literally 'literally',
|
||||
= dcl lit 'declare',
|
||||
= true lit '0ffh',
|
||||
= false lit '0',
|
||||
= no lit 'not',
|
||||
= boolean lit 'byte',
|
||||
= forever lit 'while true',
|
||||
= cr lit '13',
|
||||
= lf lit '10',
|
||||
= tab lit '9',
|
||||
= ctrlc lit '3',
|
||||
= ff lit '12',
|
||||
= page$len$offset lit '1ch',
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 2
|
||||
|
||||
|
||||
= nopage$mode$offset lit '2Ch',
|
||||
= sectorlen lit '128';
|
||||
$include (:f2:mfunc.lit)
|
||||
=
|
||||
= /* Concurrent CP/M function numbers */
|
||||
=
|
||||
3 1 = dcl m$prtbuf lit '9',
|
||||
= m$select lit '14',
|
||||
= m$openf lit '15',
|
||||
= m$closef lit '16',
|
||||
= m$deletef lit '19',
|
||||
= m$readf lit '20',
|
||||
= m$writef lit '21',
|
||||
= m$makef lit '22',
|
||||
= m$getlogin lit '24',
|
||||
= m$curdsk lit '25',
|
||||
= m$setdma lit '26',
|
||||
= m$setatt lit '30',
|
||||
= m$setusr lit '32',
|
||||
= m$readrf lit '33',
|
||||
= m$writerf lit '34',
|
||||
= m$resetdrv lit '37',
|
||||
= m$errmode lit '45',
|
||||
= m$dirbios lit '50',
|
||||
= m$makeq lit '134',
|
||||
= m$openq lit '135',
|
||||
= m$deleteq lit '136',
|
||||
= m$readq lit '137',
|
||||
= m$creadq lit '138',
|
||||
= m$writeq lit '139',
|
||||
= m$cwriteq lit '140',
|
||||
= m$delay lit '141',
|
||||
= m$dispatch lit '142',
|
||||
= m$setprior lit '145',
|
||||
= m$attach lit '146',
|
||||
= m$detach lit '147',
|
||||
= m$setcns lit '148',
|
||||
= m$parse lit '152',
|
||||
= m$getcns lit '153',
|
||||
= m$sysdat lit '154',
|
||||
= m$getpd lit '156',
|
||||
= m$abort lit '157';
|
||||
=
|
||||
= /* Internal calls */
|
||||
=
|
||||
4 1 = dcl mi$sleep lit '0212H',
|
||||
= mi$wakeup lit '0213H';
|
||||
=
|
||||
$include (:f2:fcb.lit)
|
||||
=
|
||||
5 1 = declare
|
||||
= f$drvusr lit '0', /* drive/user byte */
|
||||
= f$name lit '1', /* file name */
|
||||
= f$namelen lit '8', /* file name length */
|
||||
= f$type lit '9', /* file type field */
|
||||
= f$typelen lit '3', /* type length */
|
||||
= f$rw lit '9', /* high bit is R/W attribute */
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 3
|
||||
|
||||
|
||||
= f$dirsys lit '10', /* high bit is dir/sys attribute */
|
||||
= f$arc lit '11', /* high bit is archive attribute */
|
||||
= f$ex lit '12', /* extent */
|
||||
= f$s1 lit '13', /* module byte */
|
||||
= f$rc lit '15', /* record count */
|
||||
= f$diskmap lit '16', /* file disk map */
|
||||
= diskmaplen lit '16', /* disk map length */
|
||||
= f$drvusr2 lit '16', /* fcb2 */
|
||||
= f$name2 lit '17',
|
||||
= f$type2 lit '25',
|
||||
= f$cr lit '32', /* current record */
|
||||
= f$rrec lit '33', /* random record */
|
||||
= f$rreco lit '35'; /* " " overflow */
|
||||
=
|
||||
|
||||
6 1 dcl fcb (1) byte external;
|
||||
7 1 dcl buff (1) byte external;
|
||||
|
||||
$include (:f2:sd.lit)
|
||||
=
|
||||
= /* System Data Page */
|
||||
=
|
||||
8 1 = dcl sysdat$pointer pointer;
|
||||
9 1 = dcl sysdat$ptr structure(
|
||||
= offset word,
|
||||
= segment word) at (@sysdat$pointer);
|
||||
10 1 = declare sd based sysdat$pointer structure (
|
||||
= supmod (4) word,
|
||||
= /* rtmmod (4) word,
|
||||
= memmod (4) word,
|
||||
= ciomod (4) word,
|
||||
= bdosmod (4) word,
|
||||
= xiosmod (4) word,
|
||||
= netmod (4) word,
|
||||
= reservd (4) word */
|
||||
= space(28) word,
|
||||
= mpmseg word,
|
||||
= rspseg word,
|
||||
= endseg word,
|
||||
= module$map byte,
|
||||
= ncns byte,
|
||||
= nlst byte,
|
||||
= nccb byte,
|
||||
= nflags byte,
|
||||
= srchdisk byte,
|
||||
= mmp word,
|
||||
= nslaves byte,
|
||||
= dayfile byte,
|
||||
= tempdisk byte,
|
||||
= tickspersec byte,
|
||||
= lul word,
|
||||
= ccb word,
|
||||
= flags word,
|
||||
= mdul word,
|
||||
= mfl word,
|
||||
= pul word,
|
||||
= qul word,
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 4
|
||||
|
||||
|
||||
= qmau (4) word,
|
||||
= rlr word,
|
||||
= dlr word,
|
||||
= drl word,
|
||||
= plr word,
|
||||
= slr word,
|
||||
= thrdrt word,
|
||||
= qlr word,
|
||||
= mal word,
|
||||
= version word,
|
||||
= vernum word,
|
||||
= mpmvernum word,
|
||||
= tod (2) word,
|
||||
= tod_sec byte,
|
||||
= ncondev byte,
|
||||
= nlstdev byte,
|
||||
= nciodev byte,
|
||||
= lcb (2) word,
|
||||
= lckmax byte,
|
||||
= opmax byte,
|
||||
= sysltot (2) word,
|
||||
= cmod byte );
|
||||
=
|
||||
=
|
||||
11 1 = declare sd$byte based sysdat$pointer (1) byte;
|
||||
=
|
||||
|
||||
12 1 dcl ccb$pointer pointer;
|
||||
13 1 dcl ccb$ptr structure ( offset address, segment address) at
|
||||
(@ccb$pointer);
|
||||
$include (:f2:vccb.lit)
|
||||
= /* Concurrent CP/M Character Control Block Structure */
|
||||
=
|
||||
= /* +---------+---------+---------+---------+
|
||||
= 00 | attach | queue |
|
||||
= +---------+---------+---------+---------+
|
||||
= 04 | flag | startcol| column | nchar |
|
||||
= +---------+---------+---------+---------+
|
||||
= 08 | mimic | msource | pc | vc |
|
||||
= +---------+---------+---------+---------+
|
||||
= 0C | btmp | resrvd | state |
|
||||
= +---------+---------+---------+---------+
|
||||
= 10 | maxbufsiz | vinq |
|
||||
= +---------+---------+---------+---------+
|
||||
= 14 | voutq | vcmxq |
|
||||
= +---------+---------+---------+---------+
|
||||
= 18 | qpbflgs | qpbfill | qpbqaddr |
|
||||
= +---------+---------+---------+---------+
|
||||
= 1C | qpbnmsgs | qpbbuffptr |
|
||||
= +---------+---------+---------+---------+
|
||||
= 20 | qbuff | cosleep |
|
||||
= +---------+---------+---------+---------+
|
||||
= 24 | usleep | vsleep |
|
||||
= +---------+---------+---------+---------+
|
||||
= 28 | ... reserved ... |
|
||||
= +---------+---------+---------+---------+
|
||||
=
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 5
|
||||
|
||||
|
||||
=
|
||||
=
|
||||
=
|
||||
= */
|
||||
=
|
||||
14 1 = dcl ccb$structure lit 'structure (attach address, queue address,
|
||||
= flag byte, startcol byte, column byte, nchar byte, mimic byte, msource byte,
|
||||
= ccb$tail1';
|
||||
15 1 = dcl ccb$tail1 lit
|
||||
= 'pc byte, vc byte, btmp byte, reservd byte, state word, maxbufsiz word,
|
||||
= ccb$tail2';
|
||||
16 1 = dcl ccb$tail2 lit
|
||||
= 'vinq address, voutq address, vcmxq address,
|
||||
= qpbflags byte, qpbresrvd byte, qpbqaddr address,
|
||||
= qpbnmsgs address, qpbbuffptr address, qbuff address, cosleep word,
|
||||
= usleep word, vsleep word, r1 word, r2 word)';
|
||||
=
|
||||
17 1 = declare /* flag values */
|
||||
= cf$listcp lit '001h', /* control P toggle */
|
||||
= cf$compc lit '002h', /* suppress output */
|
||||
= cf$switchs lit '004h', /* XIOS supports switch screening */
|
||||
= cf$conout lit '008h', /* XIOS console output ownership */
|
||||
= cf$vout lit '010h', /* process writing to VOUTQ */
|
||||
= cf$bufp lit '020h'; /* toggle to control printer echo */
|
||||
= /* on control P when background */
|
||||
= /* and buffered */
|
||||
= /* values of state byte */
|
||||
= /* conout goes to XIOS */
|
||||
=
|
||||
= /* state word flags */
|
||||
=
|
||||
18 1 = dcl
|
||||
= csm$buffered lit '0001h',
|
||||
= csm$background lit '0002h',
|
||||
= csm$purging lit '0004h',
|
||||
= csm$noswitch lit '0008h',
|
||||
= csm$suspend lit '0010h',
|
||||
= csm$abort lit '0020h',
|
||||
= csm$filefull lit '0040h',
|
||||
= csm$ctrlS lit '0080h',
|
||||
= csm$ctrlO lit '0100h',
|
||||
= csm$ctrlP lit '0200h';
|
||||
=
|
||||
19 1 = dcl x$init$offset lit '0Ch',
|
||||
= x$init$pointer pointer,
|
||||
= x$init$ptr structure (offset word, segment word) at (@x$init$pointer),
|
||||
= x$init based x$init$pointer structure
|
||||
= (tick byte, ticks$sec byte, door byte, resrvd1 (2) byte,
|
||||
= nvcns byte, nccb byte, nlst byte, ccb word, lcb word);
|
||||
=
|
||||
=
|
||||
20 1 = dcl lcb$structure lit 'structure (attach address, queue address,
|
||||
= flag byte, startcol byte, column byte, nchar byte,
|
||||
= mimic byte, msource byte)';
|
||||
=
|
||||
21 1 dcl ccb based ccb$pointer ccb$structure;
|
||||
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 6
|
||||
|
||||
|
||||
22 1 dcl ccpmproduct lit '14h';
|
||||
23 1 dcl bdosversion lit '31h';
|
||||
|
||||
24 1 mon1: procedure (func,info) external;
|
||||
25 2 declare func byte;
|
||||
26 2 declare info address;
|
||||
27 2 end mon1;
|
||||
|
||||
28 1 mon2: procedure (func,info) byte external;
|
||||
29 2 declare func byte;
|
||||
30 2 declare info address;
|
||||
31 2 end mon2;
|
||||
|
||||
32 1 mon3: procedure (func,info) address external;
|
||||
33 2 dcl func byte, info address;
|
||||
34 2 end mon3;
|
||||
|
||||
35 1 mon4: procedure (func,info) pointer external;
|
||||
36 2 dcl func byte, info address;
|
||||
37 2 end mon4;
|
||||
|
||||
|
||||
|
||||
/**************************************
|
||||
* *
|
||||
* B D O S Externals *
|
||||
* *
|
||||
**************************************/
|
||||
|
||||
38 1 print$char: procedure(char);
|
||||
39 2 declare char byte;
|
||||
40 2 call mon1(2,char);
|
||||
41 2 end print$char;
|
||||
|
||||
42 1 print$console$buffer: procedure (buffer$address);
|
||||
43 2 declare buffer$address address;
|
||||
44 2 call mon1 (9,buffer$address);
|
||||
45 2 end print$console$buffer;
|
||||
|
||||
46 1 version: procedure address;
|
||||
47 2 return mon3(12,0);
|
||||
48 2 end version;
|
||||
|
||||
/**************************************
|
||||
* *
|
||||
* X D O S Externals *
|
||||
* *
|
||||
**************************************/
|
||||
|
||||
49 1 terminate: procedure;
|
||||
50 2 call mon1 (143,0);
|
||||
51 2 end terminate;
|
||||
|
||||
52 1 get$console$number: procedure byte;
|
||||
53 2 return mon2 (153,0);
|
||||
54 2 end get$console$number;
|
||||
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 7
|
||||
|
||||
|
||||
55 1 printb: procedure public;
|
||||
56 2 call print$char(' ');
|
||||
57 2 end printb;
|
||||
|
||||
58 1 pdecimal: procedure(v,prec,zerosup) public;
|
||||
/* print value v, field size = (log10 prec) + 1 */
|
||||
/* with leading zero suppression if zerosup = true */
|
||||
59 2 declare v address, /* value to print */
|
||||
prec address, /* precision */
|
||||
zerosup boolean, /* zero suppression flag */
|
||||
d byte; /* current decimal digit */
|
||||
|
||||
60 2 do while prec <> 0;
|
||||
61 3 d = v / prec; /* get next digit */
|
||||
62 3 v = v mod prec; /* get remainder back to v */
|
||||
63 3 prec = prec / 10; /* ready for next digit */
|
||||
64 3 if prec <> 0 and zerosup and d = 0 then
|
||||
65 3 call printb;
|
||||
else
|
||||
66 3 do;
|
||||
67 4 zerosup = false;
|
||||
68 4 call printchar('0'+d);
|
||||
69 4 end;
|
||||
70 3 end;
|
||||
71 2 end pdecimal;
|
||||
|
||||
/*lbracket: procedure byte; /* find left bracket in command tail return */
|
||||
/* dcl i byte; /* its index. if not found ret 0 */
|
||||
/* i = 1;
|
||||
do while i <= buff(0) and (buff(i) = ' ' or buff(i) = tab);
|
||||
i = i + 1;
|
||||
end;
|
||||
if buff(i) = '[' then
|
||||
return(i);
|
||||
return(0);
|
||||
end lbracket;
|
||||
*/
|
||||
|
||||
72 1 help: procedure;
|
||||
73 2 call mon1(m$prt$buf, .(cr, lf, tab, tab, tab ,'VCMODE EXAMPLES$'));
|
||||
74 2 call mon1(m$prt$buf, .(cr, lf, lf, 'vcmode', tab, tab, tab, tab, tab,
|
||||
'(show background mode)$'));
|
||||
75 2 call mon1(m$prt$buf, .(cr, lf, 'vcmode dynamic', tab, tab, tab, tab,
|
||||
'(sets background mode)$'));
|
||||
76 2 call mon1(m$prt$buf, .(cr, lf, 'vcmode buffered', tab, tab, tab, tab,
|
||||
tab, '"$'));
|
||||
/* call mon1(m$prt$buf, .(cr, lf, 'vcmode suspend', tab, tab, tab, tab,
|
||||
tab, '"$'));*/
|
||||
77 2 call mon1(m$prt$buf, .(cr, lf, 'vcmode size = 5', tab, tab, tab, tab,
|
||||
'(sets buffered mode max file size in)$'));
|
||||
78 2 call mon1(m$prt$buf, .(cr, lf, tab, tab, tab, tab, tab,
|
||||
'(kilobytes, legal range is 1 to 8191)$'));
|
||||
79 2 call mon1(m$prt$buf, .(cr, lf, tab, tab, tab, tab, tab,
|
||||
'(also sets background mode to buffered)$'));
|
||||
/* call mon1(m$prt$buf, .(cr, lf, 'vcmode size = 100H', tab, tab, tab,
|
||||
'(legal range in HEX is 1H to 1FFFFH)$'));*/
|
||||
80 2 call mon1(m$prt$buf, .(cr, lf, 'vcmode help', tab, tab, tab, tab,
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 8
|
||||
|
||||
|
||||
'(prints this message)$'));
|
||||
81 2 call mon1(m$prt$buf, .(cr, lf, '$'));
|
||||
82 2 call terminate;
|
||||
83 2 end help;
|
||||
|
||||
84 1 showstate: procedure (verb);
|
||||
85 2 dcl (verb,state) address;
|
||||
86 2 call mon1(m$prt$buf, .(cr,lf,'Background Mode For Virtual Console$'));
|
||||
87 2 call pdecimal (console, 100, true);
|
||||
88 2 call printb;
|
||||
89 2 call mon1(m$prt$buf, verb);
|
||||
90 2 state = ccb.state and csm$buffered;
|
||||
91 2 if state = 0 then
|
||||
92 2 call mon1(m$prt$buf, .(' Dynamic$'));
|
||||
else
|
||||
93 2 do;
|
||||
94 3 call mon1(m$prt$buf, .(' Buffered', cr, lf, 'Maximum file size = $'));
|
||||
95 3 call pdecimal(ccb.maxbufsiz, 10000, true);
|
||||
96 3 call mon1(m$prt$buf, .('K$'));
|
||||
97 3 end;
|
||||
98 2 call mon1(m$prt$buf, .(cr, lf, '$'));
|
||||
|
||||
99 2 end show$state;
|
||||
|
||||
$include (:f2:qd.lit)
|
||||
=
|
||||
= /* Queue Descriptor */
|
||||
=
|
||||
100 1 = dcl qnamsiz lit '8';
|
||||
=
|
||||
101 1 = dcl qd$structure lit 'structure(
|
||||
= link word,
|
||||
= net byte,
|
||||
= org byte,
|
||||
= flags word,
|
||||
= name(qnamsiz) byte,
|
||||
= msglen word,
|
||||
= nmsgs word,
|
||||
= dq word,
|
||||
= nq word,
|
||||
= msgcnt word,
|
||||
= msgout word,
|
||||
= buffer word)';
|
||||
=
|
||||
= /* queue flag values */
|
||||
=
|
||||
102 1 = dcl qf$mx lit '001h'; /* Mutual Exclusion */
|
||||
103 1 = dcl qf$keep lit '002h'; /* NO DELETE */
|
||||
104 1 = dcl qf$hide lit '004h'; /* Not User writable */
|
||||
105 1 = dcl qf$rsp lit '008h'; /* rsp queue */
|
||||
106 1 = dcl qf$table lit '010h'; /* from qd table */
|
||||
107 1 = dcl qf$rpl lit '020h'; /* rpl queue */
|
||||
108 1 = dcl qf$dev lit '040h'; /* device queue */
|
||||
=
|
||||
= /* Queue Parameter Block */
|
||||
=
|
||||
109 1 = dcl qpb$structure lit 'structure(
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 9
|
||||
|
||||
|
||||
= flgs byte,
|
||||
= net byte,
|
||||
= qaddr word,
|
||||
= nmsgs word,
|
||||
= buffptr word,
|
||||
= name (qnamsiz) byte )';
|
||||
=
|
||||
|
||||
110 1 dcl qpb qpb$structure;
|
||||
|
||||
111 1 read$change$mxq: procedure;
|
||||
112 2 qpb.qaddr = ccb.vcmxq;
|
||||
113 2 call mon1 (m$readq, .qpb);
|
||||
114 2 end read$change$mxq;
|
||||
|
||||
115 1 write$change$mxq: procedure;
|
||||
116 2 qpb.qaddr = ccb.vcmxq;
|
||||
117 2 call mon1 (m$writeq, .qpb);
|
||||
118 2 end write$change$mxq;
|
||||
|
||||
119 1 atohb: procedure (char) byte public; /* convert ascii hex to nibble value */
|
||||
120 2 declare char byte;
|
||||
121 2 if char >= '0' and char <= '9' then
|
||||
122 2 char = char - '0';
|
||||
123 2 else if char >= 'A' and char <= 'F' then
|
||||
124 2 char = char - 'A' + 10;
|
||||
else
|
||||
125 2 char = 255;
|
||||
126 2 return(char);
|
||||
127 2 end atohb;
|
||||
|
||||
128 1 atodb: procedure (char) byte public;/* convert ascii decimal to nibble value */
|
||||
129 2 declare char byte;
|
||||
130 2 if char >= '0' and char <= '9' then
|
||||
131 2 char = char - '0';
|
||||
else
|
||||
132 2 char = 255;
|
||||
133 2 return(char);
|
||||
134 2 end atodb;
|
||||
|
||||
135 1 atoi: procedure(str) word; /* convert ascii to 16 bit unsigned value */
|
||||
136 2 dcl str pointer;
|
||||
137 2 dcl (accum, temp) word;
|
||||
138 2 dcl (val, i, len) byte;
|
||||
139 2 dcl string based str (1) byte;
|
||||
140 2 i, accum = 0;
|
||||
141 2 if (len := findb(str, 'H', 5)) <> 0ffffh then /* hex conversion */
|
||||
142 2 do while (val := atohb(string(i))) <> 0ffh and i < len;
|
||||
143 3 accum = shl(accum, 4) + val;
|
||||
144 3 i = i + 1;
|
||||
145 3 end;
|
||||
else /* decimal is default base */
|
||||
146 2 do while (val := atodb(string(i))) <> 0ffh and i < 5;
|
||||
147 3 accum = 10 * accum + val;
|
||||
148 3 if i = 4 then
|
||||
149 3 temp = accum;
|
||||
150 3 i = i + 1;
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 10
|
||||
|
||||
|
||||
151 3 end;
|
||||
152 2 if temp > accum then /* overflow */
|
||||
153 2 accum = 0ffffh;
|
||||
154 2 return(accum);
|
||||
155 2 end atoi;
|
||||
|
||||
156 1 compare: procedure(ustr, ostr, minlen, maxlen) boolean;
|
||||
157 2 dcl (ustr, ostr) pointer; /* user string, option string */
|
||||
158 2 dcl user$string based ustr (1) byte;
|
||||
159 2 dcl (minlen, maxlen) byte;
|
||||
160 2 dcl cmplen word;
|
||||
161 2 cmplen = cmpb(ustr, ostr, maxlen);
|
||||
162 2 if cmplen = 0ffffh or (user$string(cmplen) = ' ' and cmplen >= minlen) then
|
||||
163 2 return(true);
|
||||
164 2 if user$string(cmplen) = ' ' then
|
||||
165 2 do;
|
||||
166 3 call mon1(m$prt$buf, .(cr,lf,'Invalid Command Option.', cr ,lf, '$'));
|
||||
167 3 call help;
|
||||
168 3 end;
|
||||
169 2 return(false);
|
||||
170 2 end compare;
|
||||
|
||||
171 1 dcl vers address initial (0);
|
||||
172 1 dcl no$state lit '0ffh';
|
||||
173 1 dcl console byte;
|
||||
|
||||
/*
|
||||
Main Program
|
||||
*/
|
||||
|
||||
174 1 plmstart: procedure public;
|
||||
175 2 dcl option$ptr byte;
|
||||
176 2 dcl num word;
|
||||
177 2 vers = version;
|
||||
178 2 if (high(vers) <> ccpmproduct) then
|
||||
179 2 do;
|
||||
180 3 call print$console$buffer(.(cr,lf,'Requires Concurrent CP/M-86', cr, lf,
|
||||
'$'));
|
||||
181 3 call mon1(0,0);
|
||||
182 3 end;
|
||||
|
||||
183 2 sysdat$pointer, ccb$pointer = mon4(m$sysdat, 0); /* system data segment */
|
||||
184 2 ccb$ptr.offset = sd.ccb + (console := mon2(m$getcns, 0)) * size(ccb);
|
||||
|
||||
185 2 call read$change$mxq; /* MXQ is written in kernel terminate code */
|
||||
186 2 if (ccb.state and csm$background) <> 0 then
|
||||
187 2 call mon1(m$prt$buf, .(cr,lf,'Virtual Console not in foreground', cr, lf,
|
||||
'$'));
|
||||
188 2 else if buff(0) = 0 then
|
||||
189 2 call show$state(.('is$')); /* show current state */
|
||||
else /* try to set state or show help message */
|
||||
190 2 do;
|
||||
191 3 fcb(f$type) = ' ';
|
||||
192 3 if compare(@fcb(f$name), @('BUFFERED'), 1, 8) then
|
||||
193 3 ccb.state = ccb.state or csm$buffered;
|
||||
194 3 else if compare(@fcb(f$name), @('DYNAMIC'), 1, 7) then
|
||||
195 3 ccb.state = ccb.state and not double(csm$buffered);
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 11
|
||||
|
||||
|
||||
196 3 else if compare(@fcb(f$name), @('HELP'), 1, 4) then
|
||||
197 3 call help;
|
||||
198 3 else if compare(@fcb(f$name), @('SIZE'), 1, 4) then /* change to 2,4 */
|
||||
199 3 do; /* when suspend is put back in */
|
||||
200 4 num = atoi(@fcb(f$name2));
|
||||
201 4 if num > 0 and num < 2000H then
|
||||
202 4 ccb.maxbufsiz = num; /* limit size to 16 bit record count */
|
||||
else
|
||||
203 4 do;
|
||||
204 5 call mon1(m$prt$buf, .(cr,lf,'File size out of range', cr ,lf, '$'));
|
||||
205 5 call help;
|
||||
206 5 end;
|
||||
207 4 ccb.state = ccb.state or csm$buffered;
|
||||
/* automatically sets to buffered */
|
||||
208 4 end;
|
||||
else
|
||||
209 3 do;
|
||||
210 4 call mon1(m$prt$buf, .(cr,lf,'Invalid Command Option.', cr ,lf, '$'));
|
||||
211 4 call help;
|
||||
212 4 end;
|
||||
213 3 call show$state(.('set to$'));
|
||||
214 3 end;
|
||||
215 2 call terminate;
|
||||
|
||||
216 2 end plmstart;
|
||||
217 1 end vcmode;
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 12
|
||||
|
||||
|
||||
CROSS-REFERENCE LISTING
|
||||
-----------------------
|
||||
|
||||
|
||||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||||
----- ------ ----- --------------------------------
|
||||
|
||||
|
||||
137 001EH 2 ACCUM. . . . . . . WORD 140 143 147 149 152 153 154
|
||||
128 01F2H 32 ATODB. . . . . . . PROCEDURE BYTE PUBLIC STACK=0004H 146
|
||||
119 01BEH 52 ATOHB. . . . . . . PROCEDURE BYTE PUBLIC STACK=0004H 142
|
||||
135 0212H 215 ATOI . . . . . . . PROCEDURE WORD STACK=000CH 200
|
||||
21 0000H 2 ATTACH . . . . . . WORD MEMBER(CCB)
|
||||
23 BDOSVERSION. . . . LITERALLY
|
||||
2 BOOLEAN. . . . . . LITERALLY 59 156
|
||||
21 000CH 1 BTMP . . . . . . . BYTE MEMBER(CCB)
|
||||
7 0000H 1 BUFF . . . . . . . BYTE ARRAY(1) EXTERNAL(1) 188
|
||||
42 0004H 2 BUFFERADDRESS. . . WORD PARAMETER AUTOMATIC 43 44
|
||||
110 0006H 2 BUFFPTR. . . . . . WORD MEMBER(QPB)
|
||||
10 0054H 2 CCB. . . . . . . . WORD MEMBER(SD) 184
|
||||
21 0000H 44 CCB. . . . . . . . STRUCTURE BASED(CCBPOINTER) 90 95 112 116 184 186 193
|
||||
195 202 207
|
||||
19 0008H 2 CCB. . . . . . . . WORD MEMBER(XINIT)
|
||||
12 0004H 4 CCBPOINTER . . . . POINTER 13 21 90 95 112 116 183 186 193 195 202
|
||||
207
|
||||
13 0004H 4 CCBPTR . . . . . . STRUCTURE AT 184
|
||||
14 CCBSTRUCTURE . . . LITERALLY 21
|
||||
15 CCBTAIL1 . . . . . LITERALLY 21
|
||||
16 CCBTAIL2 . . . . . LITERALLY 21
|
||||
22 CCPMPRODUCT. . . . LITERALLY 178
|
||||
17 CFBUFP . . . . . . LITERALLY
|
||||
17 CFCOMPC. . . . . . LITERALLY
|
||||
17 CFCONOUT . . . . . LITERALLY
|
||||
17 CFLISTCP . . . . . LITERALLY
|
||||
17 CFSWITCHS. . . . . LITERALLY
|
||||
17 CFVOUT . . . . . . LITERALLY
|
||||
119 0004H 1 CHAR . . . . . . . BYTE PARAMETER AUTOMATIC 120 121 122 123 124 125 126
|
||||
38 0004H 1 CHAR . . . . . . . BYTE PARAMETER AUTOMATIC 39 40
|
||||
128 0004H 1 CHAR . . . . . . . BYTE PARAMETER AUTOMATIC 129 130 131 132 133
|
||||
10 0090H 1 CMOD . . . . . . . BYTE MEMBER(SD)
|
||||
CMPB . . . . . . . BUILTIN 161
|
||||
160 0022H 2 CMPLEN . . . . . . WORD 161 162 164
|
||||
21 0006H 1 COLUMN . . . . . . BYTE MEMBER(CCB)
|
||||
156 02E9H 111 COMPARE. . . . . . PROCEDURE BYTE STACK=001CH 192 194 196 198
|
||||
173 002CH 1 CONSOLE. . . . . . BYTE 87 184
|
||||
21 0022H 2 COSLEEP. . . . . . WORD MEMBER(CCB)
|
||||
2 CR . . . . . . . . LITERALLY 73 74 75 76 77 78 79 80 81 86 94
|
||||
98 166 180 187 204 210
|
||||
18 CSMABORT . . . . . LITERALLY
|
||||
18 CSMBACKGROUND. . . LITERALLY 186
|
||||
18 CSMBUFFERED. . . . LITERALLY 90 193 195 207
|
||||
18 CSMCTRLO . . . . . LITERALLY
|
||||
18 CSMCTRLP . . . . . LITERALLY
|
||||
18 CSMCTRLS . . . . . LITERALLY
|
||||
18 CSMFILEFULL. . . . LITERALLY
|
||||
18 CSMNOSWITCH. . . . LITERALLY
|
||||
18 CSMPURGING . . . . LITERALLY
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 13
|
||||
|
||||
|
||||
18 CSMSUSPEND . . . . LITERALLY
|
||||
2 CTRLC. . . . . . . LITERALLY
|
||||
59 0028H 1 D. . . . . . . . . BYTE 61 64 68
|
||||
10 004FH 1 DAYFILE. . . . . . BYTE MEMBER(SD)
|
||||
2 DCL. . . . . . . . LITERALLY
|
||||
5 DISKMAPLEN . . . . LITERALLY
|
||||
10 006AH 2 DLR. . . . . . . . WORD MEMBER(SD)
|
||||
19 0002H 1 DOOR . . . . . . . BYTE MEMBER(XINIT)
|
||||
DOUBLE . . . . . . BUILTIN 195
|
||||
10 006CH 2 DRL. . . . . . . . WORD MEMBER(SD)
|
||||
10 0044H 2 ENDSEG . . . . . . WORD MEMBER(SD)
|
||||
2 FALSE. . . . . . . LITERALLY 67 169
|
||||
5 FARC . . . . . . . LITERALLY
|
||||
6 0000H 1 FCB. . . . . . . . BYTE ARRAY(1) EXTERNAL(0) 191 192 194 196 198 200
|
||||
5 FCR. . . . . . . . LITERALLY
|
||||
5 FDIRSYS. . . . . . LITERALLY
|
||||
5 FDISKMAP . . . . . LITERALLY
|
||||
5 FDRVUSR. . . . . . LITERALLY
|
||||
5 FDRVUSR2 . . . . . LITERALLY
|
||||
5 FEX. . . . . . . . LITERALLY
|
||||
2 FF . . . . . . . . LITERALLY
|
||||
FINDB. . . . . . . BUILTIN 141
|
||||
21 0004H 1 FLAG . . . . . . . BYTE MEMBER(CCB)
|
||||
10 0056H 2 FLAGS. . . . . . . WORD MEMBER(SD)
|
||||
110 0000H 1 FLGS . . . . . . . BYTE MEMBER(QPB)
|
||||
5 FNAME. . . . . . . LITERALLY 192 194 196 198
|
||||
5 FNAME2 . . . . . . LITERALLY 200
|
||||
5 FNAMELEN . . . . . LITERALLY
|
||||
2 FOREVER. . . . . . LITERALLY
|
||||
5 FRC. . . . . . . . LITERALLY
|
||||
5 FRREC. . . . . . . LITERALLY
|
||||
5 FRRECO . . . . . . LITERALLY
|
||||
5 FRW. . . . . . . . LITERALLY
|
||||
5 FS1. . . . . . . . LITERALLY
|
||||
5 FTYPE. . . . . . . LITERALLY 191
|
||||
5 FTYPE2 . . . . . . LITERALLY
|
||||
5 FTYPELEN . . . . . LITERALLY
|
||||
32 0000H 1 FUNC . . . . . . . BYTE PARAMETER 33
|
||||
35 0000H 1 FUNC . . . . . . . BYTE PARAMETER 36
|
||||
28 0000H 1 FUNC . . . . . . . BYTE PARAMETER 29
|
||||
24 0000H 1 FUNC . . . . . . . BYTE PARAMETER 25
|
||||
52 0043H 15 GETCONSOLENUMBER . PROCEDURE BYTE STACK=0008H
|
||||
72 00B3H 98 HELP . . . . . . . PROCEDURE STACK=000CH 167 197 205 211
|
||||
HIGH . . . . . . . BUILTIN 178
|
||||
138 002AH 1 I. . . . . . . . . BYTE 140 142 144 146 148 150
|
||||
35 0000H 2 INFO . . . . . . . WORD PARAMETER 36
|
||||
32 0000H 2 INFO . . . . . . . WORD PARAMETER 33
|
||||
28 0000H 2 INFO . . . . . . . WORD PARAMETER 30
|
||||
24 0000H 2 INFO . . . . . . . WORD PARAMETER 26
|
||||
19 000AH 2 LCB. . . . . . . . WORD MEMBER(XINIT)
|
||||
10 0086H 4 LCB. . . . . . . . WORD ARRAY(2) MEMBER(SD)
|
||||
20 LCBSTRUCTURE . . . LITERALLY
|
||||
10 008AH 1 LCKMAX . . . . . . BYTE MEMBER(SD)
|
||||
138 002BH 1 LEN. . . . . . . . BYTE 141 142
|
||||
2 LF . . . . . . . . LITERALLY 73 74 75 76 77 78 79 80 81 86 94
|
||||
98 166 180 187 204 210
|
||||
2 LIT. . . . . . . . LITERALLY 2 3 4 5 14 15 16 17 18 19 20
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 14
|
||||
|
||||
|
||||
22 23 100 101 102 103 104 105 106 107 108 109 172
|
||||
10 0052H 2 LUL. . . . . . . . WORD MEMBER(SD)
|
||||
3 MABORT . . . . . . LITERALLY
|
||||
10 0076H 2 MAL. . . . . . . . WORD MEMBER(SD)
|
||||
3 MATTACH. . . . . . LITERALLY
|
||||
21 0010H 2 MAXBUFSIZ. . . . . WORD MEMBER(CCB) 95 202
|
||||
156 0004H 1 MAXLEN . . . . . . BYTE PARAMETER AUTOMATIC 159 161
|
||||
3 MCLOSEF. . . . . . LITERALLY
|
||||
3 MCREADQ. . . . . . LITERALLY
|
||||
3 MCURDSK. . . . . . LITERALLY
|
||||
3 MCWRITEQ . . . . . LITERALLY
|
||||
3 MDELAY . . . . . . LITERALLY
|
||||
3 MDELETEF . . . . . LITERALLY
|
||||
3 MDELETEQ . . . . . LITERALLY
|
||||
3 MDETACH. . . . . . LITERALLY
|
||||
3 MDIRBIOS . . . . . LITERALLY
|
||||
3 MDISPATCH. . . . . LITERALLY
|
||||
10 0058H 2 MDUL . . . . . . . WORD MEMBER(SD)
|
||||
3 MERRMODE . . . . . LITERALLY
|
||||
10 005AH 2 MFL. . . . . . . . WORD MEMBER(SD)
|
||||
3 MGETCNS. . . . . . LITERALLY 184
|
||||
3 MGETLOGIN. . . . . LITERALLY
|
||||
3 MGETPD . . . . . . LITERALLY
|
||||
21 0008H 1 MIMIC. . . . . . . BYTE MEMBER(CCB)
|
||||
156 0006H 1 MINLEN . . . . . . BYTE PARAMETER AUTOMATIC 159 162
|
||||
4 MISLEEP. . . . . . LITERALLY
|
||||
4 MIWAKEUP . . . . . LITERALLY
|
||||
3 MMAKEF . . . . . . LITERALLY
|
||||
3 MMAKEQ . . . . . . LITERALLY
|
||||
10 004CH 2 MMP. . . . . . . . WORD MEMBER(SD)
|
||||
10 0046H 1 MODULEMAP. . . . . BYTE MEMBER(SD)
|
||||
24 0000H MON1 . . . . . . . PROCEDURE EXTERNAL(2) STACK=0000H 40 44 50 73 74 75
|
||||
76 77 78 79 80 81 86 89 92 94 96 98 113 117
|
||||
166 181 187 204 210
|
||||
28 0000H MON2 . . . . . . . PROCEDURE BYTE EXTERNAL(3) STACK=0000H 53 184
|
||||
32 0000H MON3 . . . . . . . PROCEDURE WORD EXTERNAL(4) STACK=0000H 47
|
||||
35 0000H MON4 . . . . . . . PROCEDURE POINTER EXTERNAL(5) STACK=0000H 183
|
||||
3 MOPENF . . . . . . LITERALLY
|
||||
3 MOPENQ . . . . . . LITERALLY
|
||||
3 MPARSE . . . . . . LITERALLY
|
||||
10 0040H 2 MPMSEG . . . . . . WORD MEMBER(SD)
|
||||
10 007CH 2 MPMVERNUM. . . . . WORD MEMBER(SD)
|
||||
3 MPRTBUF. . . . . . LITERALLY 73 74 75 76 77 78 79 80 81 86 89
|
||||
92 94 96 98 166 187 204 210
|
||||
3 MREADF . . . . . . LITERALLY
|
||||
3 MREADQ . . . . . . LITERALLY 113
|
||||
3 MREADRF. . . . . . LITERALLY
|
||||
3 MRESETDRV. . . . . LITERALLY
|
||||
3 MSELECT. . . . . . LITERALLY
|
||||
3 MSETATT. . . . . . LITERALLY
|
||||
3 MSETCNS. . . . . . LITERALLY
|
||||
3 MSETDMA. . . . . . LITERALLY
|
||||
3 MSETPRIOR. . . . . LITERALLY
|
||||
3 MSETUSR. . . . . . LITERALLY
|
||||
21 0009H 1 MSOURCE. . . . . . BYTE MEMBER(CCB)
|
||||
3 MSYSDAT. . . . . . LITERALLY 183
|
||||
3 MWRITEF. . . . . . LITERALLY
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 15
|
||||
|
||||
|
||||
3 MWRITEQ. . . . . . LITERALLY 117
|
||||
3 MWRITERF . . . . . LITERALLY
|
||||
110 0008H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(QPB)
|
||||
10 0049H 1 NCCB . . . . . . . BYTE MEMBER(SD)
|
||||
19 0006H 1 NCCB . . . . . . . BYTE MEMBER(XINIT)
|
||||
21 0007H 1 NCHAR. . . . . . . BYTE MEMBER(CCB)
|
||||
10 0085H 1 NCIODEV. . . . . . BYTE MEMBER(SD)
|
||||
10 0047H 1 NCNS . . . . . . . BYTE MEMBER(SD)
|
||||
10 0083H 1 NCONDEV. . . . . . BYTE MEMBER(SD)
|
||||
110 0001H 1 NET. . . . . . . . BYTE MEMBER(QPB)
|
||||
10 004AH 1 NFLAGS . . . . . . BYTE MEMBER(SD)
|
||||
19 0007H 1 NLST . . . . . . . BYTE MEMBER(XINIT)
|
||||
10 0048H 1 NLST . . . . . . . BYTE MEMBER(SD)
|
||||
10 0084H 1 NLSTDEV. . . . . . BYTE MEMBER(SD)
|
||||
110 0004H 2 NMSGS. . . . . . . WORD MEMBER(QPB)
|
||||
2 NO . . . . . . . . LITERALLY
|
||||
2 NOPAGEMODEOFFSET . LITERALLY
|
||||
172 NOSTATE. . . . . . LITERALLY
|
||||
10 004EH 1 NSLAVES. . . . . . BYTE MEMBER(SD)
|
||||
176 0026H 2 NUM. . . . . . . . WORD 200 201 202
|
||||
19 0005H 1 NVCNS. . . . . . . BYTE MEMBER(XINIT)
|
||||
9 0000H 2 OFFSET . . . . . . WORD MEMBER(SYSDATPTR)
|
||||
19 0000H 2 OFFSET . . . . . . WORD MEMBER(XINITPTR)
|
||||
13 0000H 2 OFFSET . . . . . . WORD MEMBER(CCBPTR) 184
|
||||
10 008BH 1 OPMAX. . . . . . . BYTE MEMBER(SD)
|
||||
175 002DH 1 OPTIONPTR. . . . . BYTE
|
||||
156 0008H 4 OSTR . . . . . . . POINTER PARAMETER AUTOMATIC 157 161
|
||||
2 PAGELENOFFSET. . . LITERALLY
|
||||
21 000AH 1 PC . . . . . . . . BYTE MEMBER(CCB)
|
||||
58 005DH 86 PDECIMAL . . . . . PROCEDURE PUBLIC STACK=0018H 87 95
|
||||
174 0358H 336 PLMSTART . . . . . PROCEDURE PUBLIC STACK=0022H
|
||||
10 006EH 2 PLR. . . . . . . . WORD MEMBER(SD)
|
||||
58 0006H 2 PREC . . . . . . . WORD PARAMETER AUTOMATIC 59 60 61 62 63 64
|
||||
55 0052H 11 PRINTB . . . . . . PROCEDURE PUBLIC STACK=000EH 65 88
|
||||
38 0002H 19 PRINTCHAR. . . . . PROCEDURE STACK=000AH 56 68
|
||||
42 0015H 16 PRINTCONSOLEBUFFER PROCEDURE STACK=000AH 180
|
||||
10 005CH 2 PUL. . . . . . . . WORD MEMBER(SD)
|
||||
110 0002H 2 QADDR. . . . . . . WORD MEMBER(QPB) 112 116
|
||||
21 0020H 2 QBUFF. . . . . . . WORD MEMBER(CCB)
|
||||
101 QDSTRUCTURE. . . . LITERALLY
|
||||
108 QFDEV. . . . . . . LITERALLY
|
||||
104 QFHIDE . . . . . . LITERALLY
|
||||
103 QFKEEP . . . . . . LITERALLY
|
||||
102 QFMX . . . . . . . LITERALLY
|
||||
107 QFRPL. . . . . . . LITERALLY
|
||||
105 QFRSP. . . . . . . LITERALLY
|
||||
106 QFTABLE. . . . . . LITERALLY
|
||||
10 0074H 2 QLR. . . . . . . . WORD MEMBER(SD)
|
||||
10 0060H 8 QMAU . . . . . . . WORD ARRAY(4) MEMBER(SD)
|
||||
100 QNAMSIZ. . . . . . LITERALLY 110
|
||||
110 000EH 16 QPB. . . . . . . . STRUCTURE 112 113 116 117
|
||||
21 001EH 2 QPBBUFFPTR . . . . WORD MEMBER(CCB)
|
||||
21 0018H 1 QPBFLAGS . . . . . BYTE MEMBER(CCB)
|
||||
21 001CH 2 QPBNMSGS . . . . . WORD MEMBER(CCB)
|
||||
21 001AH 2 QPBQADDR . . . . . WORD MEMBER(CCB)
|
||||
21 0019H 1 QPBRESRVD. . . . . BYTE MEMBER(CCB)
|
||||
109 QPBSTRUCTURE . . . LITERALLY 110
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 16
|
||||
|
||||
|
||||
21 0002H 2 QUEUE. . . . . . . WORD MEMBER(CCB)
|
||||
10 005EH 2 QUL. . . . . . . . WORD MEMBER(SD)
|
||||
21 0028H 2 R1 . . . . . . . . WORD MEMBER(CCB)
|
||||
21 002AH 2 R2 . . . . . . . . WORD MEMBER(CCB)
|
||||
111 018AH 26 READCHANGEMXQ. . . PROCEDURE STACK=0008H 185
|
||||
21 000DH 1 RESERVD. . . . . . BYTE MEMBER(CCB)
|
||||
19 0003H 2 RESRVD1. . . . . . BYTE ARRAY(2) MEMBER(XINIT)
|
||||
10 0068H 2 RLR. . . . . . . . WORD MEMBER(SD)
|
||||
10 0042H 2 RSPSEG . . . . . . WORD MEMBER(SD)
|
||||
10 0000H 145 SD . . . . . . . . STRUCTURE BASED(SYSDATPOINTER) 184
|
||||
11 0000H 1 SDBYTE . . . . . . BYTE BASED(SYSDATPOINTER) ARRAY(1)
|
||||
2 SECTORLEN. . . . . LITERALLY
|
||||
19 0002H 2 SEGMENT. . . . . . WORD MEMBER(XINITPTR)
|
||||
13 0002H 2 SEGMENT. . . . . . WORD MEMBER(CCBPTR)
|
||||
9 0002H 2 SEGMENT. . . . . . WORD MEMBER(SYSDATPTR)
|
||||
SHL. . . . . . . . BUILTIN 143
|
||||
84 0115H 117 SHOWSTATE. . . . . PROCEDURE STACK=001EH 189 213
|
||||
SIZE . . . . . . . BUILTIN 184
|
||||
10 0070H 2 SLR. . . . . . . . WORD MEMBER(SD)
|
||||
10 0008H 56 SPACE. . . . . . . WORD ARRAY(28) MEMBER(SD)
|
||||
10 004BH 1 SRCHDISK . . . . . BYTE MEMBER(SD)
|
||||
21 0005H 1 STARTCOL . . . . . BYTE MEMBER(CCB)
|
||||
21 000EH 2 STATE. . . . . . . WORD MEMBER(CCB) 90 186 193 195 207
|
||||
85 000CH 2 STATE. . . . . . . WORD 90 91
|
||||
135 0004H 4 STR. . . . . . . . POINTER PARAMETER AUTOMATIC 136 139 141 142 146
|
||||
139 0000H 1 STRING . . . . . . BYTE BASED(STR) ARRAY(1) 142 146
|
||||
10 0000H 8 SUPMOD . . . . . . WORD ARRAY(4) MEMBER(SD)
|
||||
8 0000H 4 SYSDATPOINTER. . . POINTER 9 10 11 183 184
|
||||
9 0000H 4 SYSDATPTR. . . . . STRUCTURE AT
|
||||
10 008CH 4 SYSLTOT. . . . . . WORD ARRAY(2) MEMBER(SD)
|
||||
2 TAB. . . . . . . . LITERALLY 73 74 75 76 77 78 79 80
|
||||
137 0020H 2 TEMP . . . . . . . WORD 149 152
|
||||
10 0050H 1 TEMPDISK . . . . . BYTE MEMBER(SD)
|
||||
49 0034H 15 TERMINATE. . . . . PROCEDURE STACK=0008H 82 215
|
||||
10 0072H 2 THRDRT . . . . . . WORD MEMBER(SD)
|
||||
19 0000H 1 TICK . . . . . . . BYTE MEMBER(XINIT)
|
||||
10 0051H 1 TICKSPERSEC. . . . BYTE MEMBER(SD)
|
||||
19 0001H 1 TICKSSEC . . . . . BYTE MEMBER(XINIT)
|
||||
10 007EH 4 TOD. . . . . . . . WORD ARRAY(2) MEMBER(SD)
|
||||
10 0082H 1 TOD_SEC. . . . . . BYTE MEMBER(SD)
|
||||
2 TRUE . . . . . . . LITERALLY 87 95 163
|
||||
158 0000H 1 USERSTRING . . . . BYTE BASED(USTR) ARRAY(1) 162 164
|
||||
21 0024H 2 USLEEP . . . . . . WORD MEMBER(CCB)
|
||||
156 000CH 4 USTR . . . . . . . POINTER PARAMETER AUTOMATIC 157 158 161 162 164
|
||||
58 0008H 2 V. . . . . . . . . WORD PARAMETER AUTOMATIC 59 61 62
|
||||
138 0029H 1 VAL. . . . . . . . BYTE 142 143 146 147
|
||||
21 000BH 1 VC . . . . . . . . BYTE MEMBER(CCB)
|
||||
1 0002H VCMODE . . . . . . PROCEDURE STACK=0000H
|
||||
21 0016H 2 VCMXQ. . . . . . . WORD MEMBER(CCB) 112 116
|
||||
84 0004H 2 VERB . . . . . . . WORD PARAMETER AUTOMATIC 85 89
|
||||
10 007AH 2 VERNUM . . . . . . WORD MEMBER(SD)
|
||||
171 0024H 2 VERS . . . . . . . WORD INITIAL 177 178
|
||||
10 0078H 2 VERSION. . . . . . WORD MEMBER(SD)
|
||||
46 0025H 15 VERSION. . . . . . PROCEDURE WORD STACK=0008H 177
|
||||
21 0012H 2 VINQ . . . . . . . WORD MEMBER(CCB)
|
||||
21 0014H 2 VOUTQ. . . . . . . WORD MEMBER(CCB)
|
||||
21 0026H 2 VSLEEP . . . . . . WORD MEMBER(CCB)
|
||||
PL/M-86 COMPILER VCMODE.CMD - SET VIRTUAL CONSOLE BACKGROUND MODE PAGE 17
|
||||
|
||||
|
||||
115 01A4H 26 WRITECHANGEMXQ . . PROCEDURE STACK=0008H
|
||||
19 0000H 12 XINIT. . . . . . . STRUCTURE BASED(XINITPOINTER)
|
||||
19 XINITOFFSET. . . . LITERALLY
|
||||
19 0008H 4 XINITPOINTER . . . POINTER 19
|
||||
19 0008H 4 XINITPTR . . . . . STRUCTURE AT
|
||||
58 0004H 1 ZEROSUP. . . . . . BYTE PARAMETER AUTOMATIC 59 64 67
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 04A8H 1192D
|
||||
CONSTANT AREA SIZE = 024CH 588D
|
||||
VARIABLE AREA SIZE = 002EH 46D
|
||||
MAXIMUM STACK SIZE = 0022H 34D
|
||||
590 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,294 @@
|
||||
$title('VCMODE.CMD - Set Virtual Console Background Mode')
|
||||
$compact
|
||||
vcmode:
|
||||
do;
|
||||
|
||||
$include (:f2:copyrt.lit)
|
||||
$include (:f2:vaxcmd.lit)
|
||||
$include (:f2:comlit.lit)
|
||||
$include (:f2:mfunc.lit)
|
||||
$include (:f2:fcb.lit)
|
||||
|
||||
dcl fcb (1) byte external;
|
||||
dcl buff (1) byte external;
|
||||
|
||||
$include (:f2:sd.lit)
|
||||
|
||||
dcl ccb$pointer pointer;
|
||||
dcl ccb$ptr structure ( offset address, segment address) at
|
||||
(@ccb$pointer);
|
||||
$include (:f2:vccb.lit)
|
||||
dcl ccb based ccb$pointer ccb$structure;
|
||||
|
||||
dcl ccpmproduct lit '14h';
|
||||
dcl bdosversion lit '31h';
|
||||
|
||||
mon1: procedure (func,info) external;
|
||||
declare func byte;
|
||||
declare info address;
|
||||
end mon1;
|
||||
|
||||
mon2: procedure (func,info) byte external;
|
||||
declare func byte;
|
||||
declare info address;
|
||||
end mon2;
|
||||
|
||||
mon3: procedure (func,info) address external;
|
||||
dcl func byte, info address;
|
||||
end mon3;
|
||||
|
||||
mon4: procedure (func,info) pointer external;
|
||||
dcl func byte, info address;
|
||||
end mon4;
|
||||
|
||||
|
||||
|
||||
/**************************************
|
||||
* *
|
||||
* B D O S Externals *
|
||||
* *
|
||||
**************************************/
|
||||
|
||||
print$char: procedure(char);
|
||||
declare char byte;
|
||||
call mon1(2,char);
|
||||
end print$char;
|
||||
|
||||
print$console$buffer: procedure (buffer$address);
|
||||
declare buffer$address address;
|
||||
call mon1 (9,buffer$address);
|
||||
end print$console$buffer;
|
||||
|
||||
version: procedure address;
|
||||
return mon3(12,0);
|
||||
end version;
|
||||
|
||||
/**************************************
|
||||
* *
|
||||
* X D O S Externals *
|
||||
* *
|
||||
**************************************/
|
||||
|
||||
terminate: procedure;
|
||||
call mon1 (143,0);
|
||||
end terminate;
|
||||
|
||||
get$console$number: procedure byte;
|
||||
return mon2 (153,0);
|
||||
end get$console$number;
|
||||
|
||||
printb: procedure public;
|
||||
call print$char(' ');
|
||||
end printb;
|
||||
|
||||
pdecimal: procedure(v,prec,zerosup) public;
|
||||
/* print value v, field size = (log10 prec) + 1 */
|
||||
/* with leading zero suppression if zerosup = true */
|
||||
declare v address, /* value to print */
|
||||
prec address, /* precision */
|
||||
zerosup boolean, /* zero suppression flag */
|
||||
d byte; /* current decimal digit */
|
||||
|
||||
do while prec <> 0;
|
||||
d = v / prec; /* get next digit */
|
||||
v = v mod prec; /* get remainder back to v */
|
||||
prec = prec / 10; /* ready for next digit */
|
||||
if prec <> 0 and zerosup and d = 0 then
|
||||
call printb;
|
||||
else
|
||||
do;
|
||||
zerosup = false;
|
||||
call printchar('0'+d);
|
||||
end;
|
||||
end;
|
||||
end pdecimal;
|
||||
|
||||
/*lbracket: procedure byte; /* find left bracket in command tail return */
|
||||
/* dcl i byte; /* its index. if not found ret 0 */
|
||||
/* i = 1;
|
||||
do while i <= buff(0) and (buff(i) = ' ' or buff(i) = tab);
|
||||
i = i + 1;
|
||||
end;
|
||||
if buff(i) = '[' then
|
||||
return(i);
|
||||
return(0);
|
||||
end lbracket;
|
||||
*/
|
||||
|
||||
help: procedure;
|
||||
call mon1(m$prt$buf, .(cr, lf, tab, tab, tab ,'VCMODE EXAMPLES$'));
|
||||
call mon1(m$prt$buf, .(cr, lf, lf, 'vcmode', tab, tab, tab, tab, tab,
|
||||
'(show background mode)$'));
|
||||
call mon1(m$prt$buf, .(cr, lf, 'vcmode dynamic', tab, tab, tab, tab,
|
||||
'(sets background mode)$'));
|
||||
call mon1(m$prt$buf, .(cr, lf, 'vcmode buffered', tab, tab, tab, tab,
|
||||
tab, '"$'));
|
||||
/* call mon1(m$prt$buf, .(cr, lf, 'vcmode suspend', tab, tab, tab, tab,
|
||||
tab, '"$'));*/
|
||||
call mon1(m$prt$buf, .(cr, lf, 'vcmode size = 5', tab, tab, tab, tab,
|
||||
'(sets buffered mode max file size in)$'));
|
||||
call mon1(m$prt$buf, .(cr, lf, tab, tab, tab, tab, tab,
|
||||
'(kilobytes, legal range is 1 to 8191)$'));
|
||||
call mon1(m$prt$buf, .(cr, lf, tab, tab, tab, tab, tab,
|
||||
'(also sets background mode to buffered)$'));
|
||||
/* call mon1(m$prt$buf, .(cr, lf, 'vcmode size = 100H', tab, tab, tab,
|
||||
'(legal range in HEX is 1H to 1FFFFH)$'));*/
|
||||
call mon1(m$prt$buf, .(cr, lf, 'vcmode help', tab, tab, tab, tab,
|
||||
'(prints this message)$'));
|
||||
call mon1(m$prt$buf, .(cr, lf, '$'));
|
||||
call terminate;
|
||||
end help;
|
||||
|
||||
showstate: procedure (verb);
|
||||
dcl (verb,state) address;
|
||||
call mon1(m$prt$buf, .(cr,lf,'Background Mode For Virtual Console$'));
|
||||
call pdecimal (console, 100, true);
|
||||
call printb;
|
||||
call mon1(m$prt$buf, verb);
|
||||
state = ccb.state and csm$buffered;
|
||||
if state = 0 then
|
||||
call mon1(m$prt$buf, .(' Dynamic$'));
|
||||
else
|
||||
do;
|
||||
call mon1(m$prt$buf, .(' Buffered', cr, lf, 'Maximum file size = $'));
|
||||
call pdecimal(ccb.maxbufsiz, 10000, true);
|
||||
call mon1(m$prt$buf, .('K$'));
|
||||
end;
|
||||
call mon1(m$prt$buf, .(cr, lf, '$'));
|
||||
|
||||
end show$state;
|
||||
|
||||
$include (:f2:qd.lit)
|
||||
|
||||
dcl qpb qpb$structure;
|
||||
|
||||
read$change$mxq: procedure;
|
||||
qpb.qaddr = ccb.vcmxq;
|
||||
call mon1 (m$readq, .qpb);
|
||||
end read$change$mxq;
|
||||
|
||||
write$change$mxq: procedure;
|
||||
qpb.qaddr = ccb.vcmxq;
|
||||
call mon1 (m$writeq, .qpb);
|
||||
end write$change$mxq;
|
||||
|
||||
atohb: procedure (char) byte public; /* convert ascii hex to nibble value */
|
||||
declare char byte;
|
||||
if char >= '0' and char <= '9' then
|
||||
char = char - '0';
|
||||
else if char >= 'A' and char <= 'F' then
|
||||
char = char - 'A' + 10;
|
||||
else
|
||||
char = 255;
|
||||
return(char);
|
||||
end atohb;
|
||||
|
||||
atodb: procedure (char) byte public;/* convert ascii decimal to nibble value */
|
||||
declare char byte;
|
||||
if char >= '0' and char <= '9' then
|
||||
char = char - '0';
|
||||
else
|
||||
char = 255;
|
||||
return(char);
|
||||
end atodb;
|
||||
|
||||
atoi: procedure(str) word; /* convert ascii to 16 bit unsigned value */
|
||||
dcl str pointer;
|
||||
dcl (accum, temp) word;
|
||||
dcl (val, i, len) byte;
|
||||
dcl string based str (1) byte;
|
||||
i, accum = 0;
|
||||
if (len := findb(str, 'H', 5)) <> 0ffffh then /* hex conversion */
|
||||
do while (val := atohb(string(i))) <> 0ffh and i < len;
|
||||
accum = shl(accum, 4) + val;
|
||||
i = i + 1;
|
||||
end;
|
||||
else /* decimal is default base */
|
||||
do while (val := atodb(string(i))) <> 0ffh and i < 5;
|
||||
accum = 10 * accum + val;
|
||||
if i = 4 then
|
||||
temp = accum;
|
||||
i = i + 1;
|
||||
end;
|
||||
if temp > accum then /* overflow */
|
||||
accum = 0ffffh;
|
||||
return(accum);
|
||||
end atoi;
|
||||
|
||||
compare: procedure(ustr, ostr, minlen, maxlen) boolean;
|
||||
dcl (ustr, ostr) pointer; /* user string, option string */
|
||||
dcl user$string based ustr (1) byte;
|
||||
dcl (minlen, maxlen) byte;
|
||||
dcl cmplen word;
|
||||
cmplen = cmpb(ustr, ostr, maxlen);
|
||||
if cmplen = 0ffffh or (user$string(cmplen) = ' ' and cmplen >= minlen) then
|
||||
return(true);
|
||||
if user$string(cmplen) = ' ' then
|
||||
do;
|
||||
call mon1(m$prt$buf, .(cr,lf,'Invalid Command Option.', cr ,lf, '$'));
|
||||
call help;
|
||||
end;
|
||||
return(false);
|
||||
end compare;
|
||||
|
||||
dcl vers address initial (0);
|
||||
dcl no$state lit '0ffh';
|
||||
dcl console byte;
|
||||
|
||||
/*
|
||||
Main Program
|
||||
*/
|
||||
|
||||
plmstart: procedure public;
|
||||
dcl option$ptr byte;
|
||||
dcl num word;
|
||||
vers = version;
|
||||
if (high(vers) <> ccpmproduct) then
|
||||
do;
|
||||
call print$console$buffer(.(cr,lf,'Requires Concurrent CP/M-86', cr, lf,
|
||||
'$'));
|
||||
call mon1(0,0);
|
||||
end;
|
||||
|
||||
sysdat$pointer, ccb$pointer = mon4(m$sysdat, 0); /* system data segment */
|
||||
ccb$ptr.offset = sd.ccb + (console := mon2(m$getcns, 0)) * size(ccb);
|
||||
|
||||
call read$change$mxq; /* MXQ is written in kernel terminate code */
|
||||
if (ccb.state and csm$background) <> 0 then
|
||||
call mon1(m$prt$buf, .(cr,lf,'Virtual Console not in foreground', cr, lf,
|
||||
'$'));
|
||||
else if buff(0) = 0 then
|
||||
call show$state(.('is$')); /* show current state */
|
||||
else /* try to set state or show help message */
|
||||
do;
|
||||
fcb(f$type) = ' ';
|
||||
if compare(@fcb(f$name), @('BUFFERED'), 1, 8) then
|
||||
ccb.state = ccb.state or csm$buffered;
|
||||
else if compare(@fcb(f$name), @('DYNAMIC'), 1, 7) then
|
||||
ccb.state = ccb.state and not double(csm$buffered);
|
||||
else if compare(@fcb(f$name), @('HELP'), 1, 4) then
|
||||
call help;
|
||||
else if compare(@fcb(f$name), @('SIZE'), 1, 4) then /* change to 2,4 */
|
||||
do; /* when suspend is put back in */
|
||||
num = atoi(@fcb(f$name2));
|
||||
if num > 0 and num < 2000H then
|
||||
ccb.maxbufsiz = num; /* limit size to 16 bit record count */
|
||||
else
|
||||
do;
|
||||
call mon1(m$prt$buf, .(cr,lf,'File size out of range', cr ,lf, '$'));
|
||||
call help;
|
||||
end;
|
||||
ccb.state = ccb.state or csm$buffered;
|
||||
/* automatically sets to buffered */
|
||||
end;
|
||||
else
|
||||
do;
|
||||
call mon1(m$prt$buf, .(cr,lf,'Invalid Command Option.', cr ,lf, '$'));
|
||||
call help;
|
||||
end;
|
||||
call show$state(.('set to$'));
|
||||
end;
|
||||
call terminate;
|
||||
|
||||
end plmstart;
|
||||
end vcmode;
|
||||
Reference in New Issue
Block a user