| 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. |