From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,UPPERCASE_50_75 autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 11232c,59ec73856b699922 X-Google-Attributes: gid11232c,public X-Google-Thread: 103376,583275b6950bf4e6 X-Google-Attributes: gid103376,public X-Google-Thread: 1108a1,59ec73856b699922 X-Google-Attributes: gid1108a1,public X-Google-Thread: fdb77,5f529c91be2ac930 X-Google-Attributes: gidfdb77,public X-Google-ArrivalTime: 2003-05-09 09:39:07 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!news.airnews.net!cabal12.airnews.net!usenet From: "John R. Strohm" Newsgroups: comp.lang.java.advocacy,comp.object,comp.lang.ada,misc.misc Subject: Re: Using Ada for device drivers? (Was: the Ada mandate, and why it collapsed and died) Date: Fri, 9 May 2003 11:28:55 -0500 Organization: Airnews.net! at Internet America Message-ID: References: <9fa75d42.0304230424.10612b1a@posting.google.com> <82347202.0305061103.2ddd98e4@posting.google.com> <9fa75d42.0305070504.6866e7a3@posting.google.com> <9fa75d42.0305070929.2d7a0d4c@posting.google.com> <9fa75d42.0305080606.70eebec@posting.google.com> <9fa75d42.0305090424.45b522b5@posting.google.com> Abuse-Reports-To: abuse at airmail.net to report improper postings NNTP-Proxy-Relay: library1-aux.airnews.net NNTP-Posting-Time: Fri, 09 May 2003 11:36:05 -0500 (CDT) NNTP-Posting-Host: ![XTe1k-W$jl$

"John R. Strohm" wrote in message news:b9gko1$pub@library1.airnews.net... > X-A-Notice: References line has been trimed due to 512 byte limitation > Abuse-Reports-To: abuse at airmail.net to report improper postings > NNTP-Proxy-Relay: library1-aux.airnews.net > NNTP-Posting-Time: Fri, 09 May 2003 11:24:33 -0500 (CDT) > NNTP-Posting-Host: !b]\%1k-W X-Priority: 3 > X-MSMail-Priority: Normal > X-Newsreader: Microsoft Outlook Express 6.00.2800.1106 > X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 > > > "soft-eng" wrote in message > news:9fa75d42.0305090424.45b522b5@posting.google.com... > > "John R. Strohm" wrote in message > news:... > > > X-A-Notice: References line has been trimed due to 512 byte limitation > > > Abuse-Reports-To: abuse at airmail.net to report improper postings > > > NNTP-Proxy-Relay: library1-aux.airnews.net > > > NNTP-Posting-Time: Thu, 08 May 2003 18:27:47 -0500 (CDT) > > > NNTP-Posting-Host: !\THX1k-VKme$@< (Encoded at Airnews!) > > > X-Priority: 3 > > > X-MSMail-Priority: Normal > > > X-Newsreader: Microsoft Outlook Express 6.00.2800.1106 > > > X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 > > > > > > "soft-eng" wrote in message > > > news:9fa75d42.0305080606.70eebec@posting.google.com... > > > > PC's don't show this. CP/M and MS/DOS etc were written > > > > in assembler, and the field was open for other languages. > > > > > > Unfortunately, the facts do not agree with you. > > > > > > CP/M was written in PL/M, a variant of PL/I developed by Dr. Gary > Kildall. > > > > Any URL, quote or something for this "fact" > > http://www.maxframe.com/GARY&CPM.HTM And this one http://www.cpm.z80.de/source.html contains, among other things, the original CP/M source code. In PL/M. Complete with Gary Kildall's copyright notice. Here are the first few lines. $Q=1 $RIGHTMARGIN=80 /* FDOS LLL V.3 11/21/75 CON DEVICE 3 IS TI SILENT 700. OCT IS READER DEVICE 3 OR 4. */ 3200H: DECLARE BOOT LITERALLY '0H'; /* C P / M B A S I C I / O S Y S T E M (B I O S) COPYRIGHT (C) GARY A. KILDALL JUNE, 1975 */ DECLARE CONSOLE LITERALLY '00$00$10$00B'; /* READER IS OCT CHANNEL A. */ DECLARE ECHO BYTE INITIAL (0FFH); /* ECHO CALL NO. 1. SEE CALL 30 */ DISKMON: PROCEDURE(FUNC,INFO) ADDRESS; DECLARE FUNC BYTE, LINFO BYTE, /* LOW ORDER INFO */ INFO ADDRESS, ARET ADDRESS, RET BYTE; /* FUNC IS THE DISK MONITOR FUNCTION NUMBER AS SHOWN BELOW: 0: SYSTEM RESET 1: READ CONSOLE DEVICE 2: WRITE CONSOLE DEVICE 3: READ OCTOPUS 4: WRITE OCTOPUS 5: WRITE LIST DEVICE 6: INTERROGATE MEMORY SIZE 7: INTERROGATE DEVICE STATUS 8: CHANGE DEVICE STATUS 9: PRINT BUFFER ON CONSOLE 10: READ BUFFER FROM CONSOLE 11: CONSOLE CHARACTER READY 12: LIFT HEAD (NO OPERATION ON CPM 16D2JUN75) 13: RESET DISK SYSTEM - SELECT DISK 0 14: SELECT DISK 'INFO' 15: OPEN FILE 16: CLOSE FILE 17: SEARCH FOR FIRST OCCURRENCE 18: SEARCH FOR NEXT OCCURRENCE 19: DELETE A FILE 20: READ A FILE 21: WRITE A FILE 22: CREATE A FILE 23: RENAME A FILE 24: RETURN LOGIN VECTOR - EACH BIT CORRESPONDS TO A DISK NUMBER, FROM LSB TO MSB. 1 INDICATES THE DISK IS LOGGED IN. 25: RETURN CURRENTLY SELECTED DISK NUMBER 26: SET SUBSEQUENT DMA ADDRESS 27: RETURN BASE ADDRESS OF ALLOCATION VECTOR (USED TO DETERMINE REMAINING SPACE) 28: UNUSED 29: UNUSED 30: CONTROL ECHO FOR CALL 1 */ /* CONSOLE COMMUNICATION PROCEDURES */ DECLARE /* TELETYPE DECLARATIONS */ TTI LITERALLY '0', TTO LITERALLY '0', TTS LITERALLY '1', TTC LITERALLY '1', /* CRT DECLARATIONS (NOTE CONFLICT WITH OCTOPUS)*/ CTI LITERALLY '4', CTO LITERALLY '4', CTS LITERALLY '5', /* OCTOPUS DECLARATIONS */ /* (CHECK WITH TORODE FOR CHANNEL B ASSIGNMENTS) */ OAI LITERALLY '4', OAO LITERALLY '4', OAS LITERALLY '5', OBI LITERALLY '6', OBO LITERALLY '6', OBS LITERALLY '7', /* SPECIAL CHARACTERS */ ALT LITERALLY '7DH', ESC LITERALLY '1BH', TAB LITERALLY '09H', BEL LITERALLY '07H', LF LITERALLY '10', CR LITERALLY '13'; DECLARE COLUMN BYTE INITIAL(0); /* CURRENT CONSOLE COLUMN */ DECLARE OCT$TIMEOUT LITERALLY '65000'; DECLARE IOSTAT BYTE INITIAL(CONSOLE); /* IOSTAT DEFINES THE CURRENT DEVICE ASSIGNMENT 0-1 CONSOLE 0 TTY 1 CRT 2 BATCH (USE READER DEFINITION) 3 USER (1) TI SILENT 700 2-3 READER 0 TTY 1 PTR 2 USER (1)OCTOPUS CHANNEL A 3 USER (2)OCTOPUS CHANNEL B 4-5 PUNCH 0 TTY 1 PTP 2 USER (1) 3 USER (2) 6-7 LIST 0 TTY 1 CRT 2 USER (1) 3 USER (2) */ CONSTAT: PROCEDURE BYTE; RETURN IOSTAT AND 11B; END CONSTAT; CONBRK: PROCEDURE BYTE; /* LOOK FOR CHARACTER AT CONSOLE PORT */ DECLARE I BYTE; IF (I:=CONSTAT) = 0 OR I = 3 THEN RETURN NOT INPUT(TTS); RETURN NOT INPUT(CTS); END CONBRK; TTYOUT: PROCEDURE(CHAR); DECLARE CHAR BYTE; DO WHILE ROR(INPUT(TTS),2); END; OUTPUT(TTO) = NOT CHAR; END TTYOUT; CRTOUT: PROCEDURE(CHAR); DECLARE CHAR BYTE; DO WHILE ROR(INPUT(CTS),2); END; OUTPUT(CTO) = NOT CHAR; END CRTOUT; TTYIN: PROCEDURE BYTE; DO WHILE INPUT(TTS); END; RETURN NOT INPUT(TTI) AND 07FH; END TTYIN; CRTIN: PROCEDURE BYTE; DO WHILE INPUT(CTS); END; RETURN NOT INPUT(CTI) AND 07FH; END CRTIN; As I said, get your facts straight.