Wir schreiben ein Programm für einen Computer ALTAIR 8800 1975 Release

Hallo Habr.





In der Geschichte des Rechnens gibt es bestimmte Ereignisse, die den Lauf der Geschichte beeinflusst haben. Eines davon war die Entstehung des ersten in Serie gefertigten Personalcomputers.





In jenen Jahren wurden Computer nur von Wissenschaftlern und Ingenieuren in großen Unternehmen verwendet. Und dann erscheint ein Computer, den jeder kaufen kann. Der Altair 8800 enthielt einen 8080-Prozessor, 256 Byte Speicher in der ersten Version und lag unter 1000 US-Dollar - es war der erste erfolgreiche PC, der verkauft wurde. Dies war derselbe Computer, für den Bill Gates und Paul Allen die BASIC-Sprache entwickelten, dank derer Hunderte und Tausende begeisterter Schüler und Schüler in die Welt des Programmierens kamen.





Natürlich hatte die Billigkeit ihren Preis - die erste Version von ALTAIR hatte weder eine Tastatur noch einen Bildschirm, nur eine Kippschalttafel, wie auf dem Foto. Es wurde interessant herauszufinden, wie man ein Programm auf einem solchen PC schreibt und ausführt. Für diejenigen, die wissen wollen, wie es funktioniert, die Fortsetzung unter dem Schnitt.





Code

. ALTAIR 64 , 8080, 2 .





, , 1 5:





; Code segment:

        ORG    0o       ; Set Program Counter to address 0
START:  LDA    I
        MOV    B,A      ; RegB => I (1..N)
        LDA    STEP
        MOV    C,A      ; RegC => STEP (always 1)
        LDA    SUM
        MOV    D,A      ; RegD => SUM (result)
LOOP:     MOV    A,D    ; Move value to Accumulator from Register D (SUM)
          ADD    B      ; Add value in Register B to value in Accumulator
          MOV    D,A    ; Save result back to D     I
          MOV    A,B    ; Mov B to A and decrement it
          SUB    C
          JZ     PEND   ; If A is zero, the calculation is complete
          MOV    B,A    ; If not, continue
          JMP    LOOP     
PEND:   MOV A,D         ; Save result in SUM value
        STA SUM
PWAIT:  JMP PWAIT       ; Nothing to do, infinite loop

; Data segment:

        ORG    200o     ; Set Program Counter to address 200
I:      DB     5o       ; Data Byte at address 200 = 5
STEP:   DB     1o       ; Data Byte at address 201 = 8 (10 octal)
SUM:    DB     0o       ; Data Byte at address 202 = 0

        END             ; End
      
      



, 3 , I, STEP SUM, 1 5 1. B, C D, . JZ (Jump if Zero) , . SUM. , (data segment) , 200o ("o" octet, 8- ).





, , Python :





s = sum(range(6))
      
      



, , - . .





, , . , LDA:





"LDA I", I 200 = 80h, 3A 80 00.





MOV B,A :





01000111b = 47h





- , ( ). , "" , , . :





3a 80 00 47 3a 81 00 4f 
3a 82 00 57 7a 80 57 78 
91 ca 18 00 47 c3 0c 00 
7a 32 82 00 c3 1c 00
      
      



- 38 . MZ, - 0. , , , 40...





ALTAIR 8800, github. :





, ALTAIR . - . , 1 10001000b, DEPOSIT, , DEPOSIT NEXT. , EXAMINE/EXAMINE NEXT. RUN SINGLE STEP.





, DEBUG , hex- . , .





. , 202 = 10000010b, EXAMINE. D7..D0 00001111b = 15, 1 5:





, , . , , , .





1975 BASIC ALTAIR, 1976 "Micro-Soft". IT.





. ALTAIR - , 50 . , . 2 , , , " ".





, ALTAIR . -, "", :





, ALTAIR simh, Linux, :





, .





Wie immer viel Glück an alle.








All Articles