아이의 Goldklang의 TRS - 80 부활 사이트

NEWDOS/80 v2.0이 참조 - 디스크 Basic 및 포함된 프로그램

@ 11시 10분 2009, 오전 5 월 14.
[나] 모델[3] 모델 NEWDOS/80 v2.0이 참조 - 디스크 Basic 및 포함된 프로그램 [모델의 IV][모델 100]



7. 디스크 할당 베이직 아닌 I / O를 개선 기능
7.1. 소개, 요구 사항
NEWDOS/80 대부분의 경우,가 없다니, 기본 및 기본 프로그래머 사이의 인터페이스 사양을 모두에 의해 디스크 베이직에 대한 TRSDOS 2.3 아래의 모델에 나와 동일하게 유지하고 TRSDOS 1.3에 대한 모델 III에 있습니다. NEWDOS/80 기본 사용자가 가지고 모두가 아닌 디스크를 기본 및 TRSDOS 중 2 개의 TRS - 80 모델의 사용 설명서의 디스크 부분을 기본 매뉴얼의 지식이 사용중인 것으로 예상된다. 이 NEWDOS/80 버전의 현재와 다음 챕터 2 문서는 TRS의 버전에서만 차이를 토론합니다. 모두 Tandy 매뉴얼 우수한되며 그들은 당신의 TRS - 80 당신이 그것을 구입, 그들을 사지 오지 않았다면!! Apparat하지 않습니다,이 설명서에서, 그들의 내용을 중복.
7.2. 일반적인 의견
1. 때 기본 문법 오류가 발생하면 기본 자동으로 잘못된 문자 라인에서,하지만 편집을 입력하지 않는다 그것은 현재의 라인으로 그 라인을 설정 않습니다. 조작 키를 쉼표 라인을 수정하고자하는 경우. 이 변경 사항은 더 어려워 연산자를 그 / 그녀가 달리 디버깅을 지원하기 위해보고 싶은 실수로 취소 변수 수 있도록하는 것입니다.
2. 기본 프로그램 CMD를은 "휴식, N"이, 그리고 다시 CMD를하여 "부셔을 활성화를 통해, Y"는 쉬는 열쇠를 비활성화할 수 있습니다.
3. CLOAD 연속 바이트 사이의 테이프에서 새로운 기능이 없기 때문에 베이직 이상의 3 개의 파일 영역으로 실행중인 경우, 그것은 동기화를 잃게됩니다.
4. 도스 때 오류가 베이직에 의해 발생하는 경우도 켜짐 - 에러 루틴이 활성 모두 도스 오류 메시지와 기본 오류 메시지가 표시됩니다있다.
5. 베이직 이제 8 총을 가지고 그것이 사용하는 오버레이. 사용자는 디스크를 통지합니다 I / O를 때마다 실행이 실행될 때마다 실행은 (중지, 오류 또는 쉬는) 또는 종료 (끝); 이것은 베이직은 현재 또는 예상되는 다음 기능에 필요한 루틴에 가져다 이루어집니다 중단 발생합니다.
6. NEWDOS/80 베이직 디스크 할당하지는 텍스트 라인의 삭제는 간단하게 라인 번호를 입력하여 할 수 없습니다. 는 명시적 삭제 명령은, 삭제 또는 D, 사용해야합니다.
7.3. 기본 디스크를 활성화
디스크 할당 베이직 한 DOS로 다음 명령의 마크에 의해 활성화됩니다 :
1. 베이직
2. 베이직
3. 베이직 앤
4. 기본 미터
5. 베이직 cmd라고
6. 기본 N으로, 나 cmd를
7. 기본이야, 아, cmd를
8. 베이직 앤, 미터
9. 기본이야, 아
10. 베이직 앤 cmd를
11. 기본 나 cmd를
지역 :
* 사용자가 텍스트 버퍼의 기본가 reinstitute 프로그램으로 메인 메모리에 존재하는 것처럼 보일 미터과 N에 대해 동일한 값을 사용하여 원하는 것을 의미합니다. 이것은 사용자가 원치 않는 '재설정하거나 다시 같은 프로그램 후'를 얻을 복구할 수있는 CMD를 "S"로. 베이직 이것을 달성 할 수있다면, 그것은 첫 번째 명령으로 '목록'을 강요합니다. 베이직은 reinstitute 수없는 DOS를 준비가 그것 출구 프로그램이있다면. n은 있었다면 로열티 * 작동하지 않습니다 미만 2 또는 경우 프로그램이 3 선 이하로했다.
n은 fileareas의 기본은, = 3, 최대 = 15 기본값을 할당하는 번호. 이것은 최고의 팬 (filearea 번호) 어떠한 진술의 기본이 호출하는 동안 사용됩니다. 기본 프로그램은 필드를 표준 레코드 길이 256과 동일 함께하지 않겠다는 항목 파일을 사용하는 경우, n이 지정되어야합니다 그리고 캐릭터와 함께 브이 (예 : 4 접미사 아래 참조해야합니다.)
m = 메모리 크기. 값 무사 마이너스 1 기본은 사용할 수있는 가장 높은 메모리 위치입니다. 고도를 지정하지 않으면 현재 도스 HIMEM 값이 사용됩니다. 모든 메모리 미터 이상 베이직에서 사용되지 않으며 다른 루틴에 대한 프린터 드라이버, 특수 코드 USR 루틴 등 사용할 수 있습니다
cmd를 = 기본 텍스트를 한 줄에 하나 이상의 기본 문장으로 구성된. 이 텍스트 라인 직접 키보드 입력과 간주됩니다 초기화가 완료되는대로 실행됩니다.
은 DOS 명령을 베이직을 활성화 기억 도스에 의해 최대로 제한됩니다
다음 Enter를 포함 80 자, 그리고 그것을 통해 '자동'으로 호출하면 추가 입력을 포함 32 문자로 제한됩니다.
모든 오류는 초기화하는 동안 발생한 DOS로 복귀가 발생합니다.
DOS는 실행 전용 상태에있는 경우, DOS 명령은 기본적인 활성화) 문을 R을 실행하거나 하중을 (옵션 포함되어야합니다.
예 :
1. 베이직 돋보이게 베이직 3 개의 파일 영역, 높은 메모리 DOS에서 HIMEM에 대한 현재 값을 설정 디스플레이와 '준비는'운영자의 명령을 기다리고.
2. 베이직, 실행 "엑스 / BAS"생기 기본적인 3 개의 파일 영역, 높은 메모리 현재 도스 HIMEM 값 세트와, 기본 프로그램 엑스로드 / 저기 있죠 텍스트 영역에와 그 실행을 시작합니다.
3. 베이직, 9,48152,로드 "엑스 / BAS"생기 베이직 9 파일 영역, 높은 메모리 48151 (1 48152 이하로 설정된 최대), 기본 프로그램 엑스로드 / BAS 텍스트 영역에 표시하는 '준비는'기다리고 교환의 명령.
4. 베이직은 3V 이것은 작품 같은 예제 1 위, 그 각각은 3 개의 파일 영역의 여분의 256 바이트의 버퍼를 할당 제외합니다. 이 프로그램은 레코드 길이보다 256와 다른 필드를 사용하여 항목에 파일이 될 수 filearea 당이 여분의 버퍼가 필요합니다.
5. 베이직, CLEAR3000가 : = 1 : 실행 "엑스", 브이 생기 기본 최대 3 fileareas와 도스의 현재 HIMEM 값, CLEAR를 문자열 영역에 대한 3000 바이트를 예약 수행, 높은 메모리 값을 설정 설정 숫자 변수 1과 같다, 엑스로드하는 기본 프로그램과, 따라서 떠나는 변수를 삭제하지 않고 그것의 실행을 개시 변수는 프로그램이 검사에 대한 손상.
7.4. 직접 스크롤 / 편집 명령
NEWDOS/80 디스크 할당 베이직는 다음과 같은 '직접 명령을 허용합니다 :
. (마침표) 리스트 현재 텍스트 라인.
아래쪽 화살표 목록 다음 텍스트 줄. 에는 다음의 텍스트 라인이있다면 같이 수행 /.
최대 화살표 현재 라인 이전에 목록의 텍스트 라인. 아무도 같이 수행하는 경우;.
; 또는 교대 접속 화살표 리스트 첫 번째 텍스트 줄을.
/ 또는 교대 - 아래쪽 화살표 리스트 텍스트의 마지막 줄에. 사용자는 최신 ROM을하는 데 그 교대 다운 화살표를 찾을 수 있습니다 더 이상 사용할 수 열쇠입니다;에 따라서 필요성 /.
: 스크롤 텍스트의 시작을 향해 한 표시 페이지입니다. 완료되면, 이전의 현재의 텍스트 라인은 이제 제외 디스플레이의 하단에 있습니다 그 이전의 명령이 있었다면. 또는 @, 이전 화면의 탑 라인은 이제 새로운 디스플레이의 하단 라인입니다. 새로운 현재의 텍스트 라인이 새로운 디스플레이의 하단 라인입니다.
@ 스크롤 텍스트의 끝을 향해 한 표시 페이지입니다. 완료되면, 이전의 현재의 텍스트 라인은 이제 화면의 상단에, 그리고 새로운 현재의 텍스트 라인이 새로운 디스플레이 하단의 텍스트 라인입니다.
, (쉼표) 편집 현재 텍스트 라인.
직접 당 단지 1와 같은 명령을 진술 라인, 그리고 명령, 입력 라인 (아무 줄 번호 또는 허용 backspacing의 첫 번째 문자 여야합니다)을 볼 수 있습니다.
7.5. 텍스트 편집 명령 잘라내기
NEWDOS/80 디스크 할당 베이직은, 개발, 전자 및 L 자동, 삭제, 편집 및 목록에 명령의 잘라내기가 각각 때 다음과 같은 조건이 충족 있습니다 :
1. 입력 라인의 1 문자.
2. 어느 기간 또는 10 진수 숫자로 이어 받았죠.
3. 입력 라인 =. 포함하지 않습니다
7.6. 던이 데저트과 뒤 텍스트 편집 기능
던이 데저트과 뒤 두 개의 추가 기본 텍스트 편집 기능은 직접적인 명령의 다음 양식을 사용하여 구현됩니다 :
1. 던이 데저트의 aaaaa, bbbbb
2. 던이 데저트., bbbbb
3. 다다오 aaaaa, bbbbb
4. 뒤., bbbbb
지역 :
aaaaa 이동하는 텍스트 라인의 줄 번호이거나, 그리고 중복
bbbbb 이동된 텍스트 라인을 받게하려면 줄 번호 또는이 텍스트 라인의 중복.
던이 데저트 aaaaa bbbbb에 삽입 그것을에서 라인을 삭제하는 것을 의미합니다.
에 의미를 삽입하지만, aaaaa에서 텍스트 라인의 중복 aaaaa bbbbb에서 줄을 삭제하지 마십시오.
텍스트를 말하는 aaaaa bbbbb을 참조하도록 변경되지 않습니다. 이것이 바람직한 경우, 다음의 텍스트 라인을 이동 RENUM를 사용합니다.
aaaaa 대신에 시대의 사용은 마지막 줄에 표시, 편집 또는 삭제를 기본값으로 aaaaa가 발생합니다.
7.7. 실행 문과 LOAD (옵션) 변수를 유지
실행하고로드가 이제 선택적으로 다음과 같은 형식은 V 옵션을 사용하여 모든 변수와 오픈 fileareas을 유지 있습니다 :
실행 "filespec1", 브이
LOAD "filespec1", 브이
filespec1이 프로그램의 filespec 어디 실행중인 파일입니다. 로드가 브이 옵션을 정확히으로 실행 브이 옵션과 함께 동일 실행합니다. 브이에서 실행 옵션, DEFFN 변수를 제외한, 실행을 실행하는 동안 모든 변수를 보존되므로 변수는 실행하기 전에 기존의 진술은 실행 문 뒤에 사용할 수 있습니다. 모든 fileareas 전에 실행 실행 문 뒤에 사용하기 위해 열린 남아 있습니다 엽니다. 은 V 옵션이 지정되면, R 옵션이 없을 수도 있습니다. 참조 섹션 7.3에있는 예제 5.
7.8. 의 오버레이 프로그램이 동적 로딩 병합
병합 정책이 전개되었습니다 :
병합 중 ASCII 또는 포장 텍스트 파일을 병합합니다.
병합이 직접 진술이나 프로그램 명세서로 실행될 수 있습니다.
병합이 프로그램 명세서로 실행되면 병합 성명 DEFFN 성명, 서브루틴 또는 팝업 기능 암시적으로 수행), 텍스트 라인의 마지막 문장,되어야 그대로를위한 다음 루프 (의 일부가되지 않아야합니다 실행이 병합 후 계속해서 텍스트 라인 뒤따라갈, 그리고 누구의 숫자를 텍스트 라인 병합의 실행의 시작 부분에서 기존의 개수 (사용 CMD를 동일합니다 "여 행을 포함할 수 없습니다 파일을 병합 "병합을 실행하기 전에 충돌하는 텍스트 라인을 삭제 삭제). 병합은 모든 변수를 보호합니다. 병합하는 경우 사용자가 충분한 메인 메모리 공간을 보장해야 사용할 수가 오류 복구로 병합됩니다 불가능 한 번 실제 병합 개시를 실패합니다. 예 :
100은 "트리플 엑스"/ BAS 병합
병합이 완료되면 110 엑스 실행 = 1 여기에 계속
7.9. RENUM의 번호를 다시 매기다 현재 기본 프로그램을.
RENUM의 sssss, iiiii, ppppp, qqqqq [, U] [엑스]
RENUM,
RENUM U
RENUM 엑스
RENUM U, X는
그것은 텍스트 영역에있는 동안 현재의 기본 프로그램이나 그 일부가 renumbered 수 있습니다. 를 통해 유 옵션 RENUM 실제로는하지만 번호를 다시 매기다을 수행하지 않는 전용의 텍스트 오류 검사를 않습니다, 따라서 정의되지 않은 줄 번호와 일부는 아니지만 모두가, 구문 오류를 찾을 수 있도록했습니다. 사용자 수, 새로운 줄 번호 값의 적절한 선택에 의해, 어떤 이동 라인의 새 줄을 번호 변경에 대한 모든 참조와 프로그램에서 다른 곳으로 프로그램의 일부를 이동합니다. 그 줄 번호는 라인의 범위 밖에서 renumbered되는 거짓말을하는 경우 마지막으로, X의 옵션을 통해, RENUM 오류가 어떤 정의되지 않은 줄 번호로, 따라서이 프로그램은 그것 내에서 의도의 일부가 아닌 라인에 대한 참조를 가질 수 있도록 명시되어 있지 않습니다 프로그램입니다.
기본 번호를 다시 매기다 명령은 누구의 줄 번호보다 크거나 동일한 ppppp하고보다 작거나 같은 qqqqq에 할당되고 새 줄을 번호를 모든 텍스트 줄을됩니다. sssss 처음으로 새 줄을 번호 후속 번호가 이전의 텍스트 라인의 라인 번호를 iiiii을 추가하여 생성된 할당됩니다. sssss과 iiiii의 범위 1에 있어야합니다 - 65529과 기본 가치를 10 개 있습니다. ppppp의 범위에 있어야합니다 1 - 65529, 기본값은 0입니다. qqqqq의 범위 1 -65529,보다 크거나 같음 sssss에되어야하며 기본값은 65,529입니다. 새로 생성된 라인 번호의 범위는 resequenced 범위 ppppp의 일부 - qqqqq 포함되지 않은 이전의 텍스트 라인을 포괄하지 않아야합니다. 너무 오래 이런 규칙이 지켜지로 새로 생성되는 줄 번호 범위는 어디 renumbered 텍스트와 텍스트에 게재될 수 있습니다 적절한 새 텍스트 위치로 이동되었습니다.
최소한 하나의 매개 변수를 지정해야합니다. 사용자가 유일한 매개 변수로 쉼표를 사용하는 모든 기본값을하고 엑스도없고 U, 그때 지정 원한다면.
시리즈 sssss 들어, iiiii, ppppp는 qqqqq는 하나 이상의 4 개 숫자의 기본 값을 사용하는 경우, 쉼표 적절한 장소에있는 4 개의 값을 주어진 줄 번호를 나타내는 표시합니다입니다. 예를 들어 4 참조하십시오.
유 옵션이 지정되지 않은 경우, 텍스트가 어떤 방식 으로든 변경되지 않으며 RENUM 간단하게 정의되지 않은 줄 번호에 텍스트를 검색하고 몇 가지 오류 줄 번호를 사용하여 기본적인 문장과 관련된합니다. 이러한 오류는 다음과 같은 형식으로 표시됩니다 :
sssss는 / u는 - 없다 텍스트 라인 sssss입니다.
sssss / 엑스 - 텍스트 라인 sssss는 구문 오류가 있습니다.
sssss / S를 - 텍스트 라인 sssss 나쁜 줄 번호가 있습니다.
엑스 옵션이 지정된 경우 해당 줄 번호도 ppppp의 qqqqq 범위 밖에있다면, 존재하지 않는 텍스트 라인에 대한 참조가 오류로 표시되지 않습니다. 은 X 옵션은 기본 프로그램과 텍스트 라인을 서로 참조 오버레이 프로그램을 사용하는 프로그래머에 대한 지원으로 만들어진 것입니다.
텍스트가 변경되기 전에 오류가 발생하는 경우, 명령은 마치 유 옵션이 지정되었습니다 실적을로 복귀하고 찾을 수있는 모든 오류를 표시합니다. 텍스트 변경은, '치명적인 오류를 시작한 후에 오류가 발생하는 경우. 텍스트 지금 나쁜 '를하고 4030H 출구 도스로 이동이 표시됩니다. 기본 텍스트는 매립지 () 기본 *를 사용하지 않는해서는 안됩니다.
중 SYS11/SYS 또는 SYS13/SYS 경우 시스템 RENUM가 사형에없는,이 시스템은 도스 준비가 (종료됩니다 섹션 5.5 참조).
RENUM 누구의 텍스트 라인의 번호 0 등호 처음으로 프로그램을 다시 세다을 거부합니다. 사용 '던이 데저트'선에게 전화 번호를 0보다 다른 할당합니다. 예 :
1. RENUM u는 기본 텍스트가 정의되지 않은 줄 번호와 정상적으로 실제 번호를 다시 매기다에 발생 될 다른 오류를 확인합니다. 기본 텍스트는 변경되지 않습니다.
2. RENUM은 전체 기본 텍스트 10 증가량을 사용하여 renumbered입니다. 첫 번째 텍스트 라인과 줄 번호가 10, 2 할당된 줄 번호 20 할당됩니다 그러니까.
3. RENUM가 100,100 전체 기본 텍스트를 100 증가를 사용하여 renumbered입니다. 첫 번째 텍스트 라인, 2, 그리고 200에 할당된 줄 번호가 100이 할당됩니다 그러니까.
4. RENUM는 2050, 어느 라인에서 2050,3160을 포함한 모든 텍스트 라인과 3160 번호가하고 모든 라인을 포함한 10의 증가를 사용하는 2050 renumbered 번호가. 첫 번째 renumbered 라인, 두 번째, 그리고 2060에 할당된 줄 번호가 205 $ 할당되도록합니다.
5. 어떤 라인을 포함하여 RENUM은 30000,5,15365,18112 전체 텍스트 라인은 18112 번호가하고 모든 라인을 포함한 5의 증가를 사용하는 15,365 renumbered 번호가. 첫 번째 renumbered 라인, 2, 그리고 30,005에 할당된 줄 번호가 30000 할당됩니다 그러니까. The renumbered 텍스트 라인의 텍스트에 새 위치로 이동됩니다.
7.10. 참조 변수리스트는 REF의, 줄 번호 및 키워드
기본 문장 심판 기본 프로그래머 줄 번호, 정수, 변수, 문자열, 함수 코드, 문자의 포장 순서 또는 문자의 풀었 순서 참조되는 프로그램의 모든 장소를 찾을 수 있습니다. 심판이 다음과 같은 형식이있다 :
1. 모든 줄 번호는 REF * 디스플레이에 대한 전체 목록을 참조, 정수와 변수.
2. 프린터의 모든 줄 번호에 대한 전체 목록을 참조, 정수 및 변수는 REF $ 인쇄.
3. 변수 (들) 윈라는 REFnn 표시 모든 참조. nn은 오직 1 문자, 공백 경우 두 번째 추정되고있다. nn은 2 개 이상의 문자 및되지 않을 수 있습니다 유형 접미사가 없어야한다.
4. 줄 번호에 대한 모든 참조 REFsssss 표시 및 / 또는 sssss은 0과 99999 사이의 10 진수 5 자리 숫자는 정수 sssss. 16 진수 또는 24 진수 문자 참조가 나열되지 않습니다.
5. 는 REF * 윈
6. 는 REF $ 윈
7. 는 REF * sssss
8. 는 REF $ sssss
9. 는 REF 표시가 다음 텍스트 줄 변수 또는 번호의 마지막 REFnn 또는 REFsssss 정책에 의해 지정된 하나 이상 참조가 포함된 실행. 더 이상 참조하는 텍스트 라인이있다면, '텍스트 끝'표시됩니다. 는 REF '다시 입력'하는 경우, 첫 번째 참조 텍스트 라인이 나열됩니다. 텍스트 내에서 검색 변수 이름 또는 번호와 현재 검색 줄 번호를 기억하고는 일반적으로 (항상은 아니지만) 언제 어떤 명령은 DOS를 실행과 관련된 손실됩니다.
10. 는 REF는 = 문자 시퀀스 여기서 xxx는 표준 기본 텍스트 포장 루틴에 의해 xxx의 포장입니다. 기본 텍스트는 다음입니다 포장 xxx의 가치와 줄 번호의 모든 라인을 포장 xxx의 가치를 포함하는 목록에 일치하는 검색됩니다. 관람석이 가득 가치 xxx는 이상의 16 바이트 길이의 첫 번째 16 바이트를 포장은 비교에 참여하십시오. ref의이 형식은 사용자가 알고 싶어 할 때 사용하는 어디 텍스트 기본 함수 코드 (즉, 인쇄, LPRINT, 고토 등)을 사용합니다. 텍스트 라인 트리플 엑스를 포함하는 형식으로 9는 REF 명령의 반복 발행에 의해 한 번에 하나를 표시할 수 있습니다.
11. 심판 "이 xxx의 형식을 형식으로 10 ~ 비슷한 그 xxx를 제외하고 포장하지 않습니다 작동합니다. 그 자체가 "를 포함하지 않는 한 xxx의 xxx는이 문자열로 간주됩니다. 이 형식은 문자열 xxx는 의견에서 찾을 수 있습니다.
12. 심판 @이 문장을 sssss 형식으로 9 유사한 검색이 누구 줄 번호보다 크거나 같음 sssss 1 텍스트 줄 것으로 시작하여 그 제외됩니다.
보도 휴식 시간에 일시 중지, 계속해서 입력하고, 최대 화살표 심판 기능을 해지할 수 있습니다. 형식은 5~8아르 동일한 1과 2로, 지정된 변수 이름 또는 10 진수로 / 인쇄 시작리스트를 제외하고, 경우, 또는 다음의 높은 기존의 이름이나 전화 번호, 아니라면 존재하지 않습니다.
SYS12/SYS는 시스템 심판 문이 실행에 있지 않은 경우, 시스템은 DOS로 (종료됩니다 섹션 5.5 참조).
7.11. 낮은 케이스 억제 (모델 전에만 해당)
텍스트 문자열을 소문자의 억제가 (모델 전 단지) 하드웨어 소문자 수정하거나 해당하지만 ROM을 표시 루틴을 우회하여 소문자 드라이버를 사용하지 않아 필요 없어 사용자는 때때로 왜 어떤 문자열이 실패와 구문과 비교해서 어찌할 바를 모르는 것입니다 오류가 나타나는 완벽한 문장에 나타납니다. 이것은 위쪽으로 표시할 문자열로 대소문자의 수용으로 인해, 및 텍스트 문장에 소문자 @의 수용이다. 상하 반대 전에 Basic은 문자를보고하려면 ROM이의 스왑 낮은 사건을 기억하십시오. 데이터의 경우에는이 문제에 대해 그것이 디스플레이에 나타납니다 equal.on면 여전히 낮은 경우 메모리에 / 대문자 불일치 수 있습니다 기억 제외 할 수있는 게있다. 텍스트 입력의 경우, 시스템 옵션으로 = Y를 텍스트 문자열 대소문자는 아니지만 낮은 경우는 @, 대문자로, 이러한 문제의 많은 강제를 제거하면됩니다.
7.12. 런타임 전용
디스크 할당 베이직 들어 거기에 베이직이 실행 전용 모드 :에서 실행되도록 강제 수있는 두 가지 방법이 있습니다 (1) 기본 프로그램 파일을 암호로 보호하는 경우에는 시스템이 옵션은 AB를 = Y를, 그리고 (2), 암호가 설정되어있다면, 액세스가 지정한 비밀 번호 으로 실행 또는로드 (옵션에서 R)의 성명 및 액세스 수준 = EXEC.
시스템 옵션 AB를 = Y를하려면 DOS 명령)이 문을 R을 필요한 실행하거나 부하를 (옵션 포함해야합니다 베이직을 활성화하는 프로그램을 운영으로 실행을 시작하면 입력하는 직접적인 명령 구문을 사용할 수 없습니다.
실행 모드에서만, 브레이크 키이 비활성화되어 및 기본이 직접 진술 (데이터를 수락에서 확인을 저해입니다) 연산자입니다. 이 프로그램은, 그리고 모든 권한을 가지고 그것을 행사해야합니다. 메뉴 프로그램) 및 기타 기본 프로그램에 대한 진술을 R을 실행하거나로드 (옵션 발급할 수 있습니다 이러한 프로그램 메뉴 프로그램으로 돌아갑니다 아니면 시퀀스의 다음 프로그램으로 이동 동일하게 할 수 있습니다. 선택적으로, 기본 프로그램은 메모리에 항상 남아있을 수 있으며, CMD를 통해 "여"는, 삭제 및 병합, 필요에 따라 오버레이 프로그램을 동원. 프로그래머 신중하게, 실행, 병합,로드 아래에 사용 가능한 옵션을 공부하고 "여 기능을 CMD를.
7.13. TRSDOS과 사이에 NEWDOS/80에 CMD를 비교 함수를 사용합니다.
1. CMD를 ° "구현되지 않음; CMD를 사용하여"S "로.
2. CMD를이 "B는"아니 내가 모델에 NEWDOS/80도 TRSDOS에 의해 사용됩니다. TRSDOS '모델 III에 사용이 NEWDOS/80에서 구현되지 않습니다; 사용 CMD를 "브레이크, 예 / 아니오"
3. CMD를 "C"는이 명령은 (1), 그 문자열 이내에 제외 및 프로그램 텍스트에서 모든 공백을 압축 (2) 완전히 포함하여 텍스트의 모든 발언을 삭제 전적으로 발언하는 그 라인. 성명은 CMD를 "C"는, S는, 이들을 문자열과 발언 시간 제외 프로그램 텍스트에서 모든 공백을 압축합니다. 성명은 CMD를 "C"는, R은 전적으로 전적으로 발언했다 그 라인을 삭제하는 등 텍스트의 모든 발언을 삭제합니다.
어떤 경우에는 고토는 GOSUB는 등 완전히 발언과 텍스트의 발언의 삭제 이들 참조된 라인이 사라지는 원인이됩니다 텍스트 라인을 참조하십시오. 프로그램은 이러한 GOTOs과 GOSUBs을 가지고 변경 있어야하는데 전적으로 발언하지 않습니다 텍스트 라인을 참조하십시오. 소견이 프로그램에서 삭제된 후, 어떤 정의되지 않은 줄 번호가 발생하는 경우 확인합니다 RENUM U를 실행합니다.
베이직은 여전히 혼란스러운 상황을 일으킬 수있는 텍스트 발언이나 문자 문자열, 텍스트에서 공백의 제거에없는 공백을 무시하도록 설계되었습니다 있지만. 예를 들어, 압축
C $ 10 ~ 그대로 들판 1,20
20여 또는 D 다음 10면
10 Field1, 20ASC $
20 IFFORDTHEN 10
실행하는 동안 두 라인 중 후 (1) 프로그램은 ASCII로 저장되었습니다 발생할 및 구문 오류가 발생할 것이다 다시 또는 (2) 라인이 수정되었습니다 읽어 보시기 바랍니다. 주 또는도 위의 두 가지 조건 중 전에 CMD를 "C"를 함수 발생 몇 달 동안 존재할 수있는 이러한 문제를 방지하기 위해 자동으로 각각의 텍스트 라인을 압축, 압축을 풉니다 다시 팩과 그 공백이 전에 존재했던 이전과 함께 새로운 포장을 비교 밖으로 압축된. 두 packings은 어떤 방식 으로든 다른 모든 텍스트 라인 들면, 공백은 텍스트 라인 (비고 경우, 삭제로 복원됩니다, 삭제)와 남아있는 라인의 번호가 디스플레이에 표시됩니다. 그런 다음 사용자가이 라인을 검열 수 있으며 프로그램이 영향을 미치지 않습니다 공백을 제거합니다. 특정 프로그램의 경우에는 거의 줄을 CMD를하여 "C"를 거부해야합니다.
4. CMD를이 "D는"TRSDOS '의미는 모델 3에 NEWDOS/80 아래에 구현되지 않았습니다; 사용 "CMD를 doscmd". 모델 나 cmd를 "D"는 여전히 123에 불구하고 바람직하다 방법입니다 디버그 호출합니다.
5. CMD를 "이메일"은 도스 오류 최신 도스 베이직 오류가 발생하여 연관된 쪽지 보낸 표시합니다.
6. CMD를 "여"가 아니라 TRSDOS에 사용됩니다. NEWDOS/80에는 두 가지 형식이 있습니다 :
1. CMD를 "여"는, 구단이 때 함수 코드 FC는 findable는 REF, RENUM과 다른가되어야한다.
2. CMD를 "F가 = 구단"이 때 함수 코드 FC는는 REF, RENUM 등 또는 특별히 정의 함수 코드는 일반 텍스트 루틴 포장에 의해 혼동 될 수로 본 사람이 사용할 수 없습니다.
이들은 CMD를 "여"함수 섹션 7.15에서 지정됩니다. 7.20를 통해.
7. CMD를 "나"가 아니라 전 모델에 중 NEWDOS/80 또는 TRSDOS에 의해 사용됩니다. TRSDOS '모델 III에 사용이 NEWDOS/80에서 구현되지 않습니다; 사용 CMD를 "도스 cmd를"합니다.
8. CMD를 "J"캘린더 날짜 변환.
CMD를 "J", date1, date2
적절한 형식과 저장 date2 문자열 변수에 결과로 표현을 date1 변환합니다. date1 경우 mm / dd / yy 형식입니다, date2는 DDD의 형식으로 저장되고 date1면 -yy/ddd 형식으로, date2는 mm / dd / yy 형식에 저장됩니다 어디 :
음 01과 12 사이의 두 자리 개월 값입니다.
DD는 01과 31 사이에 하루 두 자리의 건물 개월 값입니다.
DDD는 001과 366 사이의 3 자리 숫자 하루의 건물 년 값입니다.
yy를 00과 99 사이의 두 자리 상대적 1 년 이내 세기 값이다. 윤년 전환 들어, yy를 1900에서 20 세기, 즉 1999 년 수로 간주됩니다.
9. CMD를위한 "L"은 모델 III는 NEWDOS/80에 구현되지 의미; TRSDOS 사용 CMD를 "로드 filespec". 이 기능은 전 모델에 사용되지 않습니다
10. CMD를 "O"가 배열 정렬; 토론 아래 참조 (섹션 7.21.) CMD를위한 "오".
11. CMD를 "피"가 아니라 전 모델 TRSDOS '모델 3의 의미에 NEWDOS/80에서 구현되지 않습니다 사용, 사용 슬쩍 (& H37E8)는 현재 프린터의 상태에 대해 0 - 255 가치를 구하십시오.
12. CMD를이 "연구"는 TRSDOS '모델 3의 의미는 NEWDOS/80에서 구현되지 않습니다; 사용 CMD를 "시간 내내 배치되어있어, Y"는. 모델 나 cmd를에서 "연구"는 여전히 이전과 인터럽트 reenables.
13. CMD를 "S"로 종료 베이직 및 DOS 모든 준비 상태로 돌아갑니다. 그러나, 명령 CMD를 양식의는 "S = doscmd", 다음 발생을하는 경우 :
1. 도스 명령 도스 명령 버퍼로 이동합니다 doscmd.
2. 로열티가 종료되었습니다.
3. DOS 명령은 도스 버퍼로 실행하지 않고 즉시 배치 DOS를 준비 개입.
4. 언제 명령이 완료되면, DOS를 준비 베이직하지 않도록 제어를 반환합니다.
14. CMD를 "T"는 TRSDOS '모델 3의 의미는 NEWDOS/80에서 구현되지 않습니다; 사용 CMD를 "시간 내내 배치되어있어, N"입니다. 모델 나, "T를"에서 CMD를 여전히 이전과 인터럽트 비활성화합니다.
15. CMD를 "X"가 아니라 전 모델에 NEWDOS/80에 의해 사용됩니다. TRSDOS '모델 3의 의미를 구현하지 않습니다; 심판 명령을 사용합니다.
16. CMD를 "부터 Z"가 아니라 전 모델에 NEWDOS/80에 의해 사용됩니다. TRSDOS '모델 3의 의미를 구현하지 않습니다; "경로, CMD를 사용하여 ..."합니다.
7.14. CMD를 "은"doscmd
문자열 표현에서 CMD를 기능과 관련된 두 개 이상의 문자가있는 경우 중 하나는 "S ="또는 "여 ="로 시작하지 않습니다 다음 문자열이 명령 도스에 의해 실행될로 간주됩니다. 베이직은 도스 '명령 버퍼에 명령을 이동 미니 - DOS 모드로 DOS를 설정, 및 DOS 4419H를 통해 도스 - 콜 명령을 실행 호출합니다. 반환되면 기본은 도스 '미니 - DOS 모드를 해제합니다. 그것은 법적 미니 - DOS 환경에서되지 않았기 때문에 DOS는 명령을 거부있다면, 기본 후 DOS로 정상 모드에서 다음을 수행하여 명령을 재발행을 시도합니다 :
약 8,000 바이트 Basic의 배열 영역의 상단과 기본의 (어떤 문자열 영역 바로 아래에 스택의 바닥 사이에 있음)가 아닌 경우, 기본은 ( '메모리 부족') 오류의 톰 선언하고 현재의 진술을 종료합니다. 공간을 사용할 수있다면, 기본이 5200H에서 70FFH 그 자유 영역으로, 모든 메모리를 이동 베이직의 메모리 (상단에 지역 7000H - 71FFH과 7100H에서 지역 이상의 체크섬을 계산 스택을 사용하는 자체를 설정하는 약 2 초 정도 걸립니다) . 그럼 도스 도스 명령을 실행 호출합니다. DOS에서 반환되면 기본 위로 5200H - 70FFH에 저장된 영역을 이동하고 체크섬을 (다시, 또 다른 2 초) recomputes. 수표는 DOS 명령 일부 Basic의 바이트의 변경이 실행이 수단을, 로열티를 계속할 수 없습니다하고 DOS로 출구와 '나쁜 기억'오류가 실패하면.
그렇다면이 명령은 기본 이제 DOS에서 반환 코드를 검사 처형했다. 오류가 발생한 경우 오류 메시지가 이미 기초와 "doscmd"성명 '이전에 표시되는 오류'라는 오류 상태를 표시 CMD를 종료되었습니다. 도스 오류가 발생하는 경우, 기본은 4409H 도스 오류 메시지를 표시 통화 및 DOS 오류 '라는 오류 상태'로 CMD를 "doscmd"진술을 종료합니다. 오류가 발생하는 경우, 기본은 정상적인 처리를 계속합니다.
모든 도스 명령이나 라이브러리 어셈블리 언어 프로그램 (만 5200H - 6FFFH 지역 및 / 또는 비 베이직, 메인 메모리가 아닌 도스 영역)이 방식으로 실행 될 수를 사용하여 실행됩니다. SUPERZAP과 DIRCHECK가 CMD를 통해 실행될 수 있습니다 두 가지 프로그램이있다 ""doscmd. 형식과 복사본의 대부분의 양식은 할 수 있지만, 단일 드라이브를 두 디스켓 복사본들은 메모리의 최대 금액을 필요로 할 수 없습니다. 또한 복사에 UBB 매개 변수를 지정하지 않습니다.
, DOS 명령은 기본은 doscmd 문자열 DOS 명령 버퍼로 이동에 추가합니다 다음 Enter 문자를 포함 80 자, 제한됩니다 기억하십시오.
사용자 프로그램은 나가 경고 모델 나 메모리 영역 4080H - 41FFH (모델 III에 지역 4080H - 41E2H)를 제외하고 혼자 변경은 기본의 현재 사용과 적합성에입니다.
CMD를 "기본"이 실행되지 않을 것입니다. CMD를 사용하는 프로그래머가 기본 및 반환을 종료하고 싶어 몇 가지 이유로 경우는 "S = 기본".
거의 모든 도스 명령 CMD를 통해 실행될 수있다 ""doscmd. 예 :
1. CMD를 "DIR을 1"목록 디렉토리를
2. CMD를 "복사 엑스 : 0 YYY : 1"복사 파일을
3. CMD를 "복사 0 1 07/10/81 FMT"전체 디스켓에 복사 형식
4. CMD를 "는 SUPERZAP는"프로그램 SUPERZAP 및 기본으로 돌아갑니다을 실행
5. CMD를 "는 마십시오 CHAINFIL는"체인 파일 함수와 반환을 수행
7.15. CMD를 "는여 = 아빠", "과 CMD를"여 POPN을 = CMD를 POPR ""
성명 CMD를하는 경우 "여 = 아빠는"다음, 모든 반품 및위한 다음 컨트롤이없고 뛰어난 반환 또는 nexts의 기본을 떠날 정화하고 있습니다. 완료되면, 실행은 다음 문을 계속 처리합니다. 이 정책의 목적은 '복잡한 코딩 및 기본의 첫 단계로 돌아가려면의 프로그래머'에 보석 아웃을 허용하는 것입니다. 이것은없이 높은 수준으로 재귀에 CMD를 반환한다 "는여 = 아빠는"결국 프로그램 고장의 원인이됩니다 스택 베이직의 컨트롤에 잔류 정보를 떠나는 방지됩니다.
성명 CMD를했다면 "여 = POPR의"가, 다음으로 현재 GOSUB 수준이 그 수준에 대해 어떠한위한 NEXTs 뛰어난와 함께 믿음이없는 자들이다. 이것은 제어를 제외하고 반환으로 다음과 같은 성명에 통과하지 않는 동일 GOSUB지만, 대신 관련 진술에 전달 CMD를 "여 = POPR"문을 다음과 같은.
성명 CMD를하는 경우 "여 = POPN은"다음, 가장 최근에 정화가를위한 다음의 제어 데이터를 설립하였습니다. 이것은 '와 동일합니다 다음'어디 루프 한도가 초과됩니다. 실행 문장과 CMD를 "여 = POPN"문을 다음과 계속됩니다.
성명 VN은 변수의 이름,를위한 다음 루프 VN와 관련된 "여 = POPN"부네를 CMD를하는 경우 VN의 루프가 뛰어난 동안 함께 기타와 - 다음 루프를 설립 정화됩니다. 실행은 다음 VN '에 대한'하면 루프가 종료하는 것과 같습니다. 실행 문장과 CMD를 "여 = POPN"VN 문을 다음과 계속됩니다. CMD를의 목적은 "여 = POPN"그는 / 그녀는 그 후 역순으로위한 다음 변수를 사용하는 경우 프로그래머를 혼란스럽게 할 수 잔류 루프 제어 정보를 떠나지 않을 동안 밖으로 루프 어기고 수 있도록하는 것입니다.
7.16. CMD를 "여 = SASZ"
영향이나 변수를 허락없이 변경 Basic의 문자열 영역 크기.
CMD를 "여 = SASZ"exp1
문자열 영역 크기는 변수를 지우고없이 변경될 수 있습니다. exp1은 값이 큰만큼 문자열 영역이 때 문이 실행이 들어있는 문자열을 포함할 수 있도록해야합니다. exp1이 너무 작은 경우 또는 너무 (즉, 큰 오류가 발생합니다)를 텍스트, 스칼라와 배열의 영역을 중복 생성됩니다. 예 :
CMD를 "여 = SASZ", 4000
7.17. CMD를 "는여 ="지우고 CMD를 "여"는 계속 =
기본 변수 청소 선택적.
CMD를 "여 = 지우기"는 vn1, vn2, vn3는 ... 지정된 변수를 삭제하실 수 있습니다. 지정된 변수가 배열 내에있는 경우, 전체 배열이 지워집니다. 문자열 영역의 크기는 변경되지 않습니다. 이 문장 때 배열이 더 이상 필요하거나 사용자가 사용해야 redimension에 후속 DIM 문을 그것으로 기원합니다. 이 문장은 다중 텍스트 라인으로 CMD를 "여 = 계속에 대한 설명"아래에있을 수 있습니다.
CMD를 "여 = 유지", vn1, vn2, vn3은 ... 모든 변수들을 지정하고 해당 DEFFN 정책에 의해 정의된 등 특별히 정의된 변수를 제외하고 제외하고 허가를 받아야됩니다. 문자열 영역의 크기는 변경되지 않습니다. 아무런 변수 이름이 지정되지 않으면 모든 변수는, 특별한 사람 제외하고 허가하고 있습니다. 지정된 변수명은 배열 내에있는 경우, 전체 배열은 맑은 면제됩니다. 문장가 지정할 수 많은 varfable 이름 다음 noncomment 텍스트 라인 장소 때마다 텍스트 라인의 마지막 변수 이름이 쉼표 뒤에 복용하는 하나의 텍스트 라인에서 오버플로 원하는대로. 예 :
CMD를 "여 = 계속", $, B %를 C 나 디 #, '진술 첫 번째 줄은
전자!,여은 G $, '성명 2 라인
REM 수면이 라인으로 흐르게되어
반장님!, 난 '진술 마지막 줄에
7.18. CMD를 "여", 삭제
텍스트 라인의 동적 삭제 :
CMD를 "여", Delete를 ln1 - ln2
이 문장은 어떤 라인 번호를 포함에서 텍스트 라인과하는 것입니다 그리고 모든 라인을 포함한 ln2 번호가 프로그램의 실행 중에 삭제될 수 있습니다. 모든 변수는, 그 범위에서 삭제 DEFFN 명세서에 대한 DEFFN 변수가 허가 제외 유지됩니다. 문자열 영역 크기는 변경되지 않습니다. 그의 현재의 문자열을 실제로 삭제된 텍스트 영역에 해당 문자열이있는 문자열 영역으로 이동하는 모든 문자열 변수. CMD”F”,DELETE must not be executed as a direct statement, must not be contained in a DEFFN statement, a subroutine or a FOR-NEXT loop has a POPS function is implicitly performed), must be the last statement on its text line and must be followed by the text line where execution will continue after the delete. 예 :
100 CMD”F”,DELETE 10500-15000
110 X=1 execution continues here after the DELETE is completed
7.19. CMD”F=SWAP”
Swapping of variable contents:
CMD”F=SWAP”,vn1,vn2
This function swaps the value of variable vnl with that of variable vn2. Both variables must be of the same type, ie, both strings, both single precision floating point, etc. Example:
CMD”F=SWAP”,A$,B$
7.20. CMD”F=SS”
BASIC single stepping:
1. CMD”F=SS” turn on single stepping
2. CMD”F=SS”,ln1 single stepping starts at line ln1.
3. CMD”F=SS”,N turn off single stepping.
The BASIC programmer may now single step through program execution. Using either format 1 or 2 above sets BASIC into single step mode, though for format 2, actual single stepping does not start until text line ln1 is the next line to be executed. A single BASIC text line is executed for each step, and between steps the line number for the next line to be executed is displayed in '@nnnnn' format in the display upper right corner to indicate that BASIC is waiting for the operator to respond. Responding ENTER causes line nnnnn to be executed and then BASIC waits for user response again. Responding BREAK causes execution to be broken in the normal manner though it should be noted that the line number the BREAK shows is for the line just executed or being executed while the '@nnnnn' display is for the next line to be executed. If the user does not change text during BREAK, the program may be continued via CONT; in this case, the '@nnnnn' display will immediately reappear without execution of a line. Pressing ENTER will then execute the line. While in BREAK, the operator may turn single stepping on or off as desired without affecting the ability to CONT. If the BREAK occurs before RUN or LOAD,R executes one text line, CONT will not work.
Single stepping or the scheduling of the single stepping to start when a particular text line is encountered remains in effect until either CMD”F=SS”,N is executed to turn it off or until a format 2 type stepping command is executed, wherein stepping goes off until the specified line is encountered. The execution of RUN, LOAD, NEW, etc. does affect single stepping state.
7.21. CMD”O”
The main memory BASIC array sort has 2 formats:
1. CMD”0″,n,av1[,av2,....1 (direct sort)
2. CMD"0",n,*iav1,av2[,av3,...] (indirect sort)
In explaining this sort, the term REN is used and is defined to mean a Relative Element Number identifying an array element. The elements within any BASIC array, regardless of dimension, are integer numbered from 0 up. If an array has only one dimension, then an element's REN is simply the value of its subscript and if you use only single dimensioned arrays, you can ignore the rest of this paragraph. However, if you use multi-dimensional arrays, then you should know which method to use to increment array subscript values in order to extract elements in the sorted order. CMD”O” does not care what dimension the arrays have; it simply counts off the array elements in the order BASIC stores them in main memory. You, the programmer, do care as you must use subscripts in order to access the array elements. For multi-dimensioned arrays, the rule for computing the REN is complex and can best be illustrated by a three dimension array example using two statements:
DIM A(R1,R2,R3)
Y = A(X1,X2,X3)
where the REN of this element is computed as X1+X2*(R1+1)+X3*(R1+1)*(R2+1). If the array had only two dimensions, then the REN would be X1+X2*(R1+1), and, of course, if the array had only one dimension, the REN would simply be X1.
If the CMD”O” statement specifies more than one array, excluding iav1, then the RENs for the first sort item in each array, excluding iav1, must be equal.
The sorting order used has one level for each array specified, excluding the iav1 array, with highest to lowest level in the order, left to right, of the array variables in the CMD statement. Within each level, the normal sort order is ascending ASCII (actually hexadecimal) numeric value for character string arrays and most negative to most positive value for numeric arrays. However, if the array variable in the CMD statement is prefixed with a minus sign (example: -A#(0) ), then the order of sort within that level is descending ASCII (actually hexadecimal) numeric value for character string arrays and most positive to most negative value for numeric arrays. A null compare string character is considered to have a numeric value less than
Normally in character compares, the entire string is used in the compare. However, if the array variable in the CMD statement is suffixed with a field of the form (x,y) (Example: A$(1)(5,4) ), then the compare starts with the xth character of the string and compares using only y characters.
n is the number of elements in each of the arrays participating in the sort. Only n elements from each array participate in the sort. Elements of an array below or above the n elements specified do not participate. If n is a zero value, then for the sort, n is set to the number of elements in first array specified from and including the element specified through and including the last element of the array.
If the number of elements in any array from and including the specified element to and including the array's last element is less than n, FC error is declared.
A maximum of 9 arrays may be specified. All array variable subscripts, except for the indirect array if specified, must evaluate to the same REN value.
Format 1 is a direct sort meaning that the elements of all 1 to 9 arrays are moved around to conform to the desired sort order.
av1 must be specified; av2 and up are optional.
The resulting order of the n elements in each array is the same for each array (ie, the arrays are not sorted independently). Thus, if the jth element of array 1 is sorted into the kth element slot, then for each of the other arrays, if any, the jth element is also placed into the kth element slot.
Format 1 is compatible with TRSDOS Model III BASIC CMD”O” if and only if only one array variable is specified, it is for a string array and n is an integer variable.
Format 2 is an indirect sort. In this sort, only the n elements of array iav1 are altered; the other arrays are not changed in any way. The intent of format 2 is to allow a sorted sequence to be determined without actually changing the arrays supplying the sort values. A user may have a group of data records spread across a number of arrays such that a record consists of one element from each array, with the REN of each of those elements making up the record equaling the record number. By using format 2 with the indirect array, the user may effectively sort the records using a subset of the items as the sort criteria and without actually rearranging the order of the records, thus leaving them in record number order.
Format 2, as opposed to format 1, is indicated by specifying the iav1 array variable, prefixed by an * .
iav1 must be an integer array variable.
av2 must be specified; av3 and up are optional.
The n consecutive elements starting at iav1 are initialized with the RENs corresponding to the n consecutive elements of array av2 (which also correspond to the RENs for the other arrays, if any).
During sorting only array iav1 is altered; , arrays av2 and up are not altered.
Upon completion, the n elements of array iav1 are in the desired sorted order such that by using successive values out of array iav1 as subscripts, the user may access elements from any of the other arrays (that are single dimensioned) in that sorted order. Accessing multi-dimensioned arrays is more complex and is left as an exercise for the more advanced user.
Example program using a number of sorts:
10 DIM NM$(200),AM!(100),LN$(l00),IX%(100),ZC!(50),L$(50)
30 X=150
40 CMD”O”,X,NM$(0)
60 CMD”O”,X,-NM$(25)
70 CMD”O”,0,-AM!(1),LN$(1)(5,3)
80 CMD”O”,100,*IX%(0),ZC!(1),L$(1)
At line 40 the first 150 elements of array NM$ (elements NM$(0) to NM$(149) ) are sorted in ascending order. If any of the strings are null, they will appear first in the resulting array. The last 51 elements of array NM$ (elements NM$(150) to NM$(200) ) do not participate in the sort and are left unchanged.
At line 60 elements NM$(25) through NM$(174) are sorted into descending order, with null strings, if any, appearing as the end elements of those 150 elements. The first 25 and the last 26 elements of the array do not participate in the sort.
At line 70 the AM! and LN$ arrays are both sorted, both in the same order which is first by descending order of AM! array values and then, where AM! array values are equal, by ascending order of LN$ array values where only the 5th, 6th and 7th characters of the LN$ array elements participate in the sort determination. If a LN$ array element has less than 5 characters, it is considered a null for sort determination purposes. AM!(0) and LN$(0) do not participate in the sort. Since the number of elements to be sorted was specified as 0, the number of elements to be sorted was taken as 100, the number of elements in the AM! array from and including the AM(1) element to and including the last element of the array.
Line 80 contains an indirect sort. In this sort, the first 100 IX% array elements are initialized sequentially with REM numbers from 1 to 100 with IX%(a) = 1 and IX%(99) = 100. These RENs are used as subscripts to index into the ZC! and L$ arrays. The sort is in ascending order, first by ZC! array values and then, where the ZC1 array values are equal, by L$ array values. None of the elements of the LC1 and L$ arrays are changed in any way. Instead of moving the ZC! and L$ array elements, only the corresponding REM in the IX% array is moved. Upon completion of the sort, the REN in IX%(O) can be used as a subscript to index the first-in-sorted-order element from each the ZC! and L$ arrays, and the REN in IX%(99) can be used to index the last-in-sorted-order element from each the ZC! and L$ arrays. Lastly, remember that elements IX%(100), ZC!(0) and L$(0) did not participate in the sort in any way.
7.22. RENEW
Reinstate a program deleted by the command NEW.
RENEW
The BASIC direct command RENEW reinstates the BASIC program text ostensibly deleted by a just given NEW command. All that RENEW does is set the first byte of the text area non-zero, reestablishes the text forward queue pointers and performs CLEAR. The previous program should thus be reinstated in the text area, available for editing and executing. However, if at least one text line was created or loaded since NEW, then the previous text is not reinstated. Furthermore, if, during this BASIC invocation, the text area never contained any text, RENEW will never the less assume that there is text in the text area and attempt to reinstate it with very disastrous affects to BASIC.


6.1. SUPERZAP
Program SUPERZAP/CMD provides the user with the means to read and write standard 256 byte diskette sectors or any part of main memory, except writing to ROM. Learning to use SUPERZAP is strongly recommended for all NEWDOS/80 owners. If corrections (known as zaps or patches) are to be made to your NEWDOS/80, Apparat will distribute them in written form for application using SUPERZAP. You must know how to us DFS and MODxx. In learning to use SUPERZAP, do your learning on a diskette having data that you can afford to lose!!!!!
Certain diskettes are written in non-standard sector formats and are thus inaccessible to SUPERZAP. There exist other programs that read anything that is on a diskette, but do not have some of the other SUPERZAP features. The user, at some time, will probably want to buy one of these other programs from the vendors that sell them.
SUPERZAP operates in both upper and lower case.
Where numeric values are inputted and unless otherwise specified, SUPERZAP assumes DECIMAL unless the value is suffixed with the character H to indicate hexadecimal.
6.1.1. Function Modes
The menu displays the functions available. The user keys in the selected function's characters and then presses ENTER. The SUPERZAP functions are as follows:
DD Display a Disk sector. SUPERZAP will ask for the drive number and the number of the relative sector within the diskette, read the sector and display it.
DM Display a 256 byte page of main memory. SUPERZAP will ask for a memory address, truncate it to a 256 byte boundary and display the page.
DFS Display a File's Sector. SUPERZAP will ask for the file's filespec. Next, SUPERZAP will ask for the relative sector number within the file and will display that sector.
DTS Display track's sector. SUPERZAP will ask for the drive number, track number and the number of the relative sector on the track. It will then read the sector and display it.
DMDB Display Memory Dump Block. SUPERZAP will ask for the filespec of the memory dump file (created by DUMP, see section 2.20). It will display the dump's base address. Next it will ask for a main memory address within the range of the dump, truncate it to a 256 byte boundary and display the memory page.
VDS Verify Disk Sectors. SUPERZAP will ask if the operator wants a pause when a read protected sector is encountered. Next, SUPERZAP will ask for the drive number and the number of the relative sector on the diskette of the 1st sector to be verified. Lastly, it will ask for the number of sectors to be verified. It will then proceed with the verify which consists simply of reading each sector within the range specified. When a protected sector is encountered and if a pause was requested, SUPERZAP will display the sector's location and wait for the operator to press ENTER before continuing. VDS is a fast way of finding bad sectors on a diskette that the user suspects have gone bad. While verifying is being done, VDS may be cancelled by pressing up-arrow.
ZDS Zero Disk Sectors. SUPERZAP will ask for the drive number and the number of the relative sector on the diskette of the first sector to be zeroed. Next, it asks for the number of sectors to be zeroed. The zeroing is then done. The read protection status of each sector is not changed.
CDS Copy Disk Sectors. SUPERZAP will ask for the drive number and the number of the relative sector on the diskette of the source (where the data is coming from) range's 1st sector. Next, it will ask for the same data for the destination (where the data is going to) range's 1st sector. Lastly, it will ask the number of sectors to be copied. The copy is then done. Destination sectors are each assigned the read protection status of the corresponding source sector.
CDD Copy Disk Data. This function differs from CDS in that any string of diskette bytes may be copied. SUPERZAP will ask for the drive number and the number of the relative sector on the diskette of the sector containing the source range's 1st byte and then ask for that byte's offset within the sector. It will ask for the same information for the destination range's 1st byte. Lastly, it will ask for the number of bytes (65535 is the maximum allowed) to be copied. The copy is then done. The read protection status of the destination sectors is not changed.
DPWE Display PassWord Encode. SUPERZAP will ask for the password, encode it and display the resulting encode in hexadecimal as it would appear in a directory FPDE.
DNTH Display Name/Type hashcode: SUPERZAP will ask first for the filename and next for the type (name extension). It will then hash them and display the resulting hashcode in hexadecimal as it would appear in the directory HIT sector.
EXIT End SUPERZAP and exit to 440DH (DOS READY).
Since ZDS, CDS and CDD change diskette data, the user is first asked if he/she is sure this function is wanted, just in case the wrong function was keyed.
For CDS and CDD, the copy normally proceeds in ascending byte order for both the source and destination. However, if the highest source byte is within the destination range, the copy is in descending byte order to avoid destructive overlap.
All disk I/O's are done through the normal DOS sector I/O routines. Thus, if an error occurs, system option AM and AW I/O try counts are in effect.
For VDS, ZDS, CDS and CDD, if a disk I/O error results, the operator will be offered the choice of retrying, skipping the sector or terminating the function. In many cases, repeated retrying will eventually work. If the error sector was a source sector, skip will cause the associated destination bytes to receive whatever happens to be in the source's buffer; this should be no problem as the user is faced with a reclaim job anyway.
When SUPERZAP is waiting for a numeric value, keying an X as the value will cause SUPERZAP to terminate the function and return to the menu. If SUPERZAP is waiting for a filespec, a null parameter will terminate the function.
When any of DD, DM, DFS, DTS or DMDB is suffixed with ',P', the sectors or memory pages will be printed as well as displayed. For DD,P, DFS,P or DTS,P, the user will be asked for the number of sectors to be printed. For DM,P or DMDB,P the user will be asked for the number of bytes. If the printer is not ready or drops ready, SUPERZAP will loop waiting on it without operator notification. Pressing the P key will cause printing to pause; press ENTER to continue. Pressing the H key will terminate printing.
6.1.2. Display Mode
For DD, DM, DFS, DTS and DMDB, while a sector or memory page is displayed, SUPERZAP is in the display mode and waits for a display mode command. Except for the F and L commands, the keyed command bytes are not displayed and do not require termination with ENTER; the command is executed as soon as all characters of a display mode command have been keyed. The display mode commands are:
X The current function is terminated and SUPERZAP returns to the menu.
g Redisplay the same sector or memory page.
+ or ; Display the next higher sector or memory page.
- Display the next lower sector or memory page.
J Restart the same function.
R Restart the same function, retaining the 1st parameter unchanged.
SCOPY DD and DTS only. The current sector is to be copied to a specified sector. SUPERZAP will ask for the destination sector's drive number and relative sector number. The destination sector may be the same as the source sector. SUPERZAP will read the destination sector and report its status. Then the source sector's contents are written to the destination sector. SCOPY is useful when a sector is found to have bad parity but, with the exception of a few bytes, is intact; by SCOPYing upon itself, new parity will be generated, and the sector can then be repaired. It is also useful for altering a sector's read protect status.
When SUPERZAP is in the display mode, it has a diskette, file, main memory or memory dump file search capability. The match is on 1 to 4 hexadecimal bytes (without the suffixed H) which are represented by aa,bb,cc,dd. When the search finds a match, the sector or memory block containing the first byte of the match is displayed with a thin vertical blinking cursor to mark its position. That cursor will disappear as soon as a key is depressed; however, the associated 'find' position is remembered in case the search is to be continued. When SUPERZAP is in display mode, the following commands to perform searching may be keyed in, terminated by ENTER.
F,aa,bb,cc,dd The 1 to 4 hexadecimal match bytes are stored, and the search starts at the first byte of the diskette (if DD or DTS mode) or file (if DFS or DMDB mode) or main memory (if DM mode).
F, The same as above except the previously established match bytes are used.
Fxx,aa,bb,cc,dd The 1 to 4 hexadecimal match bytes are stored, and the search starts within the current sector or block at the xxth relative byte where xx is a 2 digit hexadecimal number without the suffixed H.
Fxx or Fxx, The same as above except the previously established match bytes are used.
The search continues at the first byte following the position of the first byte of the last match, and the search uses the previously established match bytes.
L,aa,bb,cc,dd This command is to be used instead of F,aa,bb,cc,dd when, in DFS mode, the file being searched is standard load module (ie, SUPERZAP/CMD, LMOFFSET/CMD, etc.) and the user wants SUPERZAP to purge out all except actual object code bytes from the search. This allows a load module file search for two or more bytes without the imbedded loader control information interfering with the match. The resulting display will still contain the loader control information; the user must be prepared to occasionally see this control information imbedded within the matching bytes. Usually, but not always, this control information is 4 bytes long with the first byte being a hexadecimal 01. Except for purging this control information from the match, L,aa,bb,cc,dd works the same as F,aa,bb,cc,dd. The F command may be used to continue an L type search.
L, The same as above except the previously established match bytes are used. MODxx DD, DM, DFS and DTS only. SUPERZAP enters modify mode and positions the cursor to the first hex digit of relative byte xx (value 00H – FFH) of the current page or sector.
EXIT End SUPERZAP and exit to 402DH (DOS READY).
If an error occurs during the keying in of a display mode command, the partial command is ignored and the sector or block is redisplayed again.
6.1.3. Modify Mode
SUPERZAP enters modify mode upon execution of the display mode command MODxx.
This mode allows the changing of individual bytes within the current disk sector or memory page. Responses while in modify mode are defined as follows:
Hexadecimal digit character
– 9 or A – F.
The hex digit at the current cursor position is replaced by the new hex digit, and the cursor is advanced one position. If the cursor wraps around, an error will occur if the next character inputted is a hex digit character. Replacements in a main memory page are for real while replacements in a sector are buffered until the sector is written or a 'Q' command cancels the pending update.
Space or right arrow. The cursor is advanced one position.
Left arrow. The cursor is retarded one position.
Shift right arrow. The cursor is advanced 4 positions.
Shift left arrow. The cursor is retarded 4 positions.
Down arrow. The cursor is advanced one display line.
Up arrow. The cursor is retarded one display line.
ZTxx This sequence is displayed vertically in display column 7 and must terminate with ENTER. All hex digits from and including the cursor position to and including the 2nd hex digit of relative byte xx are zeroed. The cursor is left positioned to the 1st hex digit following relative byte xx, and if wrap around occurs, the next input char may not be a hex digit.
RTxx,jk This command is similar to ZTxx except that each byte's 1st digit is replaced with the hex digit j, and each byte's 2nd digit is replaced with the hex digit k.
질문 For sector operations only. Modify mode is terminated, any changes in the buffer are discarded, and SUPERZAP returns to display mode.
ENTER For memory page operations, modify mode is terminated, and SUPERZAP returns to display mode. For sector operations, the operator is asked if he/she really wants to update the sector now. If not, SUPERZAP continues in modify mode. If so, the sector (with any changes) is written back to disk, modify mode is terminated, and SUPERZAP returns to display mode.
When modify mode encounters an error, it will display 'INVALID MODIFICATION MODE CHAR. REPLY '*' TO CONTINUE', Upon receiving * , SUPERZAP returns to modify mode.


6.2. DISASSEM
Program DISASSEM/CMD disassembles Z-80 object code from a standard TRS-80 load module or from main memory. The disassembled code is sent to the display or to the printer. Generated source text may be sent to disk and a location cross reference may be produced.
Responses to the query 'OBJECT FROM MAIN MEMORY OR DISK?' (M OR D):
1. null or D Object is a disk load module.
1. Respond to the query 'FILESPEC?' with the filespec of the load module to be disassembled.
2. Respond to the query 'OFFSET OBJECT VIRTUAL ADDRESSES BY? (HEX)' with either null (meaning 0) or a 1 to 4 digit hexadecimal number (without suffixed H) which when added to the load addresses within the load module will give the proper address where the instructions being disassembled would be during normal execution of that code. This parameter is needed when an object module loads to one place in main memory, but actually executes from another. Wraparound is allowed. 예 :
If the object module loads into C000H – FFFFH but is to execute in 7000H – AFFFH, applying an offset of B000 will cause the disassembler to disassemble as if the load was actually done to 7000H – AFFFA.
3. Respond to the query 'VIRTUAL RESTART LOCATION? (HEX)' with either null (meaning start at the file beginning) or a 1 to 4 digit hexadecimal number (without the suffixed H) which is the listed location of any instruction of the disassembly. This allows restart of a large disassembly within the instruction print portion of the listing, and the location chosen is usually the location value for the first instruction on the page where printing was interrupted.
2. M The object code is in main memory.
1. Respond to the query 'OBJECT VIRTUAL BASE ADDRESS? (HEX)' with the 1 to 4 digit hexadecimal location value (without suffixed H) where the object code is considered to execute from, whether or not it is actually there now. In the listing, this value will be the first instruction's printed location value.
2. Respond to the query 'OBJECT REAL BASE ADDRESS (HEX)?' with null (meaning the real and virtual locations are the same) or with the 1-4 digit hexadecimal main memory location (without suffixed H) where the disassembler will actually find the object code.
Responses to the query 'ANY OPTIONS?':
1. null null No more options to be specified.
2. PTR PTR The output is sent to the printer instead of the display.
3. BFSP BFSP Bypass Full Screen Pauses. In normal operation the disassembler pauses whenever the display screen is full or whenever a break occurs in the sequential locations of the disassembled file. The disassembler waits for (1) ENTER to continue, (2) X to terminate the disassembly or (3) V (object from main memory only) to restart the disassembly at a new location. The BFSP option bypasses this pausing, causing display to occur as fast as the disassembly can proceed. This option is automatically invoked if option PTR is specified.
The remainder of the options are legal only when the object code is from disk:
4. NCR The location reference table is not to be built and no display or listing done of it.
5. NIP Do not print or display the disassembled instructions.
6. STD Source To Disk The disassembled code is to be sent to disk in the format of an EDTASM source text file. See discussion below.
7. FGN=xxx First Generated Name xxx is the 3 alphabetic character name of the first name to be assigned during the STP action described below. The default name is AAA.
8. RTD The location reference table is to be stored onto disk. After the reference table is built, the program will ask for the 'REFERENCE TABLE FILESPEC?'. Respond with the filespec of the file to contain the reference table. Reference table files can be used (by a user-created program) to merge the reference tables of two or more programs. See below for file format.
9. REA Enable listing of all types of references; this is the default.
10. RE& Enable list of the specified reference type where '&' is one of L, P, R, S, T, U, V, W or X. Reference types are defined at the beginning of each location table listing.
11. RIA Disable list of all types of references.
12. RI& Disable listing of the specified reference type where is one of L, P, R, S, T, U, V, W or X.
The disassembler operates through four phases:
1. If object code from disk and option NCR not specified, DISASSEM displays 'BUILDING CROSS REFERENCE TABLE' and passes through the object code building the location reference table. For a large disassembly this will take some time. If insufficient main memory for the table, the disassembly will terminate.
2. If RTD option specified, this phase writes the location reference table to disk.
3. List disassembled instructions to display or printer. If STD specified, the resulting text is also written to disk. On the disassembled instruction print lines, column 1 indicates the number of references to bytes of the instruction; the value is hexadecimal with blank meaning and F meaning 15 or more references. Column 2 indicates which bytes of the instruction have been referenced. If blank and column 1 non-blank, then only the instruction's 1styte is referenced; otherwise the hex digit represents a 4 bit binary mask of which bytes, from the left, are referenced.
4. If object is from disk and NCR is not specified, the location reference- table is displayed or printed. The definitions of the reference type codes are given first. Then, in ascending numeric order, every referenced location is listed with the location of every referencing instruction. Suffixed to each referencing location value is the reference type code for the Z-80 instruction making the reference.
If the disassembler finds something wrong with the object module, either 'DISK OBJECT FILE FORMAT NOT AS EXPECTED' or 'PAST END OF FILE' will be displayed and the disassembly will terminate.
While the disassembled instructions are being displayed or printed, holding down P will cause a pause; press ENTER to continue. Holding down X will terminate the disassembly. At most other times when DISASSEM is awaiting a user response, the disassembly may be terminated by holding down up-arrow and pressing ENTER.
For main memory disassemblies, the operator may shift the disassembly point at will. When the disassembly is paused, keying V will display the query 'VIRTUAL RESTART LOCATION? (HEX)'. The operator responds a 1 to 4 hexadecimal digit value, which is the main memory location where the disassembly is to restart.
If the PTR option is specified and after all options have been specified, the following occurs:
Respond to the query Q LINES PER PAGE, EXCLUDING TOP AND BOTTOM MARGINS? (1-255)' with the number of printable lines per page.
Respond to the query '# LINES EACH FOR TOP AND BOTTOM MARGIN? (0-10)' with the number of lines the disassembler is to skip at both the top and bottom of each page. If 0, the disassembler does no paging action. What the disassembler does for top and bottom margins is completely independent and in addition to anything a printer driver may be doing.
Respond ENTER to the query 'REPLY “ENTER” WHEN PRINTER AT TOP OF PAGE' when the printer is on and at top of page.
Respond to the query 'HIGH ASCII CODE FOR PRINTER? (5A – 7F)' with the 2 hexadecimal digit value (between 5AH and 7FH) for the highest printer code for your printer.
The STD option causes the disassembled code to be converted into EDTASM type source text code. The resulting STD output (if not too large) can be loaded and assembled by EDTASM. The outputing of source text via the STD option works as follows:
After the cross reference table build phase and the RTD phase, respond to the query 'ASSEMBLER SOURCE TEXT OUTPUT FILESPEC?' with the filespec of the file to contain this generated source code. The file will be opened, and the generated text sent to it during the main disassembly phase.
All numeric values within the disassembled code are replaced with a 3 character alphabetic name unique to that value. The names are assigned arbitrarily in ascending alphabetic order with the first name assigned either AAA or the name specified by the FGN option.
If a numeric value does correspond to a disassembled location, the name assigned to that value is placed in the location name field of that location's instruction when it is sent to disk and displayed or printed.
If a numeric value does not correspond to a disassembled location, an EQU statement is generated at the end of the source text to equate the name with the value.
ORG statements are generated as necessary, and the END statement is generated as the last text statement.
The format of the reference table file created by the RTD option is:
1. 1 byte = C0H. Backward EOF. Ignore it.
2. 1 or more entries of the form:
1. 2 byte memory location value, 1st byte = low value, 2nd = high.
2. Control byte, bits 7 – 0 (7 is left most):
7-6 = 11. Dummy last entry in table. Ignore all other bits and bytes of the entry.
7-6 = 01. Referencee entry. Bits 5-0 = 0. The location is referenced by one or more of the subsequent referencer entries.
7-6 = 00. Referencor entry. The instruction at this location referenced the location of the previous reference entry. Bits 5-0 contain the references instruction type: 0 = S, 1 = T, 2 = U, 3 = V, 4 = W, 5 = X, 8 = P, 9 = L, and 10 = R. See a reference listing for definitions.


6.3. LMOFFSET
Program LMOFFSET/CMD reads a tape or disk load module, displays its load information, optionally changes the program's load area, optionally attaches an appendage enabling the program at execution time to move itself from its load area to its execution area, optionally prepares the module to run under non-disk BASIC via SYSTEM, and stores the module onto disk or tape with a new name.
LMOFFSET functions as follows:
1. Reads either a tape-type assembly load module from tape or a disk-type assembly load module from disk.
If from disk, LMOFFSET asks for the source filespec.
When reading from tape, a single * will be displayed when LMOFFSET is ready for the tape. Do rewind (if necessary) fast forward positioning (if necessary) and press PLAY. *** appears when tape read synchronization has completed. The character C will be displayed when a bad checksum is encountered. The character P will be displayed if leading extraneous data bytes encountered. The character I will be displayed if imbedded extraneous bytes are encountered.
2. Displays (1) the area into which the module will load, (2) possible conflicts with system storage and (3) the module entry point. If an appendage is scheduled to be applied, the entry point will be into the appendage.
3. Asks for a new load point. Reply either with a new load point or simply reply ENTER if satisfied with the current load point. If the user is simply transferring the load module without change, respond ENTER to the first request for a new load point and LMOFFSET will go directly to step 7 below.
4. If a new load point specified, LMOFFSET asks if the appendage is to be suppressed.
If the appendage is to be suppressed, the resulting module can only be used via the DOS library command LOAD as there is no appendage to move the program to its execution area and the entry point is forced equal to 0. The resulting output load module can be used via LOAD where two or more load modules are loaded into main memory and then stored as one load module via DOS library command DUMP.
If the appendage is not to be suppressed, then LMOFFSET will append to the user program either a DOS enabled appendage or a DOS disabled appendage, depending on whether DOS is to be disabled or not.
5. If a new load point was specified, LMOFFSET goes back to 3 above to display the resulting load information and ask for a new load point. If another load point is given, it cancels the one specified earlier, including its scheduled appendage, if any.
6. Finally, when the response to 3 above is a null, then if a new load point was specified and the appendage is not suppressed, LMOFFSET asks if DOS is to be disabled. If so, the DOS disabled appendage is selected; if not, the DOS enabled appendage is selected.
7. LMOFFSET next asks if the destination is disk or tape.
If the destination is disk, LMOFFSET asks for the filespec of the load module file to be created.
If the destination is to tape, LMOFFSET asks for the tape module name and then which tape speed (L or H). Next it asks for ENTER when the tape is positioned and in record mode.
8. The resulting load module is then written to disk or tape. If a new load point was specified, (1) the load address for each object code record is altered, (2) if the appendage was not suppressed, an extra object code record (the appendage) is inserted before the entry point record and the entry point is set to the appendage's 1st byte, and (3) the entry point is set to 0000 if a new load address was specified and the appendage was suppressed.
9. When the destination file write is completed or if an error or other type of termination occurs during step 7 or 8 above, LMOFFSET asks if the same module is to be written to another file (which may be the same file). If so, steps 7 and 8 above are repeated.
10. When all done or if an error or other type of termination occurs while not in steps 7 or 8, LMOFFSET asks if another source load module is to be processed. If so, execution returns to step 1 above; if not, LMOFFSET exits back to DOS.
The up-arrow key may be used at any time to terminate the current LMOFFSET function. If LMOFFSET is waiting for a response, hold down the up-arrow key and press ENTER.
A module can end up with multiple appendages if the output from one LMOFFSET run is made the input to another, but doing this is strongly discouraged; in the case where one appendage is a DOS disable appendage, it must never be done. LMOFFSET knows nothing of a previously existing appendage appended by a revious execution of LMOFFSET.
LMOFFSET does not perform any object code relocation!!!! It only assigns code to new load locations so that DOS can load the module from disk without damage to DOS.
If the source program loads into the display area 3C00H – 3FFFH) without overflowing it, those object code records will not have their load addresses modified.
The appendage added to a module by LMOFFSET starts with 64 bytes of zeroes. This area is available to users to patch in special code. The load address of this patch area is the same as the module's resulting entry address, providing there is only one appendage. Z-80 code patched into this area will be the first executed when that program commences execution. This will be done before the program is moved to its execution locations and before DOS is disabled, if DOS is to be disabled.
When a program is to run in any part of the DOS area, a DOS disabling appendage must be specified. The DOS disabling appendage causes the user program to execute as if it was loaded from tape under the non-disk BASIC SYSTEM function.
When the resulting user program module is executed, the action is as follows:
For a DOS enabled appendage:
1. Executes any user supplied code in the 64 byte patch area.
2. Moves the main program to its execution locations.
3. Commences execution of the main program.
For a DOS disable appendage:
1. Executes any user supplied code in the 64 byte patch area.
2. Moves the display screen contents to high memory.
3. Displays the following:
RECORD AND THEN PERFORM THE FOLLOWING INSTRUCTIONS
1. HOLD DOWN BREAK KEY AND PRESS RESET TO ACTIVATE NON-DISK BASIC.
2. RELEASE BREAK KEY AND ENTER BASIC INITIALIZATION RESPONSES.
3. ENTER “SYSTEM”.
4. ENTER “.”
4. When the operator has done the above, the appendage continues execution.
5. Restores the screen contents from high memory.
6. Moves the main program to its execution locations.
7. Commences execution of the main program.


6.4. DIRCHECK
The DIRCHECK/CMD module tests and lists the target diskette's directory. If errors are found in checking the directory, they are listed before the directory listing. DIRCHECK also allows the option of cleaning up (not repairing) the directory, and, as an aid to moving single density diskettes back and forth between the Models I and III under NEWDOS/80, allows the option of writing the directory protected.
To the query 'OUTPUT TO PRINTER', reply Y if output to go to printer and N if to go to the display.
To the query 'WHICH DRIVE CONTAINS TARGET DISKETTE', reply the target drive number, in decimal.
DIRCHECK reads the BOOT sector (the diskette's 1st sector), and tests that the first 2 bytes are 00H and FEH respectively. If they are, DIRCHECK uses the 3rd byte as the number of the lump at whose first sector the directory starts. If the first 2 bytes are not correct, DIRCHECK displays '***** DISKETTE 1ST SECTOR NOT “BOOT”. ASSUMING DIRECTORY STARTS ON LUMP 17 DECIMAL.'.
DIRCHECK proceeds to read the directory. In previous NEWDOS versions, DIRCHECK refused to process a directory that was not write protected. Because of the problem of moving single density diskettes between the Model I and Model III under NEWDOS/80, an unprotected directory will now be accepted, with two error messages displayed, one at this time and one after the files have been listed. The error message is '***** AT LEAST ONE DIRECTORY SECTOR UNPROTECTED'. If this message appears along with many other errors, the user can assume that DIRCHECK has not found the directory and should NOT execute the W function described later.
DIRCHECK uses the drive's PDRIVE (see section 2.37) data to determine the number of lumps and granules accounted for by the directory. If the PDRIVE data is not correct for the diskette, it is very probable DIRCHECK will list errors that are, not actually present.
Complaints, if any, about the directory are next listed. If a number is given, it is in hexadecimal for use in directory repair via SUPERZAP. Do not try to repair a bad directory unless you know what you are doing!!!!!!! The next best thing is to try to extract valued files via COPY and then re-format the diskette having the bad directory.
If the complaint is about a directory entry for a file, either the primary or an extended entry, the hexadecimal code is the DEC for the file's FPDE. When the complaint deals with a file extended directory entry but does not specify the file name/type, the hexadecimal code is the DEC for the FXDE itself. When the complaint deals with a HIT sector byte, the hexadecimal code is the relative location of that byte in the HIT sector. When the complaint deals with a GAT sector byte, the hexadecimal code is the relative location of that byte in the GAT sector. When the complaint deals with a granule, the hexadecimal value is expressed in bb,r format where bb is both the lump number and the relative byte location of the lump's byte within the GAT sector and x is both the relative granule within the lump and the bit number, counting from zero from the right, within that GAT byte.
The diskette's name and date are next listed.
The files are next listed, with numeric values in decimal and the following definitions:
S System file.
File has invisible attribute.
P=nnn File has access level nnn, and both update and access passwords are non-blank.
EOF=sss/bbb End Of File value. ass = the relative sector within the file. bbb = the relative byte within the sector.
nnn EXTS nnn is the number of extent elements, maximum of four per FDE, used to account for this file's disk space.
nnn SECTORS The number of sectors allocated to this file.
Lastly, the number of free granules and locked out granules for the diskette are displayed. If the diskette contains more than 60H (96 decimal) lumps or if GAT relative byte 60H equals 0FFH, DIRCHECK assumes that there is no lock-out (existence) table. Note, NEWDOS/80 does not mark granules as locked out; the lockout table is maintained only for compatibility with Model I TRSDOS.
If at least one directory sector is unprotected, another error message indicating such is displayed.
'FUNCTION COMPLETED' message is displayed followed by the query:
REPLY
N TO EXIT PROGRAM
Y IF ANOTHER DISKETTE FOR SAME SPECS
FOR PROGRAM RE-INITIALIZATION
TO WRITE DIRECTORY SECTORS PROTECTED
C TO CLEAN UP (NOT REPAIR) THE DIRECTORY
Reply with one of the following:
N Program exits to DOS at 402DH.
Y Another diskette to be checked but with same response to the printer query.
Another diskette to be checked but with different response to the printer query.
The directory sectors are read and re-written in protected state. Refer to specifications for DOS command WRDIRP (section 2.49) and option SYSTEM option BN (section 2.46). This function is only meaningful for single density diskettes that are going from Model I to Model III or vice versa or used interchangeably.
C All unused FDEs within the directory are zeroed. This is a cosmetic function only that clears out residual information from no longer used FDEs. Normally, when DOS releases FDEs via KILL or automatic space deallocation, it only zeroes bit 4 of the first byte of the FDE, leaving the rest of the information for the remote possibility that the sophisticated user will attempt to reclaim the file or the sectors it used to own.
During display or printing, pressing:
쉬는 processing will pause at end of current line or line group.
ENTER continues processing.
UP-ARROW terminates displaying or printing.


6.5. EDTASM Disk Oriented Editor/Assembler
35 months ago Apparat converted the TRS-80′s tape oriented editor/assembler to:
1. Read text from disk as well as cassette.
2. Write text and/or object to disk as well as cassette. Disk files are validity read after all sectors written.
3. Allow down-arrow scrolling to display up to 15 text lines.
4. Prevent the confusing printer output associated with DEEM. Only the 1st byte of associated object code is listed.
5. List symbols in alphabetical order with reference list.
6. Accept and convert lower case alpha to upper.
It was anticipated that Radio Shack would soon come out with a disk oriented editor/assembler that would eliminate any need for the Apparat enhancements. To a degree that has come to pass, but not sufficiently to bury the Apparat enhanced version. Since the Apparat enhanced version is based on the copyrighted tape editor/assembler, Apparat has always required and still requires, as a pre-condition of use of its enhanced version, that the user purchase a copy of the TRS-80 tape editor/assembler and thereby pay the royalty due. In an effort to enforce this, Apparat has always refused, and will continue to refuse, to supply any documentation for the editor/assembler beyond that dealing explicitly with Apparat's enhancements.
This EDTASM is essentially the same as that offered with NEWDOS/21 and NEWDOS/80 Version 1 except:
1. EDTASM will now display, as part of the 'A' CMD, after the TOTAL ERRORS display, the number of bytes left in the text area so the user can judge his approach to symbol table overflow or text buffer overflow.
2. (Model III only) Object code cannot be outputted to tape. The user must output the object code to disk and then use LMOFFSET to copy it to tape.
Supplemental instructions for the editor-assembler.
1. To load a text module into the text buffer, enter one of the following commands:
1. LD=filespec1 if text from disk
2. LT=nnnnnn if text from cassette
where filespec1 is the filespec for the assembler text module to be loaded into the text buffer from disk and nnnnnn is the name of the assembler text module to be loaded into the text buffer from tape.
Examples:
1. LD=OLDTEXT/SRC:1 loads the assembler text file OLDTEXT/SRC into the text buffer from the diskette currently mounted on drive 1.
2. LT=OLDTXT loads the assembler text file OLDTXT into the text buffer from tape.
If the text buffer already contains text, the query 'TEXT IN BUFFER. ARE YOU CONCATENATING???' appears. If you are not concatenating, reply N; the buffer is marked empty before loading the specified text module. If you are concatenating, reply Y to cause the new text to be appended onto the end of the old. No concern is shown for overlapping sequence numbers; therefore you should execute a N EDTASM command upon completion of the load to assure a valid set of ascending sequence numbers.
2. To store a text module:
1. WD=filespec2 if text going to disk
2. WT=nnnnnn if text going to cassette
where filespec 2 is the filespec of the disk file to receive the assembler text from the buffer and nnnnnn is the one to six character name given to the text file written to tape. Examples:
1. WD=NEWTEXT/SRC:1 The assembler text (not the object code) currently in the text buffer is written to file NEWTEXT/SRC on the current diskette mounted on drive 1.
2. WT=NEWTXT The assembler text currently in the text buffer is written to tape and named NEWTXT.
3. For A commands with NO option not specified, respond to the query 'OBJECT FILE TO DISK OR TAPE? REPLY D OR T?':
1. T (Model I only) Object code going to cassette. The program name will come from the A command.
2. D Object code going to disk. Respond to the query 'OBJECT FILESPEC?' with the nnnnnnnn/ttt.pppppppp:d filespec of the object module. The file will be opened immediately, but not written until end of assembly listing. The name in the A command is ignored.
4. When an output text or object disk file is opened, one of the following is displayed:
1. 'FILE ALREADY EXISTS. USE IT????'. Reply Y if this is your intention. Otherwise reply BREAK to terminate the W or A command.
2. '************** FILE NON-EXISTENT. REPLY 'C' TO CREATE IT'. Reply C if this is your intention. Otherwise reply BREAK to terminate the W or A command.
5. Due to an error in the original DOS, EDTASM runs with interrupts disabled (except when re-enabled by disk I/O) in order that use of BREAK will function properly.
6. This EDTASM can execute in a regular TRSDOS Model I environment.
7. This EDTASM uses the standard keyboard, display and printer routines and control blocks. Users altering the system beware!!!!


6.6. CHAINBLD
The BASIC program CHAINBLD/BAS is a simple program to allow users to create and modify chain files (chaining is discussed in section 4.3).
CHAINBLD operates in record mode, requiring that an EOL character (ENTER character) appear in the file at least every 240 bytes, and it treats each occurrence of the EOL character as both the end of a BASIC input line and the end of a record within a chain file. A11 inserts, deletions, replacements, moves and copies are done in terms of records.
Furthermore, CHAINBLD makes no provision (except for the old Version 1 hex codes 80 – 83) for the file to contain special non-printable characters. The rule is that if the string resulting from the BASIC statement LINEINPUT C$ does not contain a given character, then that character cannot become part of the chain file. The exception is the EOL character, which is automatically supplied by CHAINBLD. If the user needs special characters in his/her chain file, some other program must be used to build the chain file. As a last resort, there is always SUPERZAP.
Tp some space, be sure to specify .a string area size.
After initialization, the main menu is displayed (not to be confused with the edit menu). The choices are:
1. DELETE ALL TEXT LINES All the text lines in the string area are deleted and the edit menu is displayed. When CHAINBLD starts execution, there are no text lines in the string area.
2. LOAD EXISTING TEXT FROM DISK Use this option to edit an existing chain file. If the string area already contains text lines, CHAINBLD will ask if those lines are to be deleted. If not, CHAINBLD returns to the main menu as it assumes the user wants to do more with the previous text. Otherwise the old text lines are deleted.
CHAINBLD will then ask for the existing chain file's filespec. If the filespec does not contain a name extension, the name extension JCL is assumed. The file is then loaded into the string area. The file cannot exceed the string area capacity and cannot have more than 1000 lines. The file must be segmented into records as discussed above. After the load, CHAINBLD displays the edit menu.
3. SAVE TEXT TO DISK The user has completed the creation and/or editing of the chain file text and now wants to write it to disk. If there are no text lines, the CHAINBLD will ask if a null file is to be written; if not, CHAINBLD goes back to the main menu.
Next, CHAINBLD asks if the file is to be written so that it can be processed by NEWDOS/80 Version 1. If so, any /./0 through /./3 chain control records are changed as they are outputted by substituting the corresponding single byte control code (80H – 83H) in place of the /./x character sequence. The text in the string area is not changed.
CHAINBLD then asks for the output file filespec. If the filespec does not contain a name extension, the name extension JCL is used. The file is then written to disk. When done, CHAINBLD goes back to the main menu.
4. EDIT TEXT This option does nothing except display the edit menu.
5. EXIT PROGRAM If the string area contains text that has not yet been written to disk, CHAINBLD asks if the user really wants to exit the program; if not, CHAINBLD goes back to the main menu. Otherwise CHAINBLD deletes all text lines and releases all string space except 50 bytes. The program then ends in the normal manner.
When the edit menu is displayed the user has a number of choices:
1. List text lines. The text lines are implicitly numbered in sequential order regardless of the changes that take place is the text. Line numbers do not belong to individual text lines. Instead a line number indicates the line's position at the current time within the file. This means that insert, delete, copy and move all change the line numbers of some or all of the text lines. The L and ; edit commands allow the user to display the text lines. L; displays the first line. L/ displays the last. L52 displays the 52nd line. In each case, if any text lines follow the target line in the text, they are also displayed. The ; edit command allows forward text paging.
2. The I edit command allows for a one or more text lines to be inserted in the text after the specified line. 10 does inserting at the start of the text. I/ does inserting at the end of the text. 123 does inserting after line 23. Lines are inserted into the text until, but not including, a line containing the /.// character sequence is encountered. That character sequence terminates the line insert mode.
3. The R edit command allows a new line to replace an old line. R43 causes text line 43 to be replaced with the new line that CHAINBLD will ask for.
4. The D edit command allows one or more text lines to be deleted. D34 deletes text line 34. D 20 41 deletes text lines 20 through 41.
5. The X edit command allows the specified text line to be added onto. Note that CHAINBLD does not actually allow a line to be edited. The edit mode really refers to editing the entire text.
6. The C edit command allows the specified lines to be duplicated to another part of the text. C 20 30 5 causes a copy of text lines 20 through 30 to be inserted after text line 5. Please note that the old lines 20 through 40 will now have line numbers 31 through 42.
7. The M edit command allows the specified lines to be moved to another position in the text. M 20 30 5 causes the text lines 20 through 30 to be deleted from the text and reinserted after text line 5.
8. The U edit command redisplays the edit menu.
9. The Q edit command redisplays the main menu.
The best way to learn CHAINBLD is to use it. The NEWDOS/80 distribution diskette comes with a sample chain file named CHAINTST/JCL. Load it in and look at it. Once in the string area, you may modify the text as desired, but do not store it back out as CHAINTST/JCL; use some other name.


6.7. ASPOOL
1. The object module ASPOOL contained on the NEWDOS/80 diskette is HS Gentry's automatic Spooler Program, modified by Apparat to operate with NEWDOS/80 and to self-relocate. This program will automatically direct your printer output to the disk, and then automatically print it on the printer. This spooler program will print in the background while your foreground main program is executing provided the main program every second or so either sends a byte to be spooled or checks the keyboard for a new input character.
This spooler program is included on the NEWDOS/80 diskette as a free program to NEWDOS/80 owners. It is NOT a fully supported part of NEWDOS/80.
The basic operation of NEWDOS/80 DOS assumes that output that DOS sends to the printer will not involve disk I/O enroute to the printer. Therefore, the spooler discards all printer output it senses coming from DOS (such as PRINT, JKL, DIR with P option) with the warning message CAN'T SPOOL FROM DOS being displayed once for each spooled file.
This spooler program does NOT allow a spool file to be printed multiple times; once printed, the file EOF is set to 0 and the file closed to reclaim the file space. This spooler program does NOT remember spool contents from one spool activation to the next (this includes a reset). The user is warned that while the spooler is active, do NOT use reset or DOS library command BOOT to get to DOS ready. Instead, if another way is not available, use DFG to get to MINIDOS and then DOS library command MDBORT to get to DOS READY or use '123′ to get to the DEBUG facility and then use DEBUG command Q to get to DOS READY.
2. INITIAL SETUP. Create a working spool module.
Before the spool system can be used, working program module copy(s) of ASPOOL must be set up. You should set up a working program module for each different configuration you intend to use. When making a working program module, the input module 'filespec1′ must ALWAYS be ASPOOL/MAS or a copy of it, and the output module 'filespec2′ must NEVER be ASPOOL/MAS. To create a working spool program module (as opposed to the master), enter the DOS command filespec1,I (example: ASPOOL/MAS:0,I ). The program will then ask for parameter specifications:
The program asks if the software printer driver whose address in is 4026H – 4027H at the time of spooler activation is to be used to drive the printer. Reply Y for yes or N for no (the spooler will drive the printer). If N, then:
The program asks if the printer is parallel or serial. Answer P for parallel or S for serial. If serial, then:
The program asks if the printer is an H14 type. Respond Y for yes and N for no.
The program asks if the printer output is to be formed into pages with a form feed between pages. Reply Y for yes and N for no. If Y, then:
The user will be asked for the number of print lines per page. Enter a number between 10 and 99.
The program asks if the printer uses a soft or hard form feed. A soft form feed is done by counting the number of lines printed and then printing carriage returns (OUR) (with or without line feeds (OAR)) until the end of the page is reached. A hard form feed is a single control character that causes a form feed function. If your printer will recognize a hard form feed answer H, otherwise answer S. If soft form, then:
The program asks for the total number of lines per page. Answer with a number between 10 and 99.
The program asks if a form feed is to be done at the end of each print file. Reply Y for yes and N for no.
The next question concerns automatic linefeed on each carriage return. Some printers linefeed on carriage returns and the computer should not output linefeeds. If your printer is of this type (Radio Shack standard) answer the question with N. If you want the software to generate linefeeds then answer with Y.
The program asks for the number of the disk drive that will be used to spool the print data. Answer with a number from 0 to 3.
The program asks for the number of seconds to transpire after the last keyboard key inputted until the spool program can start printing again. Respond with a 2 digit value 00 – 59. The purpose of a non-zero delay is to allow the keyboard to have primacy over the printer. When a keyboard key is depressed and if the spool program is printing a file, printer action will pause while keys are being inputted and until the required number of seconds have passed since the last key.
The program asks if the printer is to be driven by the timer interrupts (every 25ms on the Model I; every 33 or 25ms on the Model III) as well as via keyboard input and spooler output. Reply Y for yes if the interrupts are to be used; reply N for no. Allowing the interrupts to be used enables the spooler program to print while a foreground program is executing that does not frequently check the keyboard or send output to the spooler. The disadvantage of using the interrupts is that for a buffered printer, interrupts are disabled during the entire outputting of a line to the printer. However, the time delay will probably be no worse than that associated with disk I/O. If the interrupts are used, printing will nevertheless stop if the foreground program never sends anything to the spooler or tests the keyboard for input. This is because the disk I/O to read the next sector is done only during keyboard checking or main program output to the spooler. See circular buffer discussion for an additional disadvantage when the interrupts are used.
The program asks if the circular buffer is to be used to buffer keyboard input characters. Reply Y if yes; N if no. The circular buffer helps prevent lost keyboard input. If the 25ms interrupt is enabled to drive the printer (see above option), the circular buffer uses the ROM keyboard character input routine and therefore disables any drivers (such as NEWDOS/80′s keyboard intercept routine, lower case driver, etc.) activated before the spooler is activated. If the 25ms interrupt is not used to send spooled output to the printer, then that does not frequently check the keyboard or send output to the spooler. The disadvantage of using the interrupts is that, for a buffered printer, interrupts are disabled during the entire outputting of a line to the printer. However, the time delay will probably be no worse than that associated with disk I/O. If the interrupts are used, printing will nevertheless stop if the foreground program never sends anything to the spooler or tests the keyboard for input. This is because the disk I/O to read the next sector is done only during keyboard checking or main program output to the spooler. See circular buffer discussion for an additional disadvantage when the interrupts are used.
The program asks if the circular buffer is to be used to buffer keyboard input characters. Reply Y if yes; N if no. The circular buffer helps prevent lost keyboard input. If the 25ms interrupt is enabled to drive the printer (see above option), the circular buffer uses the ROM keyboard character input routine and therefore disables any drivers (such as NEWDOS/80′s keyboard intercept routine, lower case driver, etc.) activated before the spooler is activated. If the 25ms interrupt is not used to send spooled output to the printer, then the regular keyboard routine(s) (as existed in the 4016H – 4017H vector at spool activation) is used. This latter also holds if the circular buffer is not used, regardless of whether or not the 25ms interrupt is used.
Now that the spooler has all the initialization parameters, the in-main-memory program is altered. The program then asks for the filespec of the working program module to be stored on disk. Respond with the filespec you will use in the filespec2,A DOS command discussed below; do NOT respond ASPOOL/MAS!!!!!! The working program module will be written to disk, and the spool program exits to DOS via 402DH. HINT: Use SPOOLER/CMD for filespec
3. ACTIVATE SPOOLING. When spooling is to be used, enter the DOS command “filespec2,A” (example: SPOOLER,A ) where filespec2 is the filespec of one of the working spool program modules you have created. filespec2 must NEVER be ASPOOL/MAS. If the spooler is already active, 'FILE ALREADY EXISTS' error message is displayed.
The module will load into the 5200H – 5FFFH region, relocate itself to HIMEM-areasize1+1, and sets HIMEM = HIMEM-areasize1 where HIMEM is the DOS high memory address contained in Model I locations 4049H – 404AH (Model III locations 4411H – 4412H) and areasize1 is the amount of memory required by the spooler. Then the keyboard vector at 4016H – 4017H and the printer vector at 4026H -4027H are intercepted to vector to the spooler. If interrupts are to be used, a routine is entered into NEWDOS/80′s 25ms interrupt chain of user interrupt routines. 'SPOOLER ACTIVE' is displayed, and the 402DH exit is taken to DOS.
The spooler is now active. All data intended for the printer will be directed to one of five disk files (POOL1, POOL2, POOL3, POOL4, POOL5). Why five files you may ask? Well, when you have “printed” as much data as you wish and would like that data to be actually printed on the real printer, you send an end-of-file to ASPOOL. This is done either via DOS command *ASP,W (CMD”*ASP,W” from BASIC) or by outputting to the spooler a 03 byte in the normal print stream
(LPRINT CHR$(3) from BASIC ). The file that was spooling will be closed and scheduled for printing. You may now spool to another file by just “printing” more data. The data will be placed on the disk while the first data file is being printed. This procedure may be repeated five times. If you try to spool a sixth file before the first has been printed on the real printer, the system will display 'SPOOL FULL. WAITING ON PRINTER' and will hang until a file is printed. All data is printed on the real printer in the background while the current or another main main task is executing or simply while the system is waiting for the user to tell it what to do next. Whenever *ASP,W is executed or a 03 byte is seen in the output to the spooler, the spooler program considers this an end of file (performing top-of-form if specified) even though you may be sectioning your spooled output for one report to keep the printer going and avoid running out of space.
Warning!!! The Model III ROM routine, normally used by the spooler, will discard the current character being sent to the printer if it senses the printer is not ready (including busy) and the BREAK key is pressed. Since the executing foreground program may be using the BREAK key while the spooler is printing in the background, there will be times when printer characters will be lost, unknown to the spooler. This can serious limit the usefulness of any spooler on the Model III that uses the ROM printer driver routine.
You may bring the spool system down gracefully at any time by the DOS command *ASP,S (CMD”*ASP,S” from BASIC) or by sending a 04 byte in the normal output to the spooler (LPRINT CHR$(4) from BASIC). This procedure will purge the current spool file, will prevent any new files from being created, and will display 'SPOOL STOPPING'. Main program execution then continues, any characters sent to the spooler will be ignored and the spooler continues to print any files that have been scheduled. When all files have been printed, the *ASP,P function is performed. NOTE, if the spooler appears to hang, it is probably waiting for the main program to check the keyboard. If the main program can't do this, try DFG, but wait till the drives stop.
You may bring the spool system down abruptly at any time by entering DOS command *ASP,P (CMD”*ASP,P” from BASIC). All remaining spooled data is lost. If an interrupt routine was active, it is purged. The keyboard and printer vectors are restored to what values they were when the spooler activated. If DOS's HIMEM value is the same as that set by the spooler when activated, HIMEM is set back to what it was before the spooler was activated, thus reclaiming the spooler's main memory. However, it the HIMEM is not the same, HIMEM is not changed, and the spooler memory remains lost to subsequent main programs. 'SPOOLER PURGED' is displayed, and the DOS 402UH exit taken to DOS.
You may flush the print queue at any time by entering DOS command *ASP,C (CMD”*ASP,C” from BASIC). The spooler will respond with “CLEAR BACKLOG OR PRINT (B/P)?”. Respond with a B and Enter if you wish to clear the backlog, or a P and Enter to stop printing the current print file. Clearing the backlog does not purge the current print file, and clearing the current print file does not purge the backlog.
The status of the spool system may be determined at any time by entering the DOS command *ASP (CMD”*ASP” from BASIC). The system will print a list of all files waiting to be printed (BACKLOG) and any file that is open for printing or spooling. If the system has been stopped but not yet purged, “SPOOL STOPPING” will be displayed. If the spooler has been purged or not activated, 'FILE NOT IN DIRECTORY' is displayed.

댓글은 휴일입니다.

[아이라 Goldklang의 TRS - 80 부활 사이트가에 의해 전원을 자랑스럽게 워드 프레스 .]