Estamos escribiendo un programa para una computadora ALTAIR 8800 versión 1975

Hola, Habr.





En la historia de la informática, hay ciertos eventos que han influido en el curso de la historia. Uno de ellos fue la aparición de la primera computadora personal producida en masa.





En esos años, las computadoras solo eran utilizadas por científicos e ingenieros en grandes empresas. Y luego aparece una computadora, que cualquiera puede comprar. El Altair 8800 contenía un procesador 8080, 256 bytes de memoria en la primera versión y tenía un precio inferior a $ 1000: fue la primera computadora personal exitosa que se vendió. Fue la misma computadora para la que Bill Gates y Paul Allen desarrollaron el lenguaje BASIC, la computadora gracias a la cual cientos y miles de estudiantes y escolares entusiastas llegaron al mundo de la programación.





Por supuesto, lo barato tenía un precio: la primera versión de ALTAIR no tenía ni teclado ni pantalla, solo un panel de interruptores de palanca, como en la foto. Resultó interesante descubrir cómo escribir y ejecutar un programa en tal PC. Para aquellos que quieran saber cómo funciona, la continuación bajo el corte.





Código

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





, .





Como de costumbre, buena suerte a todos.








All Articles