Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

Are you perchance running on a 64-bit machine? -- Larry Wall in <199711102149.NAA16878@wall.org>


devel / comp.os.cpm / Intellec8/MOD 80 Monitor

SubjectAuthor
* Intellec8/MOD 80 MonitorMr. Emmanuel Roche, France
`* Re: Intellec8/MOD 80 MonitorMr. Emmanuel Roche, France
 `* Re: Intellec8/MOD 80 MonitorMr. Emmanuel Roche, France
  `- Re: Intellec8/MOD 80 Monitordott.Piergiorgio

1
Intellec8/MOD 80 Monitor

<2696f197-f8af-4383-b6ec-9cd048406681n@googlegroups.com>

 copy mid

https://www.novabbs.com/devel/article-flat.php?id=2704&group=comp.os.cpm#2704

 copy link   Newsgroups: comp.os.cpm
X-Received: by 2002:ad4:4f32:: with SMTP id fc18mr32911210qvb.3.1630477605976;
Tue, 31 Aug 2021 23:26:45 -0700 (PDT)
X-Received: by 2002:a05:6830:1b78:: with SMTP id d24mr19837361ote.197.1630477605607;
Tue, 31 Aug 2021 23:26:45 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.cpm
Date: Tue, 31 Aug 2021 23:26:45 -0700 (PDT)
Injection-Info: google-groups.googlegroups.com; posting-host=86.199.181.144; posting-account=wGrAFgoAAAD-mx3Qns29BnQYgMHAHksE
NNTP-Posting-Host: 86.199.181.144
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <2696f197-f8af-4383-b6ec-9cd048406681n@googlegroups.com>
Subject: Intellec8/MOD 80 Monitor
From: roche...@laposte.net (Mr. Emmanuel Roche, France)
Injection-Date: Wed, 01 Sep 2021 06:26:45 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 1927
 by: Mr. Emmanuel Roche, - Wed, 1 Sep 2021 06:26 UTC

; MOD80MON.ASM
; ------------
; ; Intellec8/MOD 80 Monitor, Version 3.0, 14 April 1975
; Intel 98-0007C
; ; (Retyped by Emmanuel ROCHE.)
; ; Copyright (C) 1973, 1974, 1975
; Intel Corporation
; 3065 Bowers Avenue
; Santa Clara, California 95051
; ; <legal command> ::= <assign I/O command>
; <BNPF punch command>
; <compare command>
; <display memory command>
; <endfile command>
; <fill memory command>
; <program execute command>
; <hexadecimal arithmetic command>
; <load BNPF command>
; <move memory command>
; <leader command>
; <program command>
; <read hexadecimal file command>
; <substitute memory command>
; <transfer command>
; <write hexadecimal record command>
; <register modify command>
; ; <assign I/O command> ::= A<logical device>=<physical device>
; ; <BNPF punch command> ::= B<number>,<number>
; ; <compare command> ::= C<number>
; ; <display memory command> ::= D<number>,<number>
; ; <endfile command> ::= E<number>
; ; <fill memory command> ::= F<number>,<number>,<number>
; ; <program execute command> ::= G<number>,<number>,<number>
; ; <hexadecimal arithmetic command> ::= H<number>,<number>
; ; <load BNPF command> ::= L<number>,<number>
; ; <move memory command> ::= M<number>,<number>,<number>
; ; <leader command> ::= N
; ; <program command> ::= P<number>,<number>,<number>
; ; <read hexadecimal file command> ::= R<number>
; ; <substitute memory command> ::= S<number>
; ; <transfer command> ::= T<numbr>
; ; <write hexadecimal record command> ::= W<number>,<number>
; ; <register modify command> ::= X<register identifier>
; ; <logical device> ::= console|reader|list|punch
; ; <physical device> ::= CRT|TTY|PTR|PTP|BATCH|1|2
; ; <register identifier> ::= A|B|C|D|E|F|H|L|M|P|S
; ; <number> ::= <hex digit>
; <number><hex digit>
; ; <hex digit> ::= 0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F
; ; System signs on with <CR><LF><.>

ver EQU 30 ; Version 3.0

TITLE ' Intellec8/Mod 80 Monitor, Version 3.0, 14 April 1975 '

; I/O device ouput Command port 1 (TTC) bit values
; ; Bit Rest Mnemonic Description
; --- ---- -------- -----------
; 0 0 RBIT TTY reader go/no go
; 1 0 PCMD PTP go/no go
; 2 0 RCMD PTR go/no go
; 3 1 DSB PROM enable/disable, DSB=1
; 4 0 Data in T/C
; 5 0 Data out T/C
; 6 0 PBIT 1702 PROM prog. go/no go
; 7 0 PBITA 1702A PROM prog. go/no go

; I/O device input Status port 1 (TTS) bit values
; ; Bit Rest Mnemonic Description
; --- ---- -------- -----------
; 0 1 TTYDA If TTYDA=0 input is ready
; 1 1 Overrun error
; 2 0 TTYBE If TTYBE=0 output is ready
; 3 1 Framing error
; 4 1 Parity error
; 5 0 PTRDA If PTRDA=1 PTR has char.
; 6 1 PRDY If PRDY=1 PTP is ready
; 7 Unassigned

; I/O device input Status port 5 (CRTS) bit values
; ; Bit Rest Mnemonic Description
; --- ---- -------- -----------
; 0 1 CRTDA If CRTDA=0 input is ready
; 1 1 Overrun error
; 2 0 CRTBE If CRTBE=0 output is ready
; 3 1 Framing error
; 4 1 Parity error
; 5 Unassigned
; 6 Unassigned
; 7 Unassigned

; I/O command constants
; RBIT EQU 1
PCMD EQU 2
RCMD EQU 4
DSB EQU 8
PBITA EQU 80H

; TTY I/O constants
; TTI EQU 0 ; TTY Input data port
TTO EQU 0 ; TTY Output data port
TTS EQU 1 ; TTY input Status port
TTC EQU 1 ; TTY ouput Command port
TTYGO EQU RBIT OR DSB ; Start TTY reader
TTYNO EQU DSB ; Stop TTY reader
TTYDA EQU 1 ; Data Available
TTYBE EQU 4 ; Transmit Buffer Empty

; CRT I/O constants
; CRTI EQU 4 ; CRT Input data port
CRTO EQU 4 ; CRT Output data port
CRTS EQU 5 ; CRT input Status port
CRTDA EQU 1 ; Data Available
CRTBE EQU 4 ; Transmit Buffer Empty

; PTR I/O constants
; PTRI EQU 3 ; PTR Input data port (not inverted)
PTRS EQU TTS ; PTR input Status port
PTRC EQU TTC ; PTR Output command port
PTRGO EQU RCMD OR DSB ; Start reader
PTRNO EQU TTYNO ; Stop reader
PTRDA EQU 20H ; PTR Data Available

; PTP I/O constants
; PTPO EQU 3 ; PTP Output data port
PTPS EQU TTS ; PTP input Status port
PTPC EQU TTC ; PTP output Command port
PRDY EQU 40H ; Punch ReaDY status
PTPGO EQU PCMD OR DSB ; Start punch
PTPNO EQU TTYNO ; Stop punch

; PROM programmer I/O constants
; PAD EQU 2 ; PROM ADdress output port
PDO EQU PTPO ; PROM Data Output port
PDI EQU 2 ; PROM Data Input port
PROMC EQU TTC ; Programming pulse output port
PROGO EQU PBITA ; Start programming
PRONO EQU 0 ; Stop programming
ENB EQU 0 ; ENaBle programmer

; Conditional assembly switches
; false EQU 0
true EQU NOT false

debug EQU false ; Debug mode -
; Modify certain code sections,
; so that Version 2.0 may be
; debugged by Version 1.0.

; Global constants
; TOUT EQU 250 ; 250 ms. counter for reader TimeOUT
LDLY EQU 20 ; Counter for 20 ms. DeLaY

IF debug
DLY EQU 111 ; Counter for 1.0 ms. delay in RAM
ENDIF

IF NOT debug
DLY EQU 84 ; Counter for 1.0 ms. delay in PROM
ENDIF

; ASCII characters used
; CR EQU 0DH ; Carriage Return
LF EQU 0AH ; Line Feed
space EQU 20H ; ' '
dollar EQU 24H ; '$' PROM error flag
star EQU 2AH ; '*'
comma EQU 2CH ; ','
dash EQU 2DH ; '-'
dot EQU 2EH ; '.'
zero EQU 30H ; '0'
colon EQU 3AH ; ':' HEX file 1st char
equal EQU 3DH ; '='
upA EQU 41H ; 'A'
upB EQU 42H ; 'B'
upF EQU 46H ; 'F'
upN EQU 4EH ; 'N'
upP EQU 50H ; 'P'
upX EQU 58H ; 'X'

; Macro definition
; fetch MACRO value ;; Fetch the address
lxi h,value ;; of a value
dad sp ;; in the stack.
ENDM

; I/O status byte masks and values
; CMSK EQU 11111100B ; Mask for Console I/O
RMSK EQU 11110011B ; Mask for Reader input
PMSK EQU 11001111B ; Mask for Punch output
LMSK EQU 00111111B ; Mask for List output

CTTY EQU 00000000B ; Console I/O = TTY
CCRT EQU 00000001B ; Console I/O = CRT
BATCH EQU 00000010B ; Batch mode -
; input = reader, output = list.
CUSE EQU 00000011B ; User-defined console I/O

RTTY EQU 00000000B ; Reader = TTY
RPTR EQU 00000100B ; Reader = PTR
RUSE1 EQU 00001000B ; User-defined Reader (1)
RUSE2 EQU 00001100B ; User-defined Reader (2)

PTTY EQU 00000000B ; Punch = TTY
PPTP EQU 00010000B ; Punch = PTP
PUSE1 EQU 00100000B ; User-defined Punch (1)
PUSE2 EQU 00110000B ; User-defined Punch (2)

LTTY EQU 00000000B ; List = TTY
LCRT EQU 01000000B ; List = CRT
LUSE1 EQU 10000000B ; List = LPT
LUSE2 EQU 11000000B ; User-defined List

; User-defined device entry points
; CILOC EQU 3700H ; User Console Input
COLOC EQU 3703H ; User Console Output
R1LOC EQU 3706H ; User Reader (1)
R2LOC EQU 3709H ; User Reader (2)
P1LOC EQU 370CH ; User Punch (1)
P2LOC EQU 370FH ; User Punch (2)
L1LOC EQU 3712H ; User List (1)
L2LOC EQU 3715H ; User List (2)
CSLOC EQU 3718H ; User Console Status

IF debug
ORG 800H ; Locate in RAM for debug
ENDIF

IF NOT debug
ORG 3800H ; Locate in top 8 ROMs in 16K
ENDIF

;--------------------------------
; Branch table for I/O system

jmp begin ; Reset entry point
jmp ci ; Console Input
jmp ri ; Reader Input
jmp co ; Console Output
jmp po ; Punch Output
jmp lo ; List Output
jmp csts ; Console input STatuS
jmp iochk ; I/O system status
jmp ioset ; Set I/O configuration
jmp memck ; Compute size of memory

;--------------------------------

; Pointers to RAM
; RS1 EQU 8 ; Restart 1 logic

; Status byte for I/O system

IF NOT debug
iobyt EQU 3 ; Use location 0003H
ENDIF

IF debug
iobyt EQU 4 ; Use location 0004H
ENDIF

init EQU 000000B ; Initially,
; ------00 Console = TTY,
; ----00-- Reader = TTY,
; --00---- Punch = TTY,
; 00------ List = TTY.

vers db cr, lf, '8080 V'

IF NOT debug
db ver/10+'0','.',ver MOD 10+'0'
ENDIF

IF debug
db 'X.X'
ENDIF

Lver EQU $-vers ; Length of sign-on message

;--------------------------------
; Program entry point
; ; Compute the top of RAM memory available in this system,
; and locate the user register save area, exit template,
; and monitor stack at the top of RAM.

begin: lxi h,iobyt ; Point HL at IOBYT
mvi m,init ; Initial value of I/O
mvi l,0ffh ; Find end of memory
bg0: dcr h
mov a,m ; Fetch contents of memory
cma ; Invert it
mov m,a ; Attempt to write into memory
cmp m ; Is location Read/Write?
cma ; Invert again
mov m,a ; Write data back
jnz bg0 ; Yes: continue
inx h ; No: point to first non-RAM location


Click here to read the complete article
Re: Intellec8/MOD 80 Monitor

<02a67dba-0397-439c-a786-916e1515e8b8n@googlegroups.com>

 copy mid

https://www.novabbs.com/devel/article-flat.php?id=2739&group=comp.os.cpm#2739

 copy link   Newsgroups: comp.os.cpm
X-Received: by 2002:ae9:ec0f:: with SMTP id h15mr4933945qkg.224.1631627495462;
Tue, 14 Sep 2021 06:51:35 -0700 (PDT)
X-Received: by 2002:aca:b6d5:: with SMTP id g204mr1498837oif.29.1631627495237;
Tue, 14 Sep 2021 06:51:35 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.cpm
Date: Tue, 14 Sep 2021 06:51:35 -0700 (PDT)
In-Reply-To: <2696f197-f8af-4383-b6ec-9cd048406681n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=86.199.136.159; posting-account=wGrAFgoAAAD-mx3Qns29BnQYgMHAHksE
NNTP-Posting-Host: 86.199.136.159
References: <2696f197-f8af-4383-b6ec-9cd048406681n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <02a67dba-0397-439c-a786-916e1515e8b8n@googlegroups.com>
Subject: Re: Intellec8/MOD 80 Monitor
From: roche...@laposte.net (Mr. Emmanuel Roche, France)
Injection-Date: Tue, 14 Sep 2021 13:51:35 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 62
 by: Mr. Emmanuel Roche, - Tue, 14 Sep 2021 13:51 UTC

As usual, "the Devil is in the details". Many thanks for the persons who wrote me (Yes, I am still alive!) and especially to the one (Hello, Dwight!) who found *ONE* character wrong!

In 1978, Intel was naming those "documents", so change the line "Intel 98-0007C" to "Intel document 98-0007C" (later, they changed the "-" into another "0").

Several of my correspondents noticed a problem with the word "file". Indeed, this Monitor obliges the operator to produce, manually, an "end of file" (called a "Termination Record" in others papers) after producing (one or more) HEX "records", exactly like CP/M's ASCII files need a CP/M "End-Of-File" character. So, change the summary of the E, R and W commands likewise:

<end of HEX file command>
<read HEX file command>
<write HEX record command>

<end of HEX file command> ::= E<number>
<read HEX file command> ::= R<number>
<transfer command> ::= T<number>
<write HEX record command> ::= W<number>,<number>

(...) DSB PROM enable/DiSaBle, DSB=1

(...) PRDY If PRDY=1 PTR is ready

PTRC EQU TTC ; PTR output Command port

(command branch table)

B - punch BNPF tape
E - end of HEX file
T - transfer a PROM to memory
W - write HEX record

; End of HEX file command

; Write HEX record routine

; into HEX record format, (...)

Ladr: the last instruction (Jmp Lbyte) jumps... to the next byte!

Lbyte: if the HXD routine was following "inline", there would be no need to jump to it...

Padr: the last instruction (Jmp Pbyte) jumps... to the next byte!

( Exit code template)

; db SPU SPHL

Conclusion: So, if you are still using an Intellec8/MOD 80, you can improve this 1975 Monitor! (I was told that several persons want to use this Monitor with modern Do-It-Yourself CP/M micros, just for the fun of playing with paper tapes! BNPF tapes, however, have much less success...)

"If debugging is the process of removing software bugs, then programming must be the process of putting them in." Edsger W. Dijkstra

Yours Sincerely,
Mr. Emmanuel Roche, France

Re: Intellec8/MOD 80 Monitor

<a362a310-4f79-478e-ad7d-c0464842197en@googlegroups.com>

 copy mid

https://www.novabbs.com/devel/article-flat.php?id=2740&group=comp.os.cpm#2740

 copy link   Newsgroups: comp.os.cpm
X-Received: by 2002:ac8:7b4a:: with SMTP id m10mr6278079qtu.121.1631644695575;
Tue, 14 Sep 2021 11:38:15 -0700 (PDT)
X-Received: by 2002:a9d:4604:: with SMTP id y4mr15824834ote.79.1631644695352;
Tue, 14 Sep 2021 11:38:15 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.cpm
Date: Tue, 14 Sep 2021 11:38:15 -0700 (PDT)
In-Reply-To: <02a67dba-0397-439c-a786-916e1515e8b8n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=92.136.11.176; posting-account=wGrAFgoAAAD-mx3Qns29BnQYgMHAHksE
NNTP-Posting-Host: 92.136.11.176
References: <2696f197-f8af-4383-b6ec-9cd048406681n@googlegroups.com> <02a67dba-0397-439c-a786-916e1515e8b8n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a362a310-4f79-478e-ad7d-c0464842197en@googlegroups.com>
Subject: Re: Intellec8/MOD 80 Monitor
From: roche...@laposte.net (Mr. Emmanuel Roche, France)
Injection-Date: Tue, 14 Sep 2021 18:38:15 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 36
 by: Mr. Emmanuel Roche, - Tue, 14 Sep 2021 18:38 UTC

Eagle-eyed Dwight found another improvement. (With friends like him, I have nothing to do!)

; TEST FOR NULL INPUT PARAMETER

0100 CD3412 PCHK: CALL TI ; GET A CHARACTER
0103 FE20 P2C: CPI SPACE
0105 C8 RZ
0106 FE2C CPI COMMA
0108 C8 RZ
0109 FE0D CPI CR
010B 37 STC
010C 3F CMC
010D C0 RNZ
010E 37 STC
010F C9 RET

He fells that the code, after CPI CR, is repetitive: there are two STCs... (Yes, this is code written by Intel! The creators of this microprocessor...)

So, he suggests:

0110 FE0D CPI CR
0112 37 STC
0113 C8 RZ
0114 3F CMC
0115 C9 RET

which is one byte shorter.

So, overal, this is already 10 bytes shorter, and most people will not need the BNPF tape routines!

(I was forgetting: in English, that means: if CR then Z flag = 1 & Carry = 1. (Previously, if space then Z flag = 1 & Carry = 0. If comma then Z flag = 1 & Carry = 0.) Else, if none of the 3 characters, then Z flag = 0 & Carry = 0.)

As you can see, it is quite fun to debug 1975 code! Many thanks, Dwight!

Yours Sincerely,
Mr. Emmanuel Roche, France

Re: Intellec8/MOD 80 Monitor

<sik4pn$9t4$1@dont-email.me>

 copy mid

https://www.novabbs.com/devel/article-flat.php?id=2788&group=comp.os.cpm#2788

 copy link   Newsgroups: comp.os.cpm
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: chiedete...@ask.me (dott.Piergiorgio)
Newsgroups: comp.os.cpm
Subject: Re: Intellec8/MOD 80 Monitor
Date: Fri, 24 Sep 2021 11:12:23 +0200
Organization: A noiseless patient Spider
Lines: 7
Message-ID: <sik4pn$9t4$1@dont-email.me>
References: <2696f197-f8af-4383-b6ec-9cd048406681n@googlegroups.com>
<02a67dba-0397-439c-a786-916e1515e8b8n@googlegroups.com>
<a362a310-4f79-478e-ad7d-c0464842197en@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 24 Sep 2021 09:12:24 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="948bf9d5beaeb6617e17e7d63f8e7fd6";
logging-data="10148"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+GS+Xc8k6+OloinVAT18QREU4OcbiRQLf1vE8G/P/S5g=="
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101
Thunderbird/78.13.0
Cancel-Lock: sha1:0YSD2x9ugUzkF9iBFMWxdIdDXQ8=
In-Reply-To: <a362a310-4f79-478e-ad7d-c0464842197en@googlegroups.com>
Content-Language: en-GB
 by: dott.Piergiorgio - Fri, 24 Sep 2021 09:12 UTC

On 14/09/21 20:38, Mr. Emmanuel Roche, France wrote:
> Eagle-eyed Dwight found another improvement. (With friends like him, I have nothing to do!)

why not working on the ALGOL-M retyping ? ;)

Best regards from Italy,
dott. Piergiorgio.

1
server_pubkey.txt

rocksolid light 0.9.7
clearnet tor