Re: [PureDarwin] It is true that is impossible write in binary code, the lowest level of programming that you can write is in hex code?

75 views
Skip to first unread message
Message has been deleted

Tomasz Sterna

unread,
Nov 4, 2014, 8:01:12 AM11/4/14
to pured...@googlegroups.com
Dnia 2014-11-03, pon o godzinie 14:56 -0800, françai s pisze:
> What is the lowest level of programming computers that you can write ?

Punch Cards
oh.. w8...

DIP Switches


Tyson Key

unread,
Nov 4, 2014, 8:46:21 AM11/4/14
to pured...@googlegroups.com
You can program a computer at the molecular level (or even sub-atomic level), by careful manipulation of silicon atoms under a highly-powerful microscope, in a cleanroom environment; and with care, you can even craft gates, and entire transistors with efficient fixed logic, this way. (笑)

Tyson. 

2014-11-03 22:56 GMT+00:00 françai s <romap...@gmail.com>:
I intend to write in lowest level of computer programming as a hobby. 

It is true that is impossible write in binary code, the lowest level of programming that you can write is in hexadecimal code? 

What is the lowest level of programming computers that you can write ? 

Is binary code? 

Is hex code? 

Is another machine code? Honestly do not know if it is true that there is another machine code beyond the binary and hex code. 

Is Assembly?

--
You received this message because you are subscribed to the Google Groups "PureDarwin" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puredarwin+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
                                          Fight Internet Censorship! http://www.eff.org
http://vmlemon.wordpress.com | Twitter/FriendFeed/Skype: vmlemon | 00447934365844

daid kahl

unread,
Nov 4, 2014, 8:56:36 AM11/4/14
to pured...@googlegroups.com
As far as I'm aware, radiation from cosmic rays (or solar flares) is responsible for a large portion of data corruption on hard disks (especially for cases where, say, the device is turned off or not connected and it cannot be a software bug).  Solid state drives are even more susceptible to this kind of thing.  So, good luck programming a computer at the sub-atomic level when a cosmic ray induces a nuclear reaction in your silicon wafer!  Of course, quantum computing research is on-going, but I think the states they induce are extremely short lived.

^_^

~daid

daid kahl

unread,
Nov 4, 2014, 9:09:57 AM11/4/14
to pured...@googlegroups.com
Though, to be more on topic, if one is inclined to play with, for example, hex programming, I would recommend something like an old video game system or assembly language for say, the Z80 processor found in Texas Instrument calculators.  There are lots of "rom hacks" out there were people do all kinds of wild things to old video games, and play them on an emulator or even the original hardware by various clever means.  

At least, at whatever time I considered doing such things, these were the target platforms I had in mind for such endeavors.  Ideally, if you're not working on something like an old TI calculator with 96k of memory (and there's no permanent storage) and instead say, a modern laptop, you'll probably save yourself orders of magnitude in time to program in a higher level language.  But, if you want to do it for fun or as a learning exercise, the platforms I mention above have (or at least had) small but active groups of enthusiasts to learn from.  Which isn't to say I'm averse to the discussion here at all, just my two cents!

I was very sad when I lost my graphing calculator on an airplane, though I only wrote programs in whatever terrible "basic" language they had.  There are some great games written in assembly for those calculators, and the battery life time is practically forever by modern cellphone standards.

~daid

Tyson Key

unread,
Nov 4, 2014, 9:23:59 AM11/4/14
to pured...@googlegroups.com
Also, you could try learning Verilog, and VHDL, or look into FPGA programming, if you want to go deeper under the surface, and play with something more exotic than x86/PPC/ARM Assembly...

Tyson.

Daiyu Hurst

unread,
Dec 17, 2014, 12:48:19 PM12/17/14
to pured...@googlegroups.com
I'm assisting a project to restore a CDC 6500 built in 1967 to operating condition. I was specifically hired to wrote diagnostic code,
and my later work is in assembly language, but the first simple stuff was machine code, in octal rather than hex. In original usage,
an operator would toggle this code into an array of 12 rows of 12 switches, The museum engineers built an interface using a 
Xylinx FPGA board to enable the invention of a larger virtual version of that panel, giving us 4k rows of 12 bits. So then the engineer
wrote a utility to take a machine program in an ASCII file appropriately formatted and download that program to the virtual
"deadstart" panel. Here's an example:

0001-0100 START    LJM
0002-0040                0040
0040-7700          FCN   0,
0041-1234                  1234
0042-1477          LCN   77
0043-3463          STD   COUNT
0044-3763 LOOP     SOD   COUNT
0045-6500          IJM   0,
0046-0051                  REPORT
0047-0574          NJN   LOOP
0050-0300          UJN   *-*       CHANNEL DID NOT GO INACTIVE, HALT
0051-1177 REPORT   LMN   77        COMPLEMENT A
0052-3457          STD   57        STORE A IN STM INSTRUCTION BELOW
0053-3461          STD   61        STORE A IN LJM INSTURCTION BELOW
0054-2000          LDC   0,
0055-0300                  'UJN *-*' 
0056-5400          STM
0057-7777                (A)
0060-0100          LJM
0061-7777                (A)
0062-0000
0063-0000
FFFF-FFFF Halts at 0050 if inactive not received. Else halts at addr=loop count

I don't think the physicality of toggling a program into the switches makes it truly any different than hacking up
a special device to get bits into the computer memory. So this makes machine language, whether written as 1s
and 0s on a sheet of paper, or as octal or hex digit groupings, as the lowest form of programming language. 
Having it on punch cards is also no important difference. I was there, I did it.

The assembly mnemonics you see above are all just comments I included to make the engineer happy. The
only processing done is to use the first 4-digit value as the address at which to store, and the second 4-digit
value is what is stored at that address.

I have seen an intermediate level between machine code and assembly language, here is an example for the
never-built CDC 8600:

**    CBH - C$ONVERT /B$INARY TO /H$EXADECIMAL.
*
*     CBH $CONVERTS A BINARY NUMBER TO AN /ASCII $CODED
*     $HEXADECIMAL REPRESENTATION.
*
*     E$NTRY  /B = $NUMBER TO BE CONVERTED.


CBH   D=B
      B=(CBHA-P)    =1H
      C=0
CBH1  E=D           $EXTRACT 4 BITS
      D=D(-4)
      E=E.(4)
      F=E-10
      E=E+#10
      P=CBH2,F(0    $IF /'DIGIT'
      E=E+7
CBH2  E=E(C)
      C=C+8
      B=B+E
      P=CBH1,D/0    $LOOP TO ZERO DIGIT
      R=A

CBHA  1H
      END

Next higher is assembly language. To contrast the above sample, here is some assembly language for the same architecture:

**        HEX - P$ROCESS /H$EXADECIMAL /C$ONVERSION.                    FTNDDP      75  
*         E$NTRY  /X1 = $DATUM ADDRESS.                                 FTNDDP      76  
*                X2 = $NUMBER OF DATA ITEMS.                            FTNDDP      77  
*                X3 = $CHARACTER ADDRESS.                               FTNDDP      78  
*                X4 = $FIELD WIDTH.                                     FTNDDP      79  
*         E$XIT   /X1 = $ADVANCED.                                      FTNDDP      80  
*                X2 = 0 $IF NO ILLEGAL CHARACTERS IN FIELD.             FTNDDP      81  
*                X3 = $ADVANCED.                                        FTNDDP      82  
*         S$AVES  /XA - XE.                                             FTNDDP      83  
                                                                        FTNDDP      84  
                                                                        FTNDDP      85  
 HEX      IX8    X4-17       $CHECK FIELD WIDTH                         FTNDDP      86  
 +        IX7    X3+X4       $SET END OF FIELD                          FTNDDP      87  
          NG     X8,*+1      $IF WIDTH < 16                             FTNDDP      88  
          IX3    X3+X6       $SKIP LEADING CHARACTERS                   FTNDDP      89  
          RX6    X3          $FIRST CHARACTER                           FTNDDP      90  
          SX5    0           $CLEAR ASSEMBLY                            FTNDDP      91  
 HEX1     IX8    X6-1R0      $CHECK CHARACTER                           FTNDDP      92  
          IX9    X6-1R9-1                                               FTNDDP      93  
          BX9    X9-X8                                                  FTNDDP      94  
          SX3    X3+1        $ADVANCE CHARACTER ADDRESS                 FTNDDP      95  
          NG     X9,HEX2     $IF /'DIGIT'                               FTNDDP      96  
          IX8    X6-1RA                                                 FTNDDP      97  
          IX9    X6-1RF-1                                               FTNDDP      98  
          BX9    X9-X8                                                  FTNDDP      99  
          SX8    X8+10                                                  FTNDDP     100  
          PL     X9,HEX3     $IF NOT /'A' - 'F'                         FTNDDP     101  
 HEX2     RX6    X3          $NEXT CHARACTER                            FTNDDP     102  
          LX5    4           $ADVANCE ASSEMBLY                          FTNDDP     103  
          BX5    X5+X8                                                  FTNDDP     104  
          LT     X3,X7,HEX1  $LOOP TO END OF FIELD                      FTNDDP     105  
          SX2    X2-1        $DECREMENT ITEM COUNT                      FTNDDP     106  
          WX5    X1          $STORE DATUM                               FTNDDP     107  
          SX1    X1+1        $ADVANCE DATA ADDRESS                      FTNDDP     108  
          NZ     X2,HEX1     $LOOP FOR ALL ITEMS                        FTNDDP     109  
          JP     X0          $RETURN                                    FTNDDP     110  
                                                                        FTNDDP     111  
 HEX3     IX8    X6-1R                                                  FTNDDP     112  
          ZR     X8,HEX2     $IF CHARACTER IS /' '                      FTNDDP     113  
          JP     ERR1                                                   FTNDDP     114  


Then the various tiers of high-level languages. 

medi...@gmail.com

unread,
Jan 4, 2015, 9:04:23 AM1/4/15
to pured...@googlegroups.com


01101001 00100000 01110111 01100001 01101110 01110100 00100000 01110100 01101111 00100000 01100011 01101111 01100100 01100101 00100000 01101001 01101110 00100000 01100010 01101001 01101110 01100001 01110010 01111001 00100000 01100010 01100101 01100011 01100001 01110101 01110011 01100101 00100000 01101101 01111001 00100000 01101011 01100101 01111001 01100010 01101111 01100001 01110010 01100100 00100000 01101111 01101110 01101100 01111001 00100000 01101000 01100001 01110011 00100000 01110100 01110111 01101111 00100000 01101011 01100101 01111001 01110011 00101100 00100000 00110001 00100000 01100001 01101110 01100100 00100000 00110000 

Daiyu Hurst

unread,
Jan 18, 2015, 9:53:22 AM1/18/15
to pured...@googlegroups.com, medi...@gmail.com
Obtain a new keyboard.

Ferdinand Klinzer

unread,
Jan 18, 2015, 9:57:00 AM1/18/15
to pured...@googlegroups.com
good point @Daiyu ;)

--
Reply all
Reply to author
Forward
0 new messages